Your inbound leads are rotting in the first hour
Categories -
AI
Automation
Webflow
CRM

Your inbound leads are rotting in the first hour

Published Date: April 11, 2026

Your deal velocity isn’t slow because your reps are lazy; it’s slow because every inbound lead arrives as a half-formed object scattered across forms, inboxes, and “quick notes,” and your team burns the first hour reconstructing reality instead of responding. That hour is the churn window. Lose it and the lead cools, the thread fragments, and you start calling it “lead quality.”

This playbook builds a working lead-intake system that creates one source of truth, enriches context automatically, and routes the lead with explicit policy you can audit.

Tools:
Webflow (capture)
n8n (orchestration)
Supabase (system of record)
Gemini (classification + summarization)

Workflow outcome: From Webflow form submit to routed, enriched lead in under 60 seconds, with a consistent record and an explainable routing decision.

1) Capture with intent, not just fields
Use a Webflow form that collects: email, company, role, problem statement, timeline, and “what triggered this request?” That last field is the classifier seed. Fewer fields, higher signal.

2) Normalize immediately
n8n receives the Webflow webhook, validates email/domain, and writes a Lead record to Supabase. Supabase is the point: no more “where is the latest version?” There’s one row.

3) Let AI do the boring thinking, then log the evidence
n8n sends the free-text fields to Gemini to produce: category (Sales / Support / Partnership / Press), urgency (0–3), persona, and a 2-sentence brief. Store the output plus the raw prompt/response in Supabase. If you can’t replay decisions, you can’t fix them.

4) Route with policy, not vibes
n8n applies routing rules: category + urgency + region + existing account match (by domain in Supabase). Then it triggers the correct notification path (Slack, email, or task creation) and sets an SLA timestamp.

What you measure next: time-to-first-human-response, misroute rate, and “lead reopened” events. The bottleneck will show itself fast.

Automate inbound routing while keeping trust and control

Maya runs growth at a 40-person B2B SaaS. Monday, 9:12 a.m., a Webflow form lands: “Need pricing. SOC2. 2-week deadline. Saw you on G2.” Sounds hot. But last week a similar lead sat for three hours because the rep had to hunt context across HubSpot notes, a forwarded email thread, and someone’s “quick Slack DM.” By the time they replied, the buyer had booked a competitor.

Now the submit hits n8n instantly. First step: normalize. Email parsed, domain checked, basic validation. A Lead row is created in Supabase even if enrichment fails. That part matters because it stops the “wait until perfect then store” habit. A single row. One timeline.

Then Gemini gets only the messy text: problem statement, timeline, trigger. It returns category=Sales, urgency=3, persona=Security lead, plus a two-sentence brief. n8n stores the summary and, crucially, the raw prompt and response. Because later someone will ask why it routed the way it did.

Routing fires. Domain matches an existing account in Supabase. It assigns to the account owner, posts to #inbound with the brief, and sets an SLA timestamp for 15 minutes. The rep sees it before the lead cools. Most days, this feels like velocity.

But friction shows up fast.

A common mistake: Maya’s team initially let Gemini decide the owner directly. “Assign to Alex.” It worked until it didn’t. Gemini hallucinated a name from the company org chart mentioned in the lead’s message, and n8n dutifully routed to the wrong person. No policy. No audit trail beyond “AI said so.” Misroutes spiked, and people stopped trusting the system.

Another mess: they forgot idempotency. Webflow resent the webhook on a slow response, n8n inserted duplicates, and Slack lit up with three “urgent” leads. The rep ignored all of them. Which one was real?

They fixed it by keying the Supabase upsert on email+submitted_at hash, and by routing with explicit rules only after classification. But the uneasy question remains: when urgency is “2” and the domain is new, is it a nurture email or a human call? There isn’t always a clean answer.

Turn routing chaos into an owned intake platform

Here’s the uncomfortable truth: the workflow works great at 40 people, and then it starts to punish you for every assumption you left implicit.

At first, “category + urgency + region + domain match” feels like enough policy to keep things sane. Then volume climbs, sales territories shift, CS starts wanting the same intake for escalations, partnerships wants special handling, and suddenly your neat routing rules turn into a thicket of exceptions. n8n gets five extra branches. Slack gets three extra channels. Supabase gets “just one more field” until your Lead table is a junk drawer with timestamps.

The real scaling constraint isn’t the tooling. It’s governance. Who owns the taxonomy? Who’s allowed to change routing policy? How do you test a policy change without lighting up the wrong rep’s day? If you don’t treat routing rules like code (versioning, review, rollback), you’ll get silent failure: response times look fine, but misroutes creep up and nobody trusts the system. People revert to DMs. The churn window returns, wearing a new hat.

AI adds a second layer of fragility: drift. Gemini’s outputs will shift when you tweak prompts, when your inbound language changes, or when you expand into a new vertical where “SOC2” isn’t the urgency tell. If you’re not sampling classifications weekly and measuring disagreement against human labels, you’re basically hoping the model stays aligned out of habit.

The move I’ve seen work is to operationalize this as an internal “intake platform,” not an automation. Give it an owner (RevOps usually), define a routing spec, and build a tiny QA loop: every week, review 30 leads, score misroutes, adjust policy, and update the prompt. Add a “decision record” view in Supabase so anyone can see: inputs, classification, rule fired, owner assigned, SLA set, first response time. When a rep complains, you don’t debate vibes; you inspect the trace.

And for the gray zone (urgency=2, new domain): don’t pretend it’s solvable. Make it explicit policy: either always human-touch, or always nurture unless a signal threshold is hit. Ambiguity is fine. Unstated ambiguity is what kills you.

Sources & Further Reading -