Skip to main content
Lifetime license included with every purchase
n8n workflowslead generationoutreach automationCRM integration

How to Automate Lead Generation and Outreach with n8n

Automate lead capture, CRM enrichment, scoring, and cold outreach sequences with n8n. Step-by-step workflow breakdowns with real node logic and templates.

Nn8n Marketplace Team·May 1, 2026·8 min read

Most lead gen pipelines leak time in three places: manual data entry into the CRM, slow follow-up (hours instead of minutes), and zero segmentation before outreach.

n8n fixes all three. You connect the trigger (form, API, scraper) directly to enrichment, scoring, and action nodes — no Zapier tax, no per-task pricing, no black-box logic.

This post walks through the full automation: capture → enrich → score → route → outreach → follow-up.

What You Can Automate

  • Sync web form submissions to HubSpot, Pipedrive, or a Google Sheet in real time
  • Enrich leads with company data from Clearbit, Apollo, or Hunter before they hit your CRM
  • Score leads based on job title, company size, or form answers and tag them automatically
  • Route high-intent leads to a sales rep via Slack; push cold leads into a drip sequence
  • Send personalised cold emails through Gmail or SendGrid with dynamic merge fields
  • Follow up automatically 48 hours after the first touch if no reply was detected
Why n8n for lead gen?

Unlike Zapier, n8n lets you run conditional logic, loops, and data transformations inside the same workflow. One workflow can handle capture, enrichment, scoring, routing, and follow-up — no chaining separate zaps together.

The Lead Generation Pipeline

Every lead automation follows the same shape:

Webhook / Form Trigger
  → Enrich (HTTP → Clearbit or Apollo API)
  → Score (Code node — assign points by title, domain, source)
  → Route (IF node — hot vs cold vs disqualified)
  → Act (CRM create + Slack alert  OR  add to drip list)
  → Follow Up (Wait 48 h → check reply → send follow-up if no reply)

The branching point after scoring is where most teams save the most time. Hot leads hit a Slack channel and get a CRM record within seconds. Cold leads silently enter a nurture sequence.

Step-by-Step Breakdown

1. Collect

Use a Webhook node as the entry point. Point your form (Typeform, Tally, plain HTML) at the webhook URL.

// Webhook node — POST /lead-intake
{
  "name": "Lead Intake",
  "type": "n8n-nodes-base.webhook",
  "parameters": {
    "path": "lead-intake",
    "httpMethod": "POST",
    "responseMode": "onReceived"
  }
}

For inbound leads from your own site, disable CSRF protection in the form and send application/json. The webhook accepts the payload raw.

2. Process / Enrich

Hit an enrichment API to turn an email address into a full lead profile before writing to the CRM.

// HTTP Request node — Clearbit Enrichment
{
  "name": "Enrich Lead",
  "type": "n8n-nodes-base.httpRequest",
  "parameters": {
    "url": "=https://person.clearbit.com/v2/combined/find?email={{ $json.email }}",
    "method": "GET",
    "authentication": "genericCredentialType",
    "genericAuthType": "httpHeaderAuth"
  }
}

If enrichment returns a 404 (unknown email), use an IF node to skip enrichment fields and continue with raw form data.

3. Score

A Code node assigns a numeric score based on enriched fields.

// Code node — Lead Scoring
const lead = $input.first().json;
const enriched = $('Enrich Lead').first().json;

let score = 0;
const title = (enriched?.person?.title || '').toLowerCase();
const employees = enriched?.company?.metrics?.employees || 0;

if (['ceo','cto','vp','director','head of'].some(t => title.includes(t))) score += 40;
if (employees >= 50 && employees < 500) score += 30;
if (employees >= 500) score += 50;
if (lead.source === 'demo-request') score += 30;
if (lead.source === 'newsletter') score += 5;

return [{ json: { ...lead, ...enriched, score } }];

4. Route

An IF node splits hot from cold:

IF score >= 70  →  Hot Lead branch
ELSE            →  Cold Lead branch

Hot leads: create a HubSpot contact + send a Slack DM to the assigned rep.
Cold leads: append to a Google Sheet and enrol in an email drip sequence.

Disqualification branch

Add a second IF node before routing to drop leads that match spam patterns (disposable email domains, empty company field, score = 0). Write them to a "Rejected" sheet and stop — don't waste CRM storage or email credits.

5. Act

For hot leads, create the CRM record immediately:

// HubSpot node — Create Contact
{
  "name": "Create HubSpot Contact",
  "type": "n8n-nodes-base.hubspot",
  "parameters": {
    "resource": "contact",
    "operation": "create",
    "additionalFields": {
      "email": "={{ $json.email }}",
      "firstname": "={{ $json.firstName }}",
      "lastname": "={{ $json.lastName }}",
      "company": "={{ $json.company?.name }}",
      "jobtitle": "={{ $json.person?.title }}",
      "hs_lead_status": "NEW"
    }
  }
}

Then send a Slack message to the sales channel with the lead score, title, company size, and a direct link to the HubSpot record.

5. Follow Up

After the first outreach email, use a Wait node (48 hours) followed by a check for email replies before sending a second touch.

Send Intro Email (Gmail)
  → Wait 48 hours
  → Check Gmail for reply thread (Gmail node — "Get Many Messages" filtered by thread ID)
  → IF no reply → Send Follow-up Email
  → IF reply exists → Stop (rep takes over)

