Back to blog
Engineering · By Josh Crann · September 11, 2026 · 6 min read

Why Push, SMS, and Voice Calls Need to Work Together for Critical Alerts

Push notifications alone aren't enough for critical alerts because they fail in exactly the ways that matter most during an incident: a dead phone, Do Not Disturb, or an OS that killed the app in the background. The fix is escalating across channels — push, then SMS, then a voice call — since each one fails independently of the others.

How each channel actually fails

Push notifications depend on three things holding up at once: the app staying alive in the background, the phone having signal, and the notification not getting silently swallowed by Do Not Disturb or Focus mode — a standard push notification is exactly what Apple's own notification interruption levels are designed to suppress by default. All three of those failure modes are common, and none of them are rare edge cases. They're exactly what a phone looks like at 3am on a nightstand, or in a gym locker, or charging in another room with the ringer switched off from the day before.

SMS is more reliable in one specific way: it doesn't depend on an app staying alive. It usually bypasses app-level notification settings too, since it comes through the carrier rather than a background process. It can still be delayed by carrier routing, though. And this is the part people forget — a phone fully in silent mode will still silence an SMS just as quietly as a push notification, unless the contact is specifically starred or the phone has an SMS-specific override configured.

Voice calls are the most disruptive channel, and that's the point. On the overwhelming majority of phones, an incoming call rings through silent mode and Do Not Disturb by default. At minimum, it's far more likely to than a text or push alert. That's not a coincidence — Android's own guidance on time-sensitive notifications treats a phone call differently from a standard alert specifically because it's built to interrupt.

A voice call is the one channel actually designed, at the OS level, to interrupt whatever else is happening. It's also the most annoying channel to use for anything that isn't genuinely urgent. That's exactly why it should be reserved for the point in an escalation where something really does need a human, right now.

Should escalation move to the next person, or the next channel first?

The next channel, in most cases. Moving to a new person too early wastes something real. The first person might still be reachable, just not through whatever channel was tried first. Most escalation policies are designed around one dimension: if person A doesn't respond, page person B.

Escalating by person alone is necessary, but not sufficient on its own — it doesn't help if person A is reachable, just not through the channel that was tried. A more complete pattern escalates on two dimensions at once: the same person, but through a progressively harder-to-ignore channel, before moving to the next person in the rotation at all.

A concrete pattern that works

A sequence that holds up well in practice: push notification immediately, on the theory that most pages are caught the normal way. If it's not acknowledged within a short window, a minute or two, follow up with SMS as backup, since it doesn't share push's failure modes. If it's still unacknowledged after that, escalate to a voice call. A call is disruptive enough that it should reliably wake someone up if they're reachable at all. Only after all three channels have failed for the same person does it make sense to move to the next person in the rotation. At that point, the problem probably isn't the channel — it's that the first responder genuinely isn't available.

Not every alert needs the full three-channel sequence, though. A low-priority notification about a metric drifting slightly out of range doesn't need a voice call chasing it through the night. Push alone, with no channel escalation at all, is the right amount of urgency for that. Reserving the full push-SMS-voice sequence for alerts actually tagged critical keeps the escalation meaningful — if everything triggers a phone call, a phone call stops signaling anything.

Why this needs to be built in, not bolted on

Automatic, tool-enforced escalation is the only way this multi-channel pattern works in practice — repeating and channel-escalation have to be handled by the paging tool itself, not manually by whoever's coordinating the incident. A human trying to track "did SMS go out yet, has it been two minutes" by hand, in the middle of an actual incident, is exactly the kind of coordination overhead this is supposed to eliminate. PingParrot pages repeat on a configurable interval until acknowledged. Delivery uses iOS critical alerts and Android alarm-style notifications, both built specifically to bypass silent mode rather than a standard notification that respects it.

Escalation policies can combine channel and person — hit the same target across push, SMS, and voice before falling through to the next step in the chain. The goal isn't more notifications. It's making sure the one that actually needs a response can't get lost in a channel that happened to be the wrong one that night.

Diagram: a page escalates from the on-call engineer, to backup, to the team lead, with a wait timer between each step until someone acknowledges it Page sent to on-call engineer 5 min, no ack Escalates to backup responder 10 min, no ack Escalates to team lead, repeats until acknowledged
A three-step escalation policy: each step waits for acknowledgment before handing off to the next responder.

Related posts

Wire up your first alert in minutes

3 pagers free forever. No sales call, no contract.