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.
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
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.
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.
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
| Node | Purpose |
|---|---|
| Webhook | Receive inbound form or API submissions |
| HTTP Request | Call enrichment APIs (Clearbit, Apollo, Hunter) |
| Code | Lead scoring, deduplication, field normalisation |
| IF | Branch hot / cold / disqualified leads |
| HubSpot / Pipedrive | Create or update CRM contact records |
| Gmail / SendGrid | Send intro and follow-up emails |
| Google Sheets | Staging area, cold lead list, rejected log |
| Slack | Real-time sales rep notifications |
| Wait | Delay follow-up emails by hours or days |
| Set | Build merge-field variables for personalisation |
Getting Started
- 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
sourcefield). - Pick an enrichment service — Clearbit for B2B SaaS, Apollo for outbound, Hunter for email-only lookups. Get an API key.
- 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.
- Connect your CRM — use n8n's native HubSpot, Pipedrive, or Salesforce nodes. Test with a single fake lead before going live.
- Build the routing branches — hot path first (CRM + Slack), then cold path (Sheet + drip), then spam filter.
- Add the follow-up wait loop — wire the Gmail send to a 48-hour Wait, then a reply-check before the second email.
- 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.
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 →Common questions
Can n8n automate lead capture from web forms?
How do I connect n8n to my CRM for lead sync?
Can n8n send automated follow-up emails after a lead submits a form?
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.
More automation guides

How to Automate Airtable with n8n (Sync, Update, and Trigger Workflows from Your Database)
Airtable Is Your Database. n8n Makes It Behave Like a Full Automation Platform. Airtable is where teams store structured data — project trackers, CRM records, content calendars, inventory, hiring pipe…

How to Automate Your Email Inbox with n8n (Triage, Route, and Auto-Reply)
Your Inbox Is a Queue. n8n Can Run It for You. Most knowledge workers spend 2–4 hours a day on email. Sorting, reading, deciding who to forward to, writing the same replies again and again. That is op…

How to Automate Notion Workflows with n8n (Databases, Pages, and Syncs)
Notion Is Your Team's Source of Truth. n8n Keeps It Accurate Without the Manual Work. Notion is where teams track projects, log decisions, manage content pipelines, and maintain wikis. The problem is…