Downloads
Download the n8n workflow (JSON)
missed-call-whatsapp-follow-up-n8n.json · n8n workflow · 17 steps · starts with Missed call webhook · uses Google Sheets, WhatsApp, Slack, Anthropic · 27 KB
Import into n8n: Create Workflow, then the menu, then Import from File.
How to import it into n8n
- In n8n, create a new workflow.
- Open the ⋯ menu at the top right and choose Import from File, then pick the downloaded .json. (Or open the file, copy everything and paste it on the canvas.)
- Open each node with a warning and connect your own account: the file carries no passwords or keys.
- Run it once with Test workflow, check the result, then switch it to Active.
What it does
Every call to your business number that nobody picks up triggers n8n through Exotel or Twilio. Within about a minute the caller gets your pre-approved WhatsApp template with what you offer and a booking link, with a different template after hours. Nobody gets two messages within 2 hours, even if they call three times. The number is logged in a Callers sheet. Existing customers and anyone who called twice in 7 days are flagged in Slack with a short call-back brief written by Claude from their sheet row.
Who it is for
Clinics, salons, showrooms, coaching centres and local service businesses where the phone rings while everyone is busy with a customer.
What you need
- An n8n account reachable from the internet (n8n Cloud is easiest)
- Exotel (Passthru applet) or Twilio on your business number
- WhatsApp Business Cloud API with two approved templates
- An Anthropic API key
- A Google Sheet with a
Callerstab - Slack (#calls)
How the workflow runs, node by node
The slides show the same steps. Open the workflow in n8n and you will see a sticky note over each one.
Step 1 · Catch the missed call
Exotel or Twilio calls n8n after every call. n8n answers at once, cleans the number to 91 plus 10 digits, keeps only unanswered calls and ignores duplicate pings.
- Missed call webhook: The URL your Exotel Passthru applet (or Twilio status callback) calls after every call to your business number.
- Reply 200 to Exotel: Answers the phone system straight away so it does not retry or time out while the rest runs.
- Clean up call: Pulls out the call id and caller number (cleaned to 91 plus 10 digits), the call status and the time in IST. Works with Exotel and Twilio field names.
- Only missed calls: Keeps only calls nobody picked up, with a valid Indian mobile number. Answered calls stop here.
- Skip duplicate pings: Phone systems sometimes send the same call twice. One call, one WhatsApp.
Step 2 · Check who is calling
n8n looks the number up in your Callers sheet: known customer? How many missed calls this week? Already sent a WhatsApp in the last 2 hours? After closing time?
- Look up caller: Finds this number in your Callers tab: name, whether they are a customer, how often they called, and when they last got a WhatsApp.
- Check call history: Counts missed calls from this number in the last 7 days, checks whether a WhatsApp already went out in the last 2 hours, and marks after-hours calls and repeat callers.
Step 3 · WhatsApp in about a minute
The caller gets your approved WhatsApp template: sorry we missed you, what we do, a booking link. A different one after hours. Nobody gets two in a row.
- Messaged in last 2 hours?: If they already got a WhatsApp in the last 2 hours (they called three times in a row), do not send another.
- Send missed-call WhatsApp: Sends your approved WhatsApp template within about a minute: sorry we missed you, here is what we do, book a slot here. A different template after hours.
- Log the call: Updates one row per caller: last missed call, the 7 day count and when they were last messaged.
- Alert: WhatsApp failed: If WhatsApp refuses the template (for example the number is not on WhatsApp), you get the number in Slack to call back.
Step 4 · Repeat callers go to you
Existing customers and anyone who called twice this week are flagged. Claude writes a short call-back brief from their sheet row, and it lands in Slack with the number and a Called back button.
- Repeat caller?: True for existing customers and anyone who called twice or more in 7 days. They deserve a call from you, not just a message.
- Write call-back brief with Claude: Writes a short brief for you: how urgent the call-back is, why, and a first line to say, based only on the caller's row in your sheet.
- Claude: Claude (claude-sonnet-5-5) at temperature 0.2, so answers stay consistent from run to run.
- Call-back schema: Priority, reason and opener as fixed fields, so the Slack message is always the same shape.
- Ping owner to call back: Posts the call-back brief with the number to #calls with 'Called back' and 'No answer' buttons, so the team can see who has been handled.
- Log call-back outcome: Writes the outcome to the caller's row, so tomorrow's brief knows whether you already spoke to them.
Setup
- Import the JSON file into a new n8n workflow and copy the production URL from Missed call webhook.
- In Exotel, add a Passthru applet after the Connect applet in your call flow and paste the URL. For Twilio, use it as the status callback (change the webhook method to POST).
- In Meta WhatsApp Manager, create two utility templates,
missed_call_openandmissed_call_after_hours, each with three variables: name, business name, booking link. Wait for approval. - On Send missed-call WhatsApp, create a WhatsApp API credential, replace
YOUR_PHONE_NUMBER_ID,YOUR_BUSINESS_NAMEand the booking link. - Make a Google Sheet with tab
Callers(Phone, Name, Customer, Notes, LastMissed, MissedLog, Missed7d, LastMessagedAt, CallBack) and replaceYOUR_SHEET_ID. Add your existing customers with Customer = yes. - Create an Anthropic credential on Claude and connect Slack on the two Slack nodes.
- Change opening hours (10:00 to 19:00) in Check call history if needed.
- Activate, call your number from another phone and let it ring out. Check the WhatsApp, the sheet row and, on the second call, the Slack brief.
How to customise it
- Ask callers what they need: put quick reply buttons ('Book', 'Price', 'Call me') in the template and connect replies to the WhatsApp Lead Agent.
- Change the 2 hour quiet window or the 7 day repeat rule in Check call history.
- Route by number called: if you have several Exotel numbers, use
CallToto pick a branch name and template. - Send the call-back brief to the branch manager's WhatsApp instead of Slack.
Guardrails
The caller only ever gets your own pre-approved WhatsApp template. Claude writes only for you, never to the customer.
- The customer only receives your own Meta-approved template. Claude never writes to customers here.
- One WhatsApp per caller per 2 hours, however many times they ring.
- Answered calls and invalid numbers are filtered out before anything is sent.
- If WhatsApp fails, the number goes to Slack so someone calls back by hand.
Troubleshooting
- No run when a call is missed. Check that the Passthru applet sits after Connect, and that the workflow is active (the test URL only works while you click Execute).
- Status is never 'no-answer'. Exotel field names depend on the flow. Open an execution, look at
query, and add your value to the list in Only missed calls. - WhatsApp error 132000 or template not found. The template name, language (
en) or number of variables does not match what Meta approved. - Landline callers get nothing. They are not on WhatsApp. The error path sends them to Slack for a call-back.
Want the members-only resources too?
A free account unlocks them all, including the ones shared in DMs.

