SMS Escalation Built-In: CallSphere Twilio Stack vs Vapi
CallSphere fires Twilio SMS in parallel with calls during after-hours escalations. Vapi has no SMS primitive. See the parallel notification flow and code paths.
TL;DR
CallSphere's After-Hours Escalation product ships with a dedicated SmsAgent that sends Twilio SMS messages in parallel with phone-call attempts to on-call staff. When a 2 AM emergency call comes in, the system rings the on-call clinician and texts them simultaneously, then escalates to backup if neither answers. Vapi is a voice-only platform with no SMS primitive — customers either build this orchestration themselves or accept that critical alerts may go unanswered.
Why Parallel SMS Matters in After-Hours Operations
Healthcare, property management, IT MSPs, and security operations all share a hard constraint: after-hours alerts must reach a human within minutes, and ringing one phone is not enough.
Phones go to voicemail. People silence them at night. A single voice call has no read receipt — you don't know if the on-call engineer saw it until they call back, by which point the SLA may already be breached.
The textbook escalation pattern is:
- Call the primary on-call number.
- At the same time, send an SMS to the same person.
- If neither is acknowledged within N seconds, repeat for backup.
- Log every attempt with timestamps for SLA reporting.
CallSphere ships this as a default behavior. Vapi does not.
Vapi's SMS Gap
Vapi exposes voice calls as its primary primitive. Function calling can hit external APIs mid-call, which means a Vapi customer could technically trigger a Twilio SMS from inside a function. But the orchestration — parallel dispatch, acknowledgment tracking, retry ladders, idempotency — is left entirely to the customer.
Production teams that try to bolt SMS onto Vapi typically end up with:
- A separate Node or Python service that listens for Vapi webhooks
- Direct Twilio SDK integration in that service
- Custom acknowledgment endpoints (a webhook that sets "acknowledged = true")
- A retry scheduler (BullMQ, Cloud Tasks, cron)
- Their own audit log table
That is roughly two engineering weeks for a robust implementation, plus ongoing maintenance.
CallSphere's SmsAgent and the After-Hours Stack
CallSphere's After-Hours Escalation product (escalation.callsphere.tech) ships four cooperating agents:
| Agent | Channel | Job |
|---|---|---|
VoiceAgent |
Inbound voice (caller) | Greet, classify urgency, gather details |
SmsAgent |
Outbound SMS | Notify on-call staff via Twilio |
EmailTriageAgent |
Inbound email (IMAP) | Detect emergency keywords in email |
VoicemailAnalyzerAgent |
Voicemail audio | Transcribe + classify missed calls |
SmsAgent is invoked by the orchestrator the moment VoiceAgent confirms an emergency. It pulls the on-call schedule from Postgres, formats the alert, fires Twilio SMS via the included Twilio integration, and records the message SID and status to the unified log table.
See AI Voice Agents Handle Real Calls
Book a free demo or calculate how much you can save with AI voice automation.
Comparison Table
| Capability | Vapi | CallSphere |
|---|---|---|
| Native SMS primitive | No | Yes (SmsAgent) |
| Twilio integration included | No (BYO) | Yes |
| Parallel call + SMS dispatch | Build yourself | Built-in |
| SMS acknowledgment tracking | Build yourself | Built-in |
| Escalation ladder (primary, backup) | Build yourself | Config-driven |
| Unified log of voice + SMS attempts | No | Yes |
| Engineering effort to deploy after-hours flow | 60-120 hrs | 0-4 hrs |
| Cost of message audit trail | Custom DB | Included |
Mermaid: Parallel Notification Flow
sequenceDiagram
participant C as Caller
participant V as VoiceAgent
participant O as Orchestrator
participant S as SmsAgent
participant T as Twilio Voice
participant M as Twilio SMS
participant DB as call_logs
C->>V: 2 AM emergency call
V->>V: Classify urgency (LLM)
V->>O: emergency=true, on_call=primary
par Parallel dispatch
O->>T: Call primary on-call (voice)
O->>S: Trigger SMS
S->>M: Send SMS to primary
end
M-->>S: msg_sid + status=sent
T-->>O: voice_status=ringing
S->>DB: Log SMS attempt
O->>DB: Log voice attempt
Note over O: Wait 60s for ack
O->>O: No ack — escalate
par Escalate to backup
O->>T: Call backup on-call
O->>S: SMS backup
end
The diagram shows two key properties: parallelism (call + SMS go out together, not sequentially) and ladder escalation (primary fails, backup activates with the same parallel pattern).
Real Example: A Behavioral Health Practice After 10 PM
A behavioral health practice on CallSphere After-Hours sees a call at 11:47 PM from a patient saying "I'm having a panic attack, my chest hurts."
- 11:47:03 — VoiceAgent classifies "physical symptoms + acute distress" as urgency level 4.
- 11:47:05 — Orchestrator pulls on-call schedule: Dr. Patel (primary), Dr. Kim (backup).
- 11:47:06 — In parallel: Twilio voice call to Dr. Patel's cell, SMS to Dr. Patel's same number with "URGENT: Patient with chest pain + panic, callback # 555-0144."
- 11:47:14 — Dr. Patel receives SMS, taps callback link.
- 11:47:42 — Dr. Patel calls patient back. Average response time on this practice is 38 seconds, well inside the 5-minute SLA.
Without parallel SMS, the same call would have rung Dr. Patel's phone, gone to voicemail (because it was on silent), and the patient might have waited 8-12 minutes for a callback — far outside acceptable response for an acute symptom.
Why "Just Use Twilio Yourself" Misses the Point
Engineers correctly observe that Twilio's SMS API is trivially easy. The Twilio call is two lines of code. The hard part is everything around it:
- Idempotency — what happens when the orchestrator restarts mid-dispatch? Do you double-text?
- Acknowledgment — how does the on-call clinician say "got it" and stop the escalation ladder?
- Quiet hours and DND — do you respect the on-call schedule's "do not disturb" windows for non-urgent items?
- Audit and SLA reporting — can you produce a CSV of "SMS attempt timestamps + ack times" for the last 90 days for a SOC 2 audit?
- Retry semantics — do you retry on Twilio 5xx, or treat it as a hard fail?
Each of those is a small decision that multiplies into a custom system. CallSphere has made all of them already and exposes them as configuration.
When Vapi Alone Is Enough
If your use case is purely conversational voice — a sales SDR dialing prospects, a survey caller, a virtual receptionist that just routes calls — Vapi is fine. The moment your use case involves notifying humans about events (after-hours, escalations, two-factor codes, appointment reminders), CallSphere's built-in SMS pays for itself in week one.
See the After-Hours Escalation product and book a demo.
FAQ
Does CallSphere include Twilio costs in the platform fee?
The Twilio integration is included; SMS message costs are pass-through at Twilio rates (typically $0.0079 per US SMS).
Can I use a non-Twilio SMS provider?
The default is Twilio. Custom enterprise plans can swap in Bandwidth, Plivo, or AWS SNS for SMS.
How is acknowledgment captured?
The SMS includes a short URL. When the on-call clinician taps it, the acknowledgment endpoint stops the escalation ladder and records the ack timestamp.
What's the SLA for SMS dispatch?
Median dispatch latency from "emergency classified" to "SMS sent" is under 800 ms in production deployments.
Can the SMS contain HIPAA-sensitive details?
By default no — the SMS contains a callback number and minimal context ("urgent caller, callback line X"). Full PHI lives behind authenticated portal links.
Does Vapi roadmap include SMS?
As of this writing, Vapi has not announced a native SMS primitive. Function calling remains the only path to outbound SMS, with all orchestration on the customer.
Try CallSphere AI Voice Agents
See how AI voice agents work for your industry. Live demo available -- no signup required.