// build it in 30 minutesby 5 min read

Build a Lead-Qualification Webhook in 30 Minutes

Inbound form fires. Lead gets scored. Sales gets a Slack ping with the score and a one-paragraph summary. Cold leads get an auto-decline. Build the whole thing today.

The build: a webhook endpoint that receives lead form submissions, scores the lead with AI, routes hot leads to Slack with summary, and sends an auto-decline to cold leads.

Total time: 30 minutes.

What you'll need

  • Any form tool that can POST to a webhook (Tally, Typeform, custom form)
  • n8n (or Make / Zapier)
  • Slack workspace
  • Email sending tool (Resend, Postmark, or Gmail API)
  • AI API key

Step 1: Webhook trigger (3 min)

In n8n, create a Webhook trigger node. Copy the production URL. Use it as the webhook URL in your form tool.

Submit a test form to verify the payload comes through.

Step 2: AI scoring (10 min)

Add an AI node after the webhook. Prompt:

You are scoring an inbound sales lead.

Lead's form submission:
- Name: {{ $json.name }}
- Company: {{ $json.company }}
- Role: {{ $json.role }}
- Message: {{ $json.message }}
- Budget hint: {{ $json.budget_hint }}

Score on:
- Fit (1-5): does their problem match what we sell? Our services: {YOUR_SERVICES}
- Authority (1-5): does their role suggest decision power?
- Specificity (1-5): is their message specific or generic?
- Urgency (1-5): do they signal a timeline or pressure?

Disqualifiers (if any present, set fit to 0):
- Company size below {MIN_SIZE}
- Industry not in: {INDUSTRIES_LIST}
- Asking for something outside our scope

Return JSON:
{
  "total_score": <0-20>,
  "fit": <0-5>,
  "authority": <1-5>,
  "specificity": <1-5>,
  "urgency": <1-5>,
  "disqualifier": <string or null>,
  "summary": "<one paragraph, max 60 words>",
  "recommended_priority": <"hot" / "warm" / "cold" / "decline">,
  "specific_question_to_ask": "<one question to advance discovery>"
}

Step 3: Branch by priority (3 min)

Add a Switch node. Branches:

  • "hot" → Slack + CRM create
  • "warm" → CRM create, no Slack ping
  • "cold" → CRM create with cold tag, no Slack ping
  • "decline" → Auto-decline email + CRM with declined tag

Step 4: Slack ping for hot leads (5 min)

Add a Slack node on the hot branch. Channel: #sales-inbox.

Message:

:fire: *Hot lead: {{ name }} from {{ company }}*
Score: {{ total_score }}/20

{{ summary }}

Suggested next question: _{{ specific_question_to_ask }}_

<{{ crm_link }}|Open in CRM>

Step 5: Auto-decline for "decline" leads (5 min)

Add an email node on the decline branch. Template:

Hi {{ name }},

Thanks for reaching out about {{ their_topic }}.

I'm not the right fit for this specific need. We focus on {YOUR_FOCUS}, and what you're describing is better served by {ALTERNATIVE}.

A few firms I'd actually recommend:
- {REFERRAL_1}
- {REFERRAL_2}
- {REFERRAL_3}

Good luck with the project.

— Josh

The personalization is key. Cold, generic auto-declines hurt your brand. Specific, helpful auto-declines build it.

Step 6: Test (4 min)

Submit four test forms covering each priority level. Verify:

  • Hot → Slack ping
  • Warm → CRM entry only
  • Cold → CRM entry with cold tag
  • Decline → polite auto-decline email

What I do with this

Every inbound lead gets triaged within 30 seconds of submission. Hot leads hit my Slack while the prospect is still on the form page. I can reply within 2-3 minutes if I want, which is the highest-converting response time in B2B.

Cold leads still get a respectful auto-decline. They walk away thinking well of us. Some come back later.

What to add next

  • A 24-hour follow-up sequence for warm leads who don't get a sales reply
  • Industry-specific scoring (different criteria for wealth, legal, CPA, etc.)
  • Auto-book a calendar slot for hot leads (Cal.com link in the Slack ping)
  • A weekly digest of all leads scored, with breakdown

Ship the basic version. Iterate.

lead scoringwebhookn8nsales30 min build
// go deeper

Worked steps, FAQs and resources on this topic.

read the guide
// the_list

Get the next one.

Field notes from real deployments, written the way this one was. No schedule promised and nothing sold to you. Unsubscribe whenever.

// keep reading

Related posts

// ready to ship?

Let's build yours.

Reading is the easy part. We do the work. Tell us what's broken and we'll tell you straight up whether we can help.