Message routing
What is Message routing?
Message routing is the layer that decides which sender and which channel each message takes. It resolves a sender through the from → sender pool → messaging service chain, advances along the org capability chain when a channel cannot reach the recipient — falling back across RCS, SMS, or WhatsApp — and keeps two-way conversations attached to the sender the recipient already replies to, so reach-back stays point-to-point.
More detail
Sender resolution is a fixed precedence chain: a direct `from` on the send wins, a named `sender_pool_id` picks from the pool's members, and a `messaging_service_id` fills in only when neither was passed. Pool members rotate under per-sender throughput caps, so one degraded sender shifts traffic to the rest of the pool instead of stalling messages.
Channel routing is recipient reachability-driven: the org capability chain advances to the next channel when the current channel cannot reach the recipient at all — for example, a recipient who is not reachable on RCS — and the message-level cascade advances on a terminal delivery receipt when the channel could reach them but the handset turned the message down.
Every hop re-enters the canonical send pipeline, so tenant-owned gates — opt-outs, quiet hours, consent — re-apply per hop and each hop emits its own delivery receipt event; a notify waterfall call composes the whole chain per recipient and returns one composed receipt.
Frequently asked
- Which wins: from, sender_pool_id, or messaging_service_id?
- The chain checks from first, then sender_pool_id, then messaging_service_id — a direct sender named on the message wins, and a messaging service supplies a sender only when neither a direct sender nor a pool was passed.
- Does routing pick the channel once and stick with it?
- No. The org capability chain re-evaluates reachability per send — a recipient who moved from RCS to plain SMS gets routed over SMS — and the message-level cascade re-routes across channels whenever a terminal receipt says the previous hop failed.
- Why did my SMS hop get blocked when RCS was fine?
- Each hop re-enters the send pipeline, so per-channel recipient consent and your tenant-owned opt-out and quiet-hour controls are re-checked on every hop — an SMS opt-out blocks the SMS hop even if the recipient accepted the RCS primary.
See also
Build it on Orbit
Voice, messaging, email, video, and AI agents on one platform and one pay-as-you-go bill. Start free — no credit card required.