Missed-call text-back / Proof build
Proof build: missed-call text-back
A working reference build, not a pitch. When nobody answers, the caller gets a text ("Sorry we missed your call. What do you need help with?") and their reply is forwarded to the owner's cell. It uses Twilio and three small Vercel functions, with no dependencies.
Status
Unit-tested and simulated locally (23 passing tests). Not yet run against a live Twilio account. The tests run the real handlers with requests signed the way Twilio signs them, and the signature check matches Twilio's documented example. Live calls, carrier delivery, and 10DLC approval are untested.
How it works
- A call comes in on the Twilio number, which rings the owner's cell for 20 seconds.
- If no one answers (or the line is busy or the call fails), the caller hears "we'll text you" and gets the text-back. Anonymous and non-US callers are skipped.
- The customer replies, and the reply is forwarded to the owner: "Acme Plumbing lead from +1303…: water heater leaking."
- STOP, HELP, and START are left to Twilio's built-in opt-out handling, so we never double-reply.
Alternative: keep the owner's existing number and set carrier conditional forwarding on no-answer to the Twilio number. With MODE=forwarded, it texts right away.
Real costs (Twilio list prices, checked 2026-10-14)
| Item | Price |
|---|---|
| Local number | $1.15/mo |
| SMS, either direction | $0.0083/segment + carrier fees (not verified) |
| Inbound call / outbound leg to owner | $0.0085/min, $0.0140/min |
| 10DLC brand (Low-Volume Standard) | $4.50 one-time (Twilio's marketing page says $4) |
| 10DLC campaign vetting | $15 one-time |
| 10DLC campaign (Low-Volume Mixed) | $1.50/mo |
Example with 300 calls a month, 40 missed, and 25 replies: about $20/mo if every call routes through Twilio (voice is most of the cost), or about $5/mo with conditional forwarding, plus about $20 one-time for 10DLC. These are estimates from list prices, not an invoice. Telnyx (from $1/number, $0.004/SMS part) and SignalWire ($0.50/number) are cheaper, but 10DLC still applies.
Sources: Twilio SMS pricing, Twilio voice pricing, 10DLC brand fees, 10DLC overview, Telnyx, SignalWire.
The gotchas that actually bite
- 10DLC is the real gate. Approval takes days to several weeks. You need a public privacy policy and terms page covering SMS, or the campaign is rejected. Resubmit a rejected campaign instead of creating a new one (that's a second vetting fee).
- Carrier filtering: no links, shorteners, or hype. Error 30007 means the message was filtered, and 30034 means the number isn't registered.
- Cell voicemail can answer first. If voicemail picks up before 20 seconds, Twilio counts the call as answered and no text goes out.
- Repeat callers get repeat texts. There's no memory and no 24-hour cooldown built in.
- TCPA: one reply to a call they just made is informational. Reusing those numbers for marketing needs written consent. This is not legal advice.
What it can't do
It doesn't hold a conversation, qualify leads, book jobs, take voicemail, write to an FSM, or show a dashboard. It's the smallest thing that captures the lead, and the LLM qualifying layer goes on top of it.
Get the code
- README: setup steps, full cost table, gotchas, test matrix
- lib.js: all the logic (signature check, missed-call detection, STOP handling)
- api/voice.js · api/dial-status.js · api/sms.js · api/_http.js
- Unit tests · Flow simulation · .env.example
Check first whether the owner's phone app or FSM already offers missed-call text-back (not verified). If they're already paying for it, turning it on is cheaper than building.