All articles
Tutorial 6 min read

How to Set Up Incident Notifications With Twilio SMS and Voice Calls in 2026

A step-by-step guide to configuring Twilio SMS and voice call alerts for incident response, so critical outages never get missed in a crowded inbox.

L
Livstat Team
·
How to Set Up Incident Notifications With Twilio SMS and Voice Calls in 2026

TL;DR: Slack and email are great until the system that sends them is the one that's down. This guide walks through configuring Twilio SMS and voice calls for incident alerts — from account setup to escalation logic — so on-call engineers get notified even when every other channel fails.

Why Phone-Based Alerts Still Matter in 2026

Email gets ignored. Slack notifications get muted during off-hours. Push notifications get buried under a pile of app updates. When your primary monitoring system or email provider itself goes down, every notification channel that depends on the internet stack you're troubleshooting becomes unreliable.

SMS and voice calls route through the telephone network, not your application stack. That independence is exactly why they're still the gold standard for critical, wake-someone-up-at-3am alerts. Studies on SMS engagement consistently show open rates above 90%, compared to roughly 20-30% for email — and a ringing phone is nearly impossible to ignore.

Twilio remains the dominant programmable communications platform for this exact use case, and in 2026 its API is more developer-friendly than ever, with better rate limiting, verified sender IDs, and improved voice synthesis for alert messages.

What You'll Need Before You Start

  • A Twilio account (free trial works for testing, paid account for production)
  • A verified Twilio phone number with SMS and voice capabilities
  • A monitoring or incident management tool that can trigger webhooks (Livstat, your custom monitor, or an internal alerting script)
  • Basic familiarity with REST APIs or a serverless function (AWS Lambda, Vercel Edge Function, or similar)

If you're not running custom infrastructure, many status page and monitoring platforms — including Livstat — support Twilio as a notification channel out of the box, which skips most of the manual setup below.

Step 1: Create and Configure Your Twilio Account

  1. Sign up at twilio.com and verify your email and phone number.
  2. Navigate to the Console and buy a phone number with both SMS and Voice capabilities enabled. US and Canada numbers cost around $1.15/month; international numbers vary by country.
  3. Locate your Account SID and Auth Token in the Console dashboard — you'll need these to authenticate API requests.
  4. If you're sending to international numbers, enable the relevant geographic permissions under Messaging > Settings > Geo Permissions.

Keep your Auth Token out of source control. Store it in environment variables or a secrets manager, not hardcoded in scripts.

Step 2: Set Up SMS Alerts

Twilio's Messaging API is a single POST request. Here's a minimal example using Node.js:

const twilio = require('twilio');
const client = twilio(accountSid, authToken);

client.messages.create({
  body: 'ALERT: API Gateway is DOWN. Response time: timeout. Started 2 min ago.',
  from: '+15551234567',
  to: '+15559876543'
});

Best practices for incident SMS content:

  • Lead with severity (CRITICAL, WARNING, RESOLVED) in the first few words
  • Include the affected service name and a timestamp
  • Keep it under 160 characters to avoid message splitting
  • Add a short link to the incident details if your tool supports it

Step 3: Set Up Voice Call Alerts

Voice calls are reserved for your highest-severity incidents — don't call someone for a degraded-performance warning. Twilio's Voice API uses TwiML (Twilio Markup Language) to control what the call says.

client.calls.create({
  twiml: '<Response><Say voice="Polly.Matthew">Critical alert. Database cluster is unreachable. Press 1 to acknowledge.</Say><Gather numDigits="1" action="/acknowledge"/></Response>',
  from: '+15551234567',
  to: '+15559876543'
});

The <Gather> verb lets the recipient press a key to acknowledge the incident, which you can capture via a webhook to stop further escalation calls. This acknowledgment loop is what separates a basic alert system from a real on-call workflow.

Step 4: Build an Escalation Policy

A single SMS or call isn't enough if your on-call engineer is asleep or has their phone on silent. A proper escalation policy looks like this:

  1. 0 minutes: Send SMS to primary on-call engineer
  2. 3 minutes (no ack): Call primary on-call engineer
  3. 6 minutes (no ack): SMS + call secondary on-call engineer
  4. 10 minutes (no ack): Call engineering manager

You can build this with a scheduled function (cron job every minute checking acknowledgment status) or a workflow engine like Twilio Studio, which provides a visual drag-and-drop builder for exactly this kind of branching logic without writing custom code.

If you're using Livstat for monitoring, incidents can trigger a webhook the moment a check fails, which you can wire directly into your Twilio escalation function — no polling required, and the notification fires within seconds of detection.

Step 5: Test Before You Need It

Never trust an alerting pipeline you haven't tested under realistic conditions.

  • Trigger a test incident during business hours and confirm SMS delivery time (should be under 10 seconds)
  • Place a test call and confirm the acknowledgment flow actually stops the escalation chain
  • Test with phones on Do Not Disturb mode — some carriers deprioritize SMS from unfamiliar short codes
  • Rotate testing across all on-call team members, not just the person who built the integration

Run this test monthly, not just once at launch. Phone numbers change, carriers update spam filters, and team rosters rotate — a notification system that worked in January can silently fail by Q3.

Managing Costs

Twilio pricing is usage-based, which makes it cheap for low alert volume but worth monitoring at scale:

  • SMS: roughly $0.0079 per message in the US
  • Voice calls: roughly $0.013 per minute in the US
  • International rates vary significantly — budget extra for teams with distributed on-call rotations

For most startups, a reasonable incident volume (10-30 alerts/month) costs under $5/month. The math changes fast if you're sending redundant alerts across five channels for every minor blip — which is exactly why severity-based routing matters.

Common Pitfalls to Avoid

  • Alerting on every check failure: A single failed health check isn't an incident. Require 2-3 consecutive failures before triggering a call to avoid false-positive fatigue.
  • No acknowledgment mechanism: Without a way to stop escalation, you'll either over-call people or build a system nobody trusts.
  • Hardcoded phone numbers: Store on-call rosters in a database or config file you can update without redeploying code.
  • Ignoring time zones: A 2am call for someone in a different time zone than your primary office is a fast way to burn out your team.
  • Not testing voicemail fallback: If a call goes to voicemail, configure Twilio to automatically retry or fall back to SMS.

Key Takeaway

SMS and voice calls remain the most reliable last line of defense for incident alerting because they don't depend on the same infrastructure that's failing. Setting them up with Twilio takes an afternoon, but the escalation logic, acknowledgment flow, and monthly testing routine are what actually make the system dependable when it counts. If you're already running monitoring through a platform like Livstat, pairing it with Twilio-based escalation closes the gap between detection and response — turning a silent outage into a five-minute fix instead of a five-hour one.

Twilioincident notificationsSMS alertsvoice callson-call management

Need a status page?

Set up monitoring and a public status page in 2 minutes. Free forever.

Get Started Free

More articles