Home / Insurance Agents / Missed-call text-back
Missed call while you're with a client: text back
You're on the phone with a carrier or walking a client through a renewal when a new prospect calls. They don't leave a voicemail; they call the next agency.
How it works
- Get a Twilio number that forwards to your office line or cell.
- If nobody picks up, the caller gets a text asking for their name, the type of coverage and a good time to call, with your booking link. It asks them not to text Social Security, license or policy numbers.
- Need an agent today? They reply URGENT and your cell gets a text right away. They get a short acknowledgement (coverage can't be started or changed by text) and the normal reply is skipped.
- Other replies get a short AI answer that never quotes a price or gives coverage advice, and you get an email.
- Before anything else, it checks the request really came from Twilio (signed with your auth token). Anything else gets a 403 and stops.
Tools used
How we got this number
- Twilio local number (skip if you already have one for another recipe)$1.15
- Texting registration (A2P 10DLC) monthly fee$2
- ~160 text segments sent + received$1.33
- carrier fees on ~80 outbound texts$0.40
- ~200 inbound call minutes$1.70
- ~200 minutes forwarded to your office or cell$2.80
- ~80 AI-written replies$0.04
- Automation platform (or self-host n8n free)β¬20
Assumes ~80 missed calls a month. n8n Cloud Starter is billed in euros; self-hosting n8n removes that line. Prices are list prices checked 2026-10-26; see every source.
Plus one-time texting registration (A2P 10DLC): about $19.50 (low-volume brand + campaign vetting). Source
The full setup, step by step
19 steps in one n8n workflow. Everything below is generated from the template itself, so it always matches.
Before you start
You need an n8n account (n8n, or self-host it free) plus your own logins for: Twilio Gmail / Google Workspace OpenAI API.
How the automation flows
When a call ends
When someone texts you
Tap a step to jump to its details.
Each step and what it does
- 1Trigger
Call ended (from Twilio)
Twilio calls this webhook the moment a call to your business number ends, rings out or goes to voicemail. It passes along the caller's number and the call status.
Webhook path
YOUR_N8N_URL/webhook/missed-callThen β 3. Config (edit me)
- 2Trigger
Incoming text
Twilio calls this webhook every time someone texts your business number.
Webhook path
YOUR_N8N_URL/webhook/missed-call-smsThen β 3. Config (edit me)
- 3Settings
Config (edit me)
One place for everything specific to your business. Every later step reads from here, so this is the only node you have to edit.
Then β 4. Check Twilio signature
- 4Code (security check)
Check Twilio signature
Proves the request really came from Twilio. It rebuilds Twilio's signature (HMAC-SHA1 of your webhook URL plus every field Twilio sent, keyed with your auth token) and compares it to the X-Twilio-Signature header. Uses Node's built-in crypto module: fine on n8n Cloud; self-hosted n8n needs NODE_FUNCTION_ALLOW_BUILTIN=crypto.
DetailsHow the Twilio security check works
Then β 5. Signature valid?
- 5Decision
Signature valid?
Only real Twilio requests continue. Anything else (a bot, a fake request, a wrong URL in Config) goes to the 403 step.
Rulethe signature Twilio sent matches the one rebuilt from your auth token
If yes β 6. Call or text? Β· If no β 19. Reject: not from Twilio (403)
- 6Decision
Call or text?
Both triggers share the same Config, so this splits them: calls go one way, texts the other.
Rulethe call status is filled in
Calls β 7. Tell Twilio what to say Β· Texts β 11. Acknowledge Twilio (text)
- 7Reply to request
Tell Twilio what to say
Answers Twilio right away. If the call was answered it just hangs up; if it was missed the caller hears a short message saying a text is on its way.
Sendsthe message shown under Message copy
Then β 8. Was the call missed?
- 8Decision
Was the call missed?
Only keeps going when nobody picked up. Answered calls stop here, so nobody gets a pointless text.
Rulethe call status is not βcompletedβ
If yes β 9. Text the caller Β· If no β stops here
- 9Send SMS (Twilio)
Text the caller
Sends the missed caller a text within seconds.
Sendsthe message shown under Message copy
π Connect your Twilio login on this node
Then β 10. Email the owner
- 10Send email (Gmail)
Email the owner
Emails you so you know who to call back (and what they were told).
Sendsthe message shown under Message copy
π Connect your Gmail login on this node
End of this path.
- 11Reply to request
Acknowledge Twilio (text)
Tells Twilio the text was received. The reply goes out separately, so this one sends nothing to the customer.
Then β 12. Says URGENT?
- 12Decision
Says URGENT?
If the customer's text contains the word URGENT (any capitalization), the urgent path runs instead of the normal reply.
Ruletheir text contains βurgentβ
If yes β 13. Text the owner (URGENT) Β· If no β 16. AI writes reply
- 13Send SMS (Twilio)
Text the owner (URGENT)
Texts your cell right away with their number and exactly what they wrote.
Sendsthe message shown under Message copy
π Connect your Twilio login on this node
Then β 14. Text the customer (URGENT ack)
- 14Send SMS (Twilio)
Text the customer (URGENT ack)
Lets the customer know their message reached you.
Sendsthe message shown under Message copy
π Connect your Twilio login on this node
- 15Send email (Gmail)
Email the owner (URGENT, optional)
A copy by email. If Gmail isn't connected or fails, the workflow still finishes (the text already went out).
Sendsthe message shown under Message copy
π Connect your Gmail login on this node
End of this path.
- 16AI (OpenAI)
AI writes reply
OpenAI drafts a short, on-brand reply using your business info and the customer's message. The instructions (prompt) keep it short and stop it from inventing prices.
Model
gpt-5-miniAI instructions (prompt)
You are the friendly front-desk assistant at a small independent insurance agency. You are not a licensed agent. Write one short, warm SMS reply (under 300 characters) to a person asking about insurance. Thank them, say a licensed agent will call them back, and offer the booking link. You may ask what type of coverage they'd like a quote on and a good time to call. Never quote, estimate or compare premiums or rates. Never explain, interpret, compare or recommend coverage, policies or carriers. Never say coverage is bound, active, changed or cancelled, and never promise a price or savings. Ask them not to text Social Security, driver's license, policy or bank numbers. If they mention an accident, injury, fire or other emergency, tell them to call 911 if anyone is hurt or in danger and to call the office. Sign off with the agency name.
π Connect your OpenAI login on this node
Then β 17. Text the AI reply
- 17Send SMS (Twilio)
Text the AI reply
Texts the AI's reply back to the customer.
Sendsthe message shown under Message copy
π Connect your Twilio login on this node
Then β 18. Email owner about the text
- 18Send email (Gmail)
Email owner about the text
Emails you what the customer wrote and what was sent back.
Sendsthe message shown under Message copy
π Connect your Gmail login on this node
End of this path.
- 19Reply to request
Reject: not from Twilio (403)
Answers 403 Forbidden and stops. Nothing is texted, emailed or saved.
Responds
403 ForbiddenEnd of this path.
Key settings to change
All of these live in the Config (edit me) node. Change them once and every text and email updates.
| Setting | Placeholder in the template | Change it to |
|---|---|---|
Business namebusiness_name | YOUR BUSINESS NAME | Exactly how customers know you. It appears in every text. |
Booking / calendar linkbooking_link | https://YOUR-BOOKING-LINK | Your online booking page (Calendly, your CRM's scheduler, or your contact page). Use the short public link. |
Hourshours | Mon-Fri 8am-6pm | Short and text-friendly, e.g. Mon-Fri 8am-6pm. |
Your emailowner_email | you@example.com | Where the 'new lead' and 'missed call' alerts go. |
Your cellowner_cell | +15555550100 | In +1 format (+15551234567). |
Twilio numbertwilio_number | +15555550199 | The number you bought in Twilio, in +1 format. Texts are sent from it. |
Twilio auth tokentwilio_auth_token | PASTE_YOUR_TWILIO_AUTH_TOKEN | Twilio Console > Account info > Auth Token. Used only to check that requests really came from Twilio. Treat it like a password: don't share the workflow once it's filled in. |
Incoming-text webhook URLtwilio_sms_webhook_url | https://YOUR-N8N-URL/webhook/missed-call-sms | The exact Production URL of the Incoming text node, the same one you paste into Twilio (Messaging > A message comes in). One character off and every text gets a 403. |
Call webhook URLtwilio_voice_webhook_url | https://YOUR-N8N-URL/webhook/missed-call | The exact action URL in your TwiML Bin (the Production URL of the Call ended node). |
Message copy: exactly what it sends
Highlighted parts are filled in automatically. Edit the wording right in the node.
Subject Missed call from their phone number
Subject URGENT: text from their phone number
Your cell was texted and they were told you'll get back to them right away.
Subject New text from their phone number
We auto-replied: AI-written reply
How the Twilio security check works
Your webhook URL is public, so anyone who finds it could send fake "texts" and make the workflow text people on your dime. Every request Twilio sends is signed, so the first thing this workflow does is check that signature:
- Take the exact webhook URL from Config (
twilio_sms_webhook_url, ortwilio_voice_webhook_urlfor call events). - Sort every field Twilio posted by name and glue each name and value onto the end of the URL (
β¦BodyhiFrom+1555β¦). - HMAC-SHA1 that string with your Twilio auth token, base64-encode it, and compare it to the
X-Twilio-Signatureheader (a constant-time compare). - Match: continue. No match, no header, or no URL/token in Config: answer
403 Forbiddenand stop.
It's a Code node because n8n's Crypto node can't do HMAC-SHA1. It uses Node's built-in crypto module: allowed on n8n Cloud. Self-hosted n8n: set the environment variable NODE_FUNCTION_ALLOW_BUILTIN=crypto (on your task runners too, if you use them), or the node errors.
The auth token lives only in Config. Never paste it into the code, and don't share your workflow export once it's filled in.
Hook it up
- Open Config (edit me) and fill in your business info, Twilio number, Twilio auth token (Twilio Console > Account info) and both webhook URLs.
- Click each node with a red warning and connect your own Twilio, OpenAI, Gmail credentials.
- In Twilio, on your number: Voice > 'A call comes in' > TwiML Bin with:
<Response><Dial timeout="20" action="https://YOUR-N8N-URL/webhook/missed-call">+1YOURCELL</Dial></Response>
Paste that exact action URL into twilio_voice_webhook_url. - In Twilio > Phone Numbers > your number > Messaging: 'A message comes in' > Webhook, HTTP POST,
https://YOUR-N8N-URL/webhook/missed-call-sms. Paste the exact same URL into twilio_sms_webhook_url in Config. A number has one 'message comes in' webhook, so if you run several of these workflows on one number, point it at only one of them. - Register your number for A2P 10DLC in Twilio before texting customers.
- Activate the workflow and run the tests on the setup page.
Security: the Check Twilio signature node rejects (403) anything not signed with your Twilio auth token. Self-hosted n8n: set NODE_FUNCTION_ALLOW_BUILTIN=crypto. Don't share this workflow once your token is in it.
Test it before you trust it
Skip the clicking
Get the ready-to-import n8n template
Every step above, already wired up. Paste it into n8n, add your logins, fill in your business info and you're live.
β Unlocked. Here's your template.
- In n8n: click New workflow.
- Paste onto the empty canvas (Ctrl/Cmd+V).
- Set your credentials on the red nodes, then fill in Config (edit me).
Download .json instead
Done-for-you setup
Rather not build it yourself?
Set it up yourself, or I'll set it up for you in a week.
- I set up the same templates on this site in your own n8n, Twilio and Google accounts, so you own everything.
- Your business info, booking link and message wording filled in, and every test on the setup page run with you.
- Live within a week of getting your logins.
Tell me your trade and how customers reach you today. I'll reply by email with next steps.