01. Missed Call Rescue
The leak this closes
A missed inbound call becomes a lost job. When someone calls and nobody picks up, most callers do not leave a voicemail and do not call back. They call the next business on the list, and that job is gone before you even see the missed-call notification. This loop catches every missed call the moment it happens and answers it with a short, personal text while the caller still has their phone in hand.
The pattern
Missed-call webhook from your phone system (Twilio, CallRail, or 3CX) -> AI drafts a short text-back that names your business and offers to help or book -> SMS goes out via Twilio, the rescue is logged to a sheet, and you get a Slack alert.
Import (n8n)
How long this really takes. The import itself is seconds. If you already run n8n with these credentials attached, you are done in a minute. If this is your first n8n workflow, budget an evening: an account to create, a credential to connect, a test that fails once. That is normal and it happens only on the first blueprint. Not sure this is the right one to start with? Read the start-here page first.
This is the "import this first" blueprint. One credential, one phone number, and it runs.
- In n8n, go to Workflows, click Import from File, and select
workflow.n8n.json. - Open the Settings (Edit Me) node. Fill in your business name, your mobile number, your Twilio number, your booking link, and paste your CONTEXT block from your business brain into
businessContext. LeavesendModeasreviewfor now. - Attach your Twilio credential to the Send SMS (Twilio) node. This is the one credential the core loop needs.
- Attach your OpenAI credential to the Draft Text-Back (AI) node.
- Optional: attach a Google Sheets credential to Log to Sheet (paste your sheet ID in the node) and a Slack credential to Alert Owner (Slack) (set your channel name). If you skip these, delete the two nodes. The SMS still goes out either way.
- Activate the workflow, open the Missed Call Webhook node, and copy the production URL.
- Paste that URL into your phone system so it fires on missed or unanswered calls: in Twilio as the status callback URL on your number, in CallRail as a call webhook, in 3CX as an HTTP hook on the no-answer route.
- Call your business number, let it ring out, and watch the draft land on your own phone.
One extra step for this loop: its trigger is a public URL, so it ships with Header Auth switched on. In the webhook node, create a Header Auth credential (name it X-Kratt-Token, value a long random string you invent), then send that same header from whatever system calls the URL. Without this, anyone who guesses the URL can fire your loop and spend your credits.
Build it in Make.com instead
- Create a new scenario and add Webhooks > Custom webhook as the trigger. Copy the webhook URL into your phone system exactly as in step 7 above.
- Add Tools > Set multiple variables. Create variables for
businessName,ownerMobile,twilioNumber,bookingLink,sendMode(valuereview), andbusinessContext(paste your CONTEXT block from your business brain). - Add OpenAI (ChatGPT, Sora, DALL-E, Whisper) > Create a Completion. System message: instruct it to only draft an SMS body, never send, maximum 300 characters, no invented prices or promises, using only facts from the CONTEXT block. User message: the business name, the CONTEXT block, the caller number from the webhook, and the booking link.
- Add Flow Control > Router after the completion module.
- Route 1: add Twilio > Create a Message. From:
twilioNumber. To:ownerMobilewhilesendModeisreview, the caller's number once you switch tolive. Body: the completion text, prefixed with the caller's number in review mode. - Route 2: add Google Sheets > Add a Row with timestamp, caller number, draft text, and mode.
- Route 3: add Slack > Create a Message to your alerts channel with the caller number and the draft.
- Save, run once, and test with a real missed call before scheduling it on.
Safety: drafts, not sends
The AI in this loop only drafts. It never decides to send anything, and the prompt forbids it from inventing prices, availability, or promises that are not in your CONTEXT block. Out of the box, sendMode is review, which means every drafted text-back is sent to your own mobile, prefixed with the caller's number, so you read it before anything reaches a customer. Only after a few days of drafts you would have sent word for word, flip sendMode to live in the Settings node and the text-back goes straight to the caller.
The one metric
Rescued calls per week: the number of missed calls that received a text-back within five minutes. Read it straight off your log sheet every Friday. If that number is above zero, the loop is paying for itself in jobs that used to vanish.