Why Phone Calls Beat Emails for Critical Notifications
When a server goes down at 2am, an email sits unread. A phone call gets through. Here's how to build a guaranteed notification system using the Automated Calls API.
The problem with silent alerts
It’s 2:17am. Your payment processing service throws a critical exception. An email lands in your on-call engineer’s inbox — right next to 47 other alerts from the past week. The incident spreads. By morning, you’ve lost transactions and customer trust.
Email and push notifications fail at the worst moment: when the person responsible is asleep, away from their desk, or in a meeting with their phone silenced. A phone call cuts through everything else.
When you need guaranteed delivery
Some notifications simply cannot be missed:
- Production incidents — database down, payment gateway failures, security breaches
- Compliance deadlines — contract signing, regulatory filings due today
- Time-sensitive approvals — wire transfers, medical consent, access grants
- Escalations — when a ticket has been open for 4 hours with no response
For these scenarios, you need something with a 95%+ reach rate. Phone calls deliver that. Email does not.
Building a guaranteed call notification with the API
Here’s the minimal API call to wake up your on-call engineer:
POST /api/calls
{
"destination": "0501234567",
"when": "now",
"retries": 10,
"text": "Critical alert: payment service is down. Database connection refused. Immediate action required.",
"language": "en",
"webhook": "https://mysite.com/notifications/done?destination=0501234567"
}
Let’s break down each field.
destination — who to call
A single phone number in any standard format. You can also pass an array for escalation chains — call the primary contact first, then fall back to secondary if unreachable.
when — call immediately or schedule
"now" fires the call within seconds. You can also pass an ISO 8601 timestamp to schedule for later:
"when": "2026-03-15T08:00:00Z"
Scheduled calls work well for shift handoff notifications, morning briefings, or SLA reminders — delivered at the exact moment the recipient starts their day.
retries — the key to guaranteed delivery
This is what makes phone calls genuinely reliable. With "retries": 10, the system will:
- Attempt the call immediately
- If unanswered or busy — wait and retry
- Repeat up to 10 times across the configured interval
- Stop as soon as the call is picked up and the message plays to completion
Without retries, a single unanswered call is a missed notification. With 10 retries, you’re reaching someone even if they stepped away from their phone for a few minutes.
Retry behavior is configurable — you can set the interval between attempts (e.g., every 2 minutes) and stop retrying after the first successful delivery.
text and language — text-to-speech
You don’t need pre-recorded audio files. Pass a plain text string and a language code — the system converts it to natural-sounding speech before placing the call.
Supported languages include en, uk, es, and others. The text can be dynamic — inject variable data directly into the message:
"text": "Alert: order {{order_id}} has been flagged for review. Customer {{customer_name}} is waiting.",
"language": "en"
This means your notification system can include specific, actionable context — not just “something is wrong.”
webhook — know when delivery succeeds
The webhook URL receives a POST request the moment the call is processed:
{
"destination": "0501234567",
"status": "answered",
"duration_seconds": 18,
"attempts": 3,
"delivered_at": "2026-03-14T02:19:43Z"
}
Use this to:
- Mark the alert as acknowledged in your monitoring system
- Log delivery confirmation for compliance audits
- Trigger the next step in an escalation workflow (stop calling the primary, skip to the manager)
Pay only for processed calls
Unlike traditional telephony billing that charges per dial attempt, we charge only when a call is actually processed — meaning audio was played to the recipient.
What this means in practice:
- A busy signal on attempt 1, answered on attempt 3: you pay for one processed call
- All 10 retries go unanswered: you pay nothing
- Call answered, person hangs up after 2 seconds: you pay for one processed call
This model aligns costs with actual delivery. You’re not penalized for unreachable numbers or network issues.
A real escalation pattern
Here’s a practical on-call escalation using the API:
// Triggered by monitoring system
async function escalate(incident) {
const call = await automatedCalls.create({
destination: oncall.primary.phone,
when: 'now',
retries: 5,
text: `Production incident: ${incident.title}. Severity: ${incident.severity}. Check your dashboard immediately.`,
language: 'en',
webhook: `https://ops.mycompany.com/webhooks/call-delivered?incident=${incident.id}&tier=primary`
});
// Webhook handler escalates to secondary if primary doesn't acknowledge within 10 minutes
}
The webhook handler checks whether the primary contact acknowledged the incident in your incident management tool. If not — it fires a second call to the secondary contact, then the manager. The escalation chain runs automatically, with full delivery audit trail.
Text-to-speech vs. pre-recorded audio
| Text-to-speech | Pre-recorded audio | |
|---|---|---|
| Dynamic content | Yes — inject variables | No — fixed message |
| Setup time | Zero | Requires recording session |
| Languages | Switch per call | One language per file |
| Natural sound | Very good (neural TTS) | Depends on recording quality |
| Best for | Operational alerts, personalized messages | Brand campaigns, marketing |
For critical notifications, text-to-speech wins because the message needs to be specific and current. “Your server is down” is less useful than “Database replica lag exceeded 30 seconds on db-prod-02.”
Compliance considerations
Phone call notifications are subject to regulations in most countries. A few principles:
- Consent: Operational notifications to employees or contractors typically don’t require marketing-style opt-in consent
- Time restrictions: Many jurisdictions restrict automated calls to business hours — check local rules before scheduling non-urgent calls outside 8am–9pm
- Identity disclosure: In some regions, automated calls must identify themselves as automated at the start
For internal operational use (calling your own team), these restrictions rarely apply. For customer-facing notifications, consult applicable regulations.
Conclusion
When something breaks at 2am, you need the person responsible to know about it within minutes — not when they check email at 9am. Phone calls with retry logic are the only notification mechanism that delivers that guarantee.
The API is simple: a destination, a message, a retry count, and a webhook. You get text-to-speech included, pay only when the call is actually delivered, and get full delivery confirmation via webhook.
Get early access and place your first test call to your own number — no credit card required.