BroadNet
The JournalEngineering
Engineering

Designing a multi-channel messaging failover strategy.

RCS, WhatsApp, SMS, and voice each fail in different ways. A practical architecture for orchestrating them so a message reaches the user regardless of which channel is down.

BroadNet Engineering
8 min read
Engineering · Issue 27
8 min read

ingle-channel messaging has a single point of failure. WhatsApp can have an outage, a user can be unreachable on RCS, an operator route can degrade, a template can be rejected mid-campaign. A multi-channel failover strategy treats 'deliver this message to this person' as the goal and the channel as an interchangeable means. Here is how to design one that actually holds up.

Define the channel ladder per message type

There is no universal ordering — the right ladder depends on the message. A few sensible defaults: for authentication, WhatsApp or RCS first (rich, branded, fast), then SMS, then voice OTP. For transactional notifications, RCS or WhatsApp first for the branded experience, SMS as the guaranteed fallback. For time-critical alerts, lead with SMS for sheer ubiquity and add voice as escalation. Decide the ladder deliberately, per message type, and write it down.

Failover must be conditional, not blind

  • Capability failure — the user is not reachable on the channel (no RCS provisioned, no WhatsApp account). Fall through immediately; do not wait.
  • Delivery failure — the channel accepted the message but the DLR shows undelivered. Fall through on the negative receipt.
  • Timeout failure — no positive delivery confirmation within a message-type-specific deadline (tight for OTP, looser for notifications). Fall through when the clock expires.
  • Provider failure — the channel itself is down. Detect via error-rate monitoring and fail the whole channel over for all traffic, not message by message.

Beware double-delivery

The subtle bug in every failover system is sending the message twice — once on the channel that was slow but not actually failed, and again on the fallback. For OTP this is especially damaging: the user receives two different codes and does not know which to use. The fix is a single source of truth for delivery state per message, a record of every send (keep the message ID the API returns and check its status before any resend) so a retry never creates a second send, and — for OTP — generating the code once and reusing it across every channel in the ladder so whichever message arrives carries a valid code.

Cost and experience both shift down the ladder

Each rung of the ladder has different economics and a different user experience. Failing over is not free — it can mean a less branded message or a higher unit cost. That is fine and correct: a slightly more expensive SMS that arrives beats a free WhatsApp message that does not. But it means you should monitor your failover rate. If 40% of traffic is falling through to the last rung, the problem is upstream — bad capability data, a misconfigured primary channel — and you should fix the cause rather than pay for the symptom.

BroadNet's omnichannel API implements the full ladder — capability check, conditional failover, shared OTP code, and per-channel analytics — behind a single API call, and returns a message ID for every send so your retries can check status instead of sending twice (see idempotency & safe retries). You describe the message and the priority; the platform handles the orchestration.

Test the failure paths

The most common reason a failover strategy does not work in production is that the failover path was never exercised — it was written, deployed, and never triggered until a real outage. Build synthetic tests that force each failure mode (disable the primary channel, simulate a timeout, inject a negative DLR) and assert the message still lands. A failover path you have not tested is a failover path you do not have.

Was this useful?

How we write and review content

Written by

BroadNet Engineering

Engineering operates the wire: SMPP binds, SS7 stacks, routing engines, the boring infrastructure that makes one-billion-message months possible. They write here when something is worth writing down.

The Journal, by email

One essay a month. Nothing else.

Subscribe and we'll send the next piece — engineering, regulation, or industry — the day it ships. No drip campaigns, no product pitches, no third-party sharing. Unsubscribe in one click.

We send one email a month. Unsubscribe anytime. See our privacy policy.

What you'll get
  • Long-form, not link bait
    Six to eleven minutes of focused writing on a single topic.
  • Written by operators
    Engineers, regulatory leads, and product writing in-house.
  • Region-aware
    MENA-grounded view on regulators, operators, and channel mix.
  • Once a month
    No drip campaign. One essay when there is one to share.
Stop reading. Start shipping.

Most of what we write we learned in production.

If this piece made you nod, we should probably talk. Bring the use case, the volumes, the markets — we'll come back with routing, pricing, and a reference customer you can call.

$ curl -X POST https://api.broadnet.me/sms/sendSms