Skip to main content
← Back to glossary
Messaging delivery

Message cascade

Qué es Message cascade?

Esta entrada está disponible actualmente solo en inglés.

A message cascade is the ordered channel chain an outbound message escalates through when the current hop cannot deliver — RCS first, then SMS, then WhatsApp, for example. The chain resolves from up to three sources in a fixed precedence: a per-send fallback channel list, then the typed cascade field on the send body, then the org-level default cascade policy. Every hop of one cascade carries the same message_group_id, so the whole run reads back as one logical message.

More detail

A hop escalates only on a terminal delivery receipt — a failed, undelivered, or rejected status landing inside the fallback window — and each hop dispatches as a brand-new send that re-enters the canonical send pipeline, so sender resolution, opt-out checks, and quiet-hours consent gates re-apply per hop instead of being copied from the original send.

A cascaded send stamps one message_group_id on the primary and carries it onto every hop, so the cascade groups endpoint returns the whole run oldest-first with fallback_of and fallback_reason on each leg. Each hop is a first-class message on its own channel with its own receipt and billing line; there is no separate cascade fee class.

The eligible channel set is closed — SMS, WhatsApp, RCS, Viber, Telegram, Messenger, Instagram, LINE, and Apple Messages. Voice, email, fax, and push are never cascade hops, because an automatic hop into an opt-in channel (an undelivered email turning into an SMS, for example) is a compliance surface rather than a convenience. Notify composes the same chain per recipient in a single waterfall call when you want one request instead of per-send fields.

Preguntas frecuentes

What happens when my message fails to deliver?
When a terminal failed, undelivered, or rejected receipt lands inside the fallback window, the cascade advances to the next channel in the chain — the message re-sends as a fresh hop under the same message_group_id instead of ending the run. An undeliverable RCS send continues over SMS, so the recipient still gets the message on a channel that can reach them.
How is a message cascade different from a fallback channel?
A fallback channel is the per-channel retry concept — naming one alternative channel on a single send. A message cascade is the generalized mechanism: an ordered chain of up to eight channels, resolved from a per-send field or an org default policy, with every hop grouped under one logical message id.
Can I cascade across voice or email?
No. The cascade channel set is closed to the rich messaging channels — SMS, WhatsApp, RCS, Viber, Telegram, Messenger, Instagram, LINE, and Apple Messages — because cross-domain hops (an undelivered email becoming an SMS) have different consent semantics. Multi-domain escalation runs through the notify waterfall composer, which composes per-recipient chains you declare explicitly.

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.