A sender's shape determines whether replies have an address. An eligible SMS number can receive a message; an alphanumeric name cannot.
The distinction sounds like a feature you switch on. It is closer to a physical property of what you sent from, with a per-country policy layered over it.
What makes a sender one-way?
Having no address behind it.
A reply is a message addressed to whoever sent the last one. Where the sender was a number, that address exists and a handset can use it. Where the sender was an alphanumeric sender ID, there is no number to address, and Bird's own model records that absence directly: such a sender's country code is null, described as "the country of the number this sender sends from", and it carries no number id because "an alphanumeric sender has no number behind it".
So the first cut is structural. Long codes, toll-free numbers and short codes can receive. An alphanumeric sender cannot, in any country, under any registration.
The second cut is per country. Each sender type a destination carries reports a direction of one_way or two_way, so a number type that takes replies in one destination may be send-only in another. The country's SMS policy also carries an is_two_way_supported flag of its own. Both are per-destination values that move, so they are published on SMS destinations rather than listed here; each destination page states whether two-way messaging is supported.
How does a reply reach my application?
As an event, pushed to you, with the message already stored.
When a subscriber texts one of your numbers, Bird stores the message alongside your sends and emits sms.received. The payload carries the body, the segment breakdown, both numbers, and the operator where the carrier reports one. There is nothing to poll.
One thing happens before that event reaches you, and it changes what you should do in the handler. Bird evaluates the reply against the keyword rules for that number first. A supported stop keyword records a sender-and-subscriber suppression and sends the opt-out confirmation, and it still emits sms.received. So an inbound message that was an opt-out arrives at your endpoint looking like any other inbound message, already acted on.
The consequence for your code: do not treat every sms.received as a conversational turn. Some of them are opt-outs Bird has already honoured, and re-sending anything in response to one is the mistake that pattern invites. What is a STOP keyword covers which keywords are recognised, where, and what happens in a country outside the catalog.
Which sender do I answer from?
Use the number the person contacted when it remains eligible, so the reply stays recognisable. Your application sends through the public SMS endpoint with the usual sender, destination and recipient checks.
Bird's built-in keyword acknowledgements have a separate internal reply context. That context is not a field your API request can claim. It does not allow a conversational response or a campaign to bypass registration, destination access or a person's opt-out.
Before replying, classify the incoming message. A STOP or help request should follow its applicable handling flow, rather than triggering an unrelated automated response. Sender requirements and keyword handling describe the relevant checks.
What does two-way cost me that one-way does not?
Four things, none of them optional once you accept replies.
- An endpoint that verifies and processes events reliably. Inbound is pushed; account for retries and duplicate deliveries. Webhook handling covers signatures, retries and replay. The event's identity is in the
webhook-idheader, outside the body. Use its value as your deduplication key. - A number in every destination that needs one. An alphanumeric sender cannot be part of a two-way programme, so a campaign that mixes them needs a plan for the destinations where only the name is available. Going one-way is not a way out of the obligation either: a regime that grants a right to opt out can require a one-way sender to disclose that replies do not work and to offer another route, which what is the TCPA sets out.
- Handling the messages you did not design for. People reply to notifications. Some of those replies are questions, some are opt-outs, and some are neither.
- Reading the inbound side of your own numbers. Bird reports inbound volume separately from outbound, so a two-way programme has a second set of numbers to watch.
If none of those apply, one-way is not a downgrade. It is the smaller commitment, and an alphanumeric sender buys you a recognisable name in the from field in the destinations that carry it. Which sender type should I use has the trade in full, and two-way SMS covers what Bird ships for the reply side.
In short
One-way is a property of the sender, not a setting.
A name has no address, so nothing can be sent back to it. A numeric sender still needs SMS capability and an inbound route; an alphanumeric sender cannot receive replies.
A destination can be one-way for a type it otherwise carries.
Each sender type a country carries reports its own direction, so the same number type can be two-way in one destination and one-way in another.
A reply arrives as an event, not as a poll.
Bird stores the inbound message and emits
sms.receivedwith the body, the segment breakdown, both numbers and the operator when the carrier reports one.Your API reply is a send with its own checks.
Use an eligible sender and honour the recipient’s request. Internal keyword acknowledgements do not grant your application a registration or suppression exemption.