The gap between a lead arriving and a human responding is where most inbound revenue is lost. Not because nobody follows up, but because the follow-up happens hours later, after the prospect has messaged two competitors.

Closing that gap doesn't require much. It requires a webhook, a scoring step, and a notification that reaches a human where they actually are. This is the pattern we deploy most often, built on n8n — and the parts that decide whether it survives real traffic.


Why n8n rather than Zapier or Make

The honest comparison:

n8nZapier / Make
Pricing basisPer workflow execution, or self-hostedPer task (each step counts)
Self-hostingYesNo
Cost at high volumeFlat if self-hostedScales with every step
Custom codeJavaScript / Python nodes inlineLimited
Integration breadthGood, smaller than ZapierLargest available
Setup effortHigherLowest
Data controlYours, if self-hostedVendor's

The decisive difference is the billing unit. Zapier charges per task, and a five-step workflow is five tasks per lead. n8n charges per execution on cloud, or nothing per execution if you self-host. At a few hundred leads a month it barely matters. At tens of thousands of executions it's the whole decision.

Self-hosting also settles data-residency questions cleanly, which matters if lead data includes anything regulated.

If you need an obscure integration or nobody on your team will maintain a container, take Zapier and move on. The best automation platform is the one that's still running in six months.


The workflow

Five nodes, and each one earns its place:

code
[ Webhook ]            form / ad lead / WhatsApp arrives
     │
     ▼
[ Normalise ]          clean phone + email, dedupe key
     │
     ▼
[ AI enrichment ]      score intent, categorise service, summarise
     │
     ▼
[ CRM upsert ]         create or update by phone number
     │
     ├──> [ score >= threshold ] ──> WhatsApp alert to sales
     └──> [ below threshold ]    ──> nurture sequence

Webhook. One endpoint, several sources — your site form, Meta lead ads, Google Lead Form extensions. Normalising at the entry point means everything downstream handles one shape.

Normalise. Unglamorous and the highest-value node in the workflow. Strip phone numbers to digits and a leading +, lowercase emails, trim whitespace. Pick one canonical dedupe key — phone is usually the most reliable for messaging-led businesses — because everything downstream depends on matching the same person consistently.

AI enrichment. Send the raw submission to a model and ask for structured output. Not prose — a fixed JSON shape:

json
{
  "intent_score": 78,
  "service_category": "web-development",
  "budget_signal": "stated",
  "urgency": "high",
  "summary": "E-commerce site rebuild, existing WooCommerce, wants payment gateway integration, budget indicated, timeline this quarter"
}

The summary field is the part sales actually values. A rep opening a WhatsApp alert that already says what the lead wants and roughly what they'll spend behaves completely differently from one who gets a name and a phone number.

CRM upsert. Upsert on your dedupe key, never blind-insert. A returning enquirer should update their existing record, not create a second one. Duplicate contacts are how a CRM becomes untrustworthy, and once your team stops trusting it they stop using it.

Route. High score goes to a human immediately via WhatsApp. Everything else goes to a nurture sequence. The threshold is a business decision — start conservative, so more leads reach humans than strictly necessary, and tighten once you've seen a few hundred scored.


The parts that break in production

The happy path takes an afternoon. These are what make it survive.

Idempotency. Webhook sources retry. Meta retries on non-200 responses, and network failures produce duplicates. Without protection, one lead becomes three records and three WhatsApp alerts, and your sales team stops trusting the alerts within a week.

Store a hash of the incoming payload — or the provider's own event ID where available — and check it before processing. A small key-value store or a processed_events table is enough. This is the single most common omission in workflows built quickly.

Return 200 fast. Acknowledge the webhook first, then do the work. If your AI call takes four seconds and the source times out at three, you'll get retried into duplicates while the original was processing fine.

Handle the AI step failing. Model APIs return 429s and 500s. If enrichment fails, the lead must still reach your CRM — unscored, flagged for manual review. Losing a lead because a scoring step errored is strictly worse than not scoring it. Wrap the node in error handling that degrades rather than aborts.

Constrain the output. Ask for JSON and validate it against a schema before use. A model returning "intent_score": "high" where you expected a number will break the routing branch silently, and silent routing failures are the worst kind — leads simply stop arriving and nobody notices for a week.

Alert on workflow failure. n8n can notify you when an execution errors. Configure it. An automation nobody is watching is an automation that has been broken for three weeks.

Watch the WhatsApp side. If sales alerts go out over the WhatsApp Business API, those are business-initiated messages to your own staff — which still means templates and consent handling. Internal alerts are often better served by a Slack or Telegram node, with WhatsApp reserved for customer-facing messaging where the compliance overhead is justified.


What this is worth

The value isn't the automation. It's the reduction in time-to-first-human-response, plus the fact that the human arrives already briefed.

Measure two things before and after: median minutes from submission to first human contact, and percentage of leads contacted within an hour. If those don't move, the workflow isn't earning its keep and no amount of additional nodes will fix it.

Start with the smallest version that works — webhook, normalise, CRM, notify. Add scoring once you have enough volume for the threshold to mean something. Workflows that begin with twelve nodes tend to be abandoned; ones that begin with four tend to grow.


Want this built and maintained?

We build lead-routing automation on n8n — self-hosted where data control matters — wired into WhatsApp, your CRM, and your ad platforms. Talk to us about AI chatbot development and automation.