This prevents the embarrassing double-follow-up when a prospect already replied.

Personalise at scale

Use the Set node between enrichment and the email send to build an intro_line variable: "I saw {{company}} recently hit {{employee_count}} employees — congrats." Pull the data from the Clearbit enrichment output and merge it into the email body.

Implementation Patterns

Pattern 1: Form → CRM → Slack in 60 seconds

The fastest production-ready lead pipeline:

Typeform Webhook → Set (normalise fields) → HubSpot Create Contact
  → Slack message (#leads channel with score + company)

Deploy time: under 30 minutes. No enrichment, no scoring — just instant CRM capture and sales notification.

Use the App Marketing Outreach template

Pattern 2: Scored Enrichment Pipeline

Full-fat pipeline for teams with a clear ICP:

Webhook
  → HTTP (Clearbit enrich)
  → Code (score)
  → IF (hot / cold / spam)
    hot  → HubSpot + Slack + send intro email
    cold → Google Sheets + add to ActiveCampaign list
    spam → Google Sheets "Rejected" tab + stop

Add a Merge node at the end to log every lead (hot, cold, or spam) to a master Airtable base for reporting.

Pattern 3: LinkedIn Scrape → Outreach Sequence

For outbound teams sourcing from LinkedIn:

Schedule Trigger (daily 8 AM)
  → HTTP (Apollo.io search — target company size + title)
  → Split In Batches (50 leads per run)
  → HTTP (Apollo enrich each lead)
  → Code (deduplicate against existing CRM contacts)
  → Create HubSpot contact (if new)
  → Enrol in email sequence (SendGrid dynamic template)
Explore the Decision Makers Dashboard template

n8n Nodes You'll Use Most

NodePurpose
WebhookReceive inbound form or API submissions
HTTP RequestCall enrichment APIs (Clearbit, Apollo, Hunter)
CodeLead scoring, deduplication, field normalisation
IFBranch hot / cold / disqualified leads
HubSpot / PipedriveCreate or update CRM contact records
Gmail / SendGridSend intro and follow-up emails
Google SheetsStaging area, cold lead list, rejected log
SlackReal-time sales rep notifications
WaitDelay follow-up emails by hours or days
SetBuild merge-field variables for personalisation

Getting Started

  1. Map your lead sources — list every form, landing page, or API that sends leads today. Each becomes a separate Webhook node (or a single webhook with a source field).
  2. Pick an enrichment service — Clearbit for B2B SaaS, Apollo for outbound, Hunter for email-only lookups. Get an API key.
  3. Define your ICP score — write down 3–5 signals that make a lead hot (title, company size, intent action). Translate them to the Code node scoring block above.
  4. Connect your CRM — use n8n's native HubSpot, Pipedrive, or Salesforce nodes. Test with a single fake lead before going live.
  5. Build the routing branches — hot path first (CRM + Slack), then cold path (Sheet + drip), then spam filter.
  6. Add the follow-up wait loop — wire the Gmail send to a 48-hour Wait, then a reply-check before the second email.
  7. Run a test lead through the full workflow — inspect each node's output in the n8n editor and verify the Slack message, CRM record, and email all look correct.

For the outbound scraping pattern, see how we combined Apollo and n8n in the Market Trend Analyzer template — the same HTTP + Code + deduplication pattern applies directly.

If you're building an outreach system for a SaaS product, read our post on n8n SaaS churn prevention workflows — many of the same enrichment and segmentation patterns apply to your existing user base.

Total time to first automated lead

If you follow Pattern 1 (Form → CRM → Slack), you can have a live workflow in under 30 minutes. Pattern 2 with full scoring takes 2–3 hours the first time. The code blocks above are production-ready starting points — not pseudocode.

The goal is a pipeline that requires zero manual intervention for leads that match your ICP, and zero wasted effort on leads that don't. Once the workflow is live, every new lead is scored, routed, and contacted before you finish your morning coffee.

For workflow templates that cover the enrichment, outreach, and scheduling patterns described here, browse the App Marketing Outreach and Decision Makers Dashboard templates in the store.

Check out our post on automating your marketing with n8n for complementary workflows that handle nurture content, social posting, and campaign tracking once a lead enters your funnel.

Browse all n8n automation templates
FAQ

Common questions

Can n8n automate lead capture from web forms?
Yes. n8n's Webhook node receives form submissions from any source — Typeform, Tally, your own HTML form — and routes data directly into your CRM, Google Sheets, or Notion database without any middleware.
How do I connect n8n to my CRM for lead sync?
n8n has native nodes for HubSpot, Pipedrive, Salesforce, and Zoho. For unsupported CRMs, use the HTTP Request node with the CRM's REST API. Lead records can be created, updated, or searched in the same workflow that captures the lead.
Can n8n send automated follow-up emails after a lead submits a form?
Absolutely. Combine the Webhook node (to capture the lead), a Wait node (to delay by hours or days), and the Gmail or SendGrid node (to send the follow-up). You can branch the sequence based on lead score or source using an IF node.
Stop reading. Start running.

Get the workflow templates this guide is built on

Import-ready n8n JSON, step-by-step setup, and tested end-to-end. One-time payment, own it forever.