Choosing alert notification channels: push, SMS, voice, email and chat

Choose alert notification channels: push, SMS, voice, email and chat. Learn delivery, cost, and DND rules for on-call reliability.

Published 14 November 2026.

An alert only helps if the right person notices it in time. Each channel fails differently: a locked phone, Do Not Disturb, a carrier filter, or a muted Slack channel. After the channels comes a default mapping from severity to channels, labelled as a recommendation. The guide builds on escalation policy design and severity levels.

Four questions for every channel

Each channel below is judged on the same four questions.

  • Does it reach a locked phone, and does it get through Do Not Disturb or a Focus mode?
  • How fast does it arrive, and can you tell whether it did?
  • What does each message cost, and what drives that cost?
  • Can the person acknowledge from it, or do they have to open another tool?

Acknowledgement stops escalation. A channel without an acknowledge path forces the person to open the app or web UI before the next escalation step fires.

Push notifications

Your alert travels through Apple Push Notification service (APNs) on iOS. Apple treats APNs as best-effort. The service may reorder notifications. It can store a notification for up to 30 days if delivery fails immediately. You set this window with the apns-expiration header. APNs keeps only one notification per app (bundle ID), usually the latest (Apple: sending notification requests to APNs).

Android push routes through Firebase Cloud Messaging (FCM). FCM supports normal and high priority. Normal priority messages may be delayed while the device sleeps in Doze. High priority messages can wake the device. FCM can downgrade high-priority messages to normal if they do not produce a visible notification (FCM message priority).

The app assigns an interruption level to each notification (Apple: interruption levels):

  • active (default): displays immediately, lights the screen, and can play sound. Focus modes can block this.
  • timeSensitive: can break through Focus and Notification Summary. Users can disable this per app.
  • critical: plays sound even with the mute switch on and Do Not Disturb active. Requires the Critical Alerts entitlement, which Apple must approve, and user permission (Critical Alerts entitlement).

On Android 8.0 (API level 26) and later, every notification belongs to a channel. The app sets the channel importance at creation. After that, only the user can change it (Android: notification channels). "Urgent" (IMPORTANCE_HIGH) triggers sound and a heads-up display.

A channel can bypass Do Not Disturb priority mode via setBypassDnd. Only apps the user has granted Do Not Disturb access can set it, and only on channels the user has not modified (NotificationChannel reference).

Delivery at night depends on the app requesting permissions and the user granting them. Verify these settings during onboarding. Do not wait for the first incident.

Push notifications carry no carrier charge per message. Acknowledgement happens in the notification or the app, if the tool provides a mobile app.

SMS

Length and cost

A single SMS segment carries 160 GSM-7 characters. It carries only 70 characters if the message requires UCS-2 encoding. Adding one emoji or one non-GSM character forces the entire message into UCS-2. Multi-segment messages hold 153 GSM-7 or 67 UCS-2 characters per segment. Twilio bills per segment (Twilio: SMS character limit).

Some GSM-7 characters, such as { and ], count as two (Twilio: GSM-7). Cost is driven by message count times segments. Keep alert SMS short and plain. Drop emoji.

Delivery problems

Carriers apply their own spam and abuse filters. A message blocked by these filters appears in Twilio as error 30007, "Message filtered" (Twilio error 30007).

US carriers classify messages from providers like Twilio as application-to-person (A2P). Sending to US numbers from a 10-digit long code requires a registered Brand and Campaign (Twilio: A2P 10DLC). Twilio has blocked unregistered US-bound 10DLC traffic since September 1, 2023. Blocked messages return error 30034 and are still charged (Twilio changelog, error 30034). Toll-free numbers and short codes operate as separate sender types outside the 10DLC framework.

If you send alert SMS from your own Twilio account to US numbers, you must handle registration. If your on-call tool sends them, ask which sender type it uses.

Do Not Disturb

SMS follows the phone's standard message rules. The phone treats it as a text from a number and holds it like any other message unless the person allows that specific sender.

Use SMS as a second channel, not the only one.

Voice calls

A voice call is the hardest channel to sleep through. The tool rings for as long as it needs to, and it can call again if there is no answer.

Both iOS and Android let repeat calls through if the user enables this feature. On iPhone, the "allow repeated calls" setting lets through two or more calls from the same person within 3 minutes (Apple: Focus notifications). Android uses "Allow repeat callers" for the same person twice in 15 minutes (Google: Do Not Disturb). Both platforms also let you allow calls from chosen contacts.

Save the on-call tool's calling numbers as a contact, and allow that contact through Do Not Disturb. Ask the tool for its full number list. It may call from more than one number.

Providers such as Twilio charge per minute, and the rate depends on the country and number type (Twilio voice pricing). Keep calls for urgent alerts.

Check whether your tool lets you acknowledge during the call. If not, the person still has to open the app.

Email

Email works for records and low-urgency alerts. It does not wake people. Do Not Disturb holds mail like any other app. Spam filters and mail rules can hide messages. Shared mailboxes leave alerts unowned. Use email for daily digests, working-hours warnings, or copies of urgent alerts.

Chat (Slack, Microsoft Teams and others)

Chat tools show the team view. They track who is on it, what was tried, and link to the incident. They do not wake one person reliably. The alert reaches whoever looks at the channel.

Notifications follow each user's settings. In Slack, each person can set a notification schedule. Notifications pause outside that window (Slack: pause notifications).

A Slack message text over 4,000 characters may be split, and above 40,000 characters it is truncated. An app can generally post 1 message per second to one channel (Slack: chat.postMessage). A burst of alerts can hit this limit.

Keep one channel per service or team. Do not create a channel for every alert.

Channels compared

ChannelGets through Do Not DisturbCost driverBest for
PushOnly with Time Sensitive or Critical Alerts on iOS, or DND access on AndroidNo per-message carrier chargeFirst notification for every urgent alert
SMSOnly if the sender is allowedMessages times segments; registration in the USBackup for urgent alerts
VoiceWith repeat callers or an allowed contactPer minute, by countryEscalation when push is not acknowledged
EmailNoLowRecord, digests, working-hours warnings
ChatPer the user's chat settingsNo per-message carrier chargeTeam visibility, working-hours alerts

A default mapping from severity to channels

This is a recommendation, not a standard. Adjust waits to your service. Severity names follow severity levels.

SeverityFirst notificationIf not acknowledgedAlso
SEV1Push (Critical or Time Sensitive)Voice call after 5 minutes, then the next level of the escalation policyPost to the incident chat channel
SEV2Push (Time Sensitive)Voice call or SMS after 5 minutesPost to the team chat channel
SEV3Chat, working hours onlyNone at nightTicket
SEV4Ticket or email digestNoneNone

Use two channels for urgent alerts

Any single channel can fail on a given night. A phone may sit on silent without the right permission. An SMS message might get filtered. The app could be logged out. Mobile data may not reach one room.

For SEV1 and SEV2, the sensible default is push first. Then use voice or SMS if there is no acknowledgement within a few minutes. This uses two different paths: the app push and the phone network.

Ask each person to set at least two contact methods. Check them before their first shift. See on-call handover.

Test it: send a test alert to each new on-call person at night. Keep their phone locked and Do Not Disturb on. See testing escalation policies.

After a missed alert, read the tool's delivery log, if it keeps one, before changing anything.

Tools

See notification delivery and on-call and escalation.