§Use caseOne operator

Never lose an urgent call

AI voice agents end every call the same way: a webhook fires with a transcript and hangs up. Nobody reads it until a customer calls back annoyed that nobody followed up. Below is how I actually catch the urgent ones: a webhook, a usability check, a model that only extracts facts, and code that decides what happens next instead of the model.

All three stages, and the setup written on the canvas
All three stages, and the setup written on the canvas
The whole voice-call handoff workflow on the n8n canvas: usability check, extraction and routing, then WhatsApp alert and CRM log.

The questionHow do I make sure an urgent call to my AI voice agent reaches a real person, not just a transcript nobody reads?

How the working version is put together

  1. Receive the call and check it's usable

    The webhook receives the end-of-call payload from your voice agent, whichever one you run: Vapi, ElevenLabs, Retell or similar. A no-answer, a voicemail or an empty transcript never reaches the model. It's logged as unprocessable and stops there, so I'm not paying for a model call on nothing to extract.

  2. Extract facts, never a decision

    An OpenAI extractor reads the transcript and returns sentiment, urgency, intent, a summary and a follow-up date, and nothing else. I tell it explicitly not to decide what happens next. The model reports what it heard; it doesn't get to route the call.

  3. Decide urgency in code, not on a hunch

    I read the model's own sentiment and urgency fields plus a keyword list you set in a code node, and that's what marks a call urgent, never the model's opinion asked directly. A call is urgent if the model marked urgency high, sentiment negative, or the summary matches one of your keywords.

  4. Alert the owner, never the caller

    I let an urgent call message the business owner on WhatsApp within seconds, gated by a switch you control. The number the alert goes to is fixed in one settings node, so a caller reciting a different number back can never end up as the one who gets messaged.

  5. Log every call, whatever happened

    Urgent, routine or unprocessable: every single call writes one row to a master Call Log. Urgent and routine calls also land in their own tabs. Nothing is dropped because a transcript was empty or a call rang out unanswered.

  6. Point it at your own CRM

    I ship it wired to Google Sheets because it's the fastest thing to prove the pattern on. The three logging nodes swap for HubSpot, Airtable or Postgres without touching anything upstream of them.

The kit

Hand off AI voice calls to WhatsApp and your CRM without losing urgent ones

I built and gated this one, staging for Etsy now: 19 nodes, the setup written on the canvas, and a setup guide for every node. If you want it sooner, or set up around your own voice agent and your own CRM, start a brief instead.

What a missed urgent call actually costs

I'm not going to hand you a missed-call statistic, because I haven't measured one on my own operations and I'd only be borrowing somebody else's number. What I can tell you is the shape of the failure: a voice agent handles the call cleanly, hangs up, and the transcript sits in a webhook log nobody opens until a customer rings back annoyed.

The calls that matter most are exactly the ones a webhook-only setup is worst at catching. A voicemail because nobody picked up. A caller who mentions a gas leak in passing halfway through a sentence about something else. None of that reads as urgent to a system that isn't looking for it.

The parts that break

The extraction step is the one gap I'd flag before running this against real traffic: if the OpenAI call itself fails outright, that run stops rather than falling back to an unprocessable row, unlike the no-answer and empty-transcript cases earlier in the flow. I'd wire proper error handling onto that node first.

Keyword lists drift, too. Gas leak catches on obvious wording and won't catch every unusual way a caller describes an emergency, so I'd treat the keyword list as something you edit after reading a few weeks of real calls, not something you install once.

What it costs to run

The model call is small: one transcript makes a short prompt, and what you already pay for the automation platform will dominate long before the OpenAI calls do.

The real cost is attention, same as every build I ship like this. Somebody has to own the keyword list, and somebody has to notice if the WhatsApp number in Handoff Settings is ever wrong. Get that number wrong and the alert goes nowhere, silently.

Why take this from me

Because I build and run this class of pipeline daily rather than just describing it. The work below links to things that are actually running, including an operational brain that's open source, so you can read how I build before paying me anything.

The fair objection is that my proof is my own operation rather than a roster of trades firms and clinics, and there are no reviews on this site because I don't have any yet. I'd rather write that down than have you notice it.

Read this before you spend anything

Who should not buy this

If your voice agent has no end-of-call webhook to point anywhere, there's nothing here to wire up. That's a different, bigger conversation before this one.

If you don't use WhatsApp Business and have no way to receive the alert, the urgent branch has nowhere to send its message. I'd rather say so than sell you half a build.

If what you actually want is live call transfer, mid-call, to a human, this isn't that. It acts after the call has already ended.

What lands on your desk

  • I set it up inside your own n8n, pointed at your own voice agent's webhook, under your own credentials
  • Your urgent keyword list and the WhatsApp switch written into Handoff Settings with you, in one place
  • The extraction step's error handling wired in properly, so a failed model call costs you a review, never a dropped call
  • A Google Sheets log across three tabs (or your own CRM instead), so nothing is missing from the record
  • A walkthrough I write down, so whoever touches it next is not dependent on me

Questions this page answers

Does the AI decide which calls are urgent?
The model doesn't decide anything. It only extracts facts: sentiment, urgency, intent and a summary. A code node reads those fields plus your own keyword list and makes the routing decision, never the model's opinion asked directly.
Who gets the WhatsApp alert?
The business owner, fixed in one settings node. It never goes to the caller, whatever number they gave during the call.
What happens to a call with no transcript?
A no-answer, a voicemail or an empty transcript never reaches the model. It's logged as unprocessable in the master Call Log and the run stops there.
What if the extraction call itself fails?
That's the one gap I'd close before trusting this against real traffic: right now that run stops rather than falling back to a logged row, and I'd wire proper error handling onto it first.

Want this built and handed over working?

One line is enough to start. You get an honest answer on fit, and a number rather than a discovery call.

Start a brief