How to Automate Lead Generation with n8n (Scrape, Enrich & Follow Up Automatically)
Build a fully automated lead generation pipeline in n8n — scrape leads, enrich with company data, qualify by job title or size, write to your CRM, and trigger follow-ups. No Zapier. No monthly SaaS fees.
How to Automate Lead Generation with n8n (Scrape, Enrich & Follow Up Automatically)
Let's talk about what manual lead gen actually costs you. Not in subscription fees — in hours. A developer or automation consultant spending 90 minutes a day copy-pasting LinkedIn profiles into a spreadsheet, manually Googling company sizes, and firing off templated emails with no enrichment is burning 30+ hours a month on work that should not exist. Add inconsistent follow-up cadences (or none at all), zero qualification logic, and a CRM that's always three days out of date — and you're leaving real pipeline on the table.
n8n solves every layer of this. A well-built n8n lead generation automation handles scraping, enrichment, qualification scoring, CRM entry, and follow-up triggering in a single workflow — running on a schedule or event trigger, 24/7, for roughly $0/month in SaaS fees beyond your self-hosted server. No Zapier. No Clay. No Instantly. Just nodes.
What n8n Lead Generation Automation Actually Does
The scope of n8n lead generation automation is wider than most people assume when they first look at it. It's not just "get data from form, dump into sheet." A production-grade pipeline covers:
- Scraping — pulling raw prospect data from LinkedIn, directories, or web sources
- Enrichment — appending company size, industry, tech stack, or email via APIs like Clearbit, Apollo, or Hunter.io
- Qualification scoring — running IF logic or a Code node to decide whether the lead is worth following up
- CRM write — creating or updating a contact record in HubSpot, Airtable, or Notion
- Follow-up trigger — sending a personalised first-touch email after a deliberate delay
The four data sources you'll wire into most projects:
- LinkedIn via Apify or Phantombuster webhook — send a Sales Navigator export or a profile URL, get back structured JSON. Apify's LinkedIn Profile Scraper actor works cleanly with n8n's HTTP Request node.
- Web forms (Typeform, Tally, or native HTML forms) — inbound leads that already opted in, arriving as webhook payloads. This is your warmest source and usually the trigger for the fastest follow-up branch.
- Google Sheets imports — a scheduled trigger reads a Google Sheet (often maintained by a VA or sales rep) and fans out enrichment + CRM writes row by row.
- Inbound Typeform responses — Typeform's webhook sends structured data on submit; the n8n lead capture automation picks it up immediately, enriches, and routes.
Each source lands at the same enrichment → qualify → CRM → follow-up spine. Build the spine once; add sources as nodes.
Architecture Deep-Dive: Node-by-Node
Here's a concrete build. This is the exact flow in the AutoFlow AI Lead Generation template:
1. Trigger Node
Use a Schedule Trigger for batch sources (e.g., Google Sheets import every 6 hours) or a Webhook node for real-time inbound (Typeform, Tally, LinkedIn Phantombuster push). For the webhook path, set the method to POST and note the URL — that's what Phantombuster or Typeform points to.
2. HTTP Request Node — Enrichment
Fire a GET to the Clearbit Enrichment API (or Apollo's /people/match endpoint, or Hunter.io's /email-finder):
GET https://person.clearbit.com/v2/combined/find?email={{$json.email}}
Authorization: Bearer YOUR_CLEARBIT_KEY
Map the response to $json.enriched — you'll use enriched.company.metrics.employees and enriched.person.employment.title in the next node. Always add a Continue on Error toggle here — a 404 or 429 should not halt the run.
3. IF Node — Qualification Logic
This is where you filter out noise. A production-grade qualification condition:
{{ $json.enriched.person.employment.title.toLowerCase().includes('manager') ||
$json.enriched.person.employment.title.toLowerCase().includes('director') ||
$json.enriched.person.employment.title.toLowerCase().includes('founder') }}
AND
{{ $json.enriched.company.metrics.employees >= 10 }}
AND
{{ !$json.email.endsWith('@gmail.com') && !$json.email.endsWith('@hotmail.com') }}
True branch continues to CRM write. False branch can route to a low-priority sheet or simply stop — your call.
4. CRM Write — HubSpot / Airtable / Notion
For HubSpot: use the native HubSpot node, action Create or Update Contact. Map email, firstname, lastname, company, jobtitle, and a custom property lead_source. For Airtable: use the Airtable node, action Create Record, pointing at your Leads base.
Add a Set node before the CRM write to normalise field names — this makes the workflow portable across CRM targets without rewiring.
5. Wait Node — 24-Hour Delay
Drop a Wait node immediately after the CRM write. Set it to resume after 24 hours. This is critical — firing a follow-up email within seconds of a form submission is a spam signal, not a conversion tactic.
6. Gmail / SMTP Node — Follow-Up
After the Wait, send the first-touch email via the Gmail node (OAuth) or Send Email (SMTP). Use {{$json.enriched.person.name.givenName}} to personalise the greeting. Keep the body short — one sentence of context, one value prop, one ask.
AI Lead Generation System
$59n8n workflow to scrape, enrich, and follow up with leads automatically.
5 Lead Gen Workflow Extensions Worth Building
Once the core n8n lead generation automation is running, these are the extensions that compound the value:
1. LinkedIn Sales Nav Export → Auto-Enrich → CRM Export a CSV from Sales Navigator, upload to Google Drive. An n8n schedule trigger reads new rows, fires enrichment, qualifies, and writes to HubSpot — all without touching Zapier. This is the canonical n8n LinkedIn scraping workflow for teams that don't have API budget but do have Sales Nav seats.
2. Inbound Form → Instant Slack DM to Sales Rep
After the webhook trigger, before enrichment, fire a Slack node to your #new-leads channel: "New lead: {{$json.name}} from {{$json.company}} — {{$json.email}}". Sales rep gets a push notification in under 3 seconds.
3. Daily "New Leads" Digest Email to Founder A separate scheduled workflow runs at 8am, queries your Airtable Leads base for records created in the last 24 hours, formats them as an HTML table, and emails it to you. Zero dashboards, zero logins — the data comes to you.
4. Auto-Detect Duplicate Leads
Before any CRM write, run an HTTP Request to your HubSpot contacts search endpoint (or an Airtable SEARCH formula) to check whether email already exists. If a match comes back, skip the create and instead fire an update or a notification — not a duplicate contact. A single Set node holds the dedup logic cleanly.
5. Lead Scoring Model Using a Code Node Drop a Code node after enrichment and assign a numeric score:
const score =
(["ceo","founder","director","vp"].some(t => title.includes(t)) ? 30 : 10) +
(employees >= 50 ? 20 : employees >= 10 ? 10 : 0) +
(hasLinkedIn ? 10 : 0) +
(workEmail ? 20 : 0);
return [{ json: { ...items[0].json, lead_score: score } }];
Write lead_score to the CRM and use it to branch — scores above 60 get a personal email, below 60 go into a nurture sequence.
3 Common Mistakes That Break Production Lead Gen Workflows
1. Qualifying Before Enriching If you run your IF node against raw form data (just name + email), your qualification logic is worthless. A job title field that says "Owner" tells you nothing about company size. Always enrich first, then qualify against the enriched payload. Garbage in, garbage out — this is the most common reason n8n lead gen workflows get abandoned.
2. Sending Follow-Ups Too Fast Skipping the Wait node and sending the follow-up immediately after CRM write feels like a shortcut. It looks like automation spam to the recipient and can get your sending domain flagged. The Wait node exists precisely for this — use it. 24 hours is the minimum for cold outbound; 48–72 hours works better for most B2B contexts.
3. No Error Handling on HTTP Request Nodes
Clearbit returns a 429 (rate limit) or a 404 (email not found) regularly. If your HTTP Request node isn't set to Continue on Error, the whole workflow execution fails and every lead in that batch is dropped silently. Always toggle Continue on Error on enrichment nodes, and add an IF check after: {{ $json.statusCode === 200 }} to decide whether to enrich or fall back to raw data.
Get This Ready to Deploy in Under 30 Minutes
Building this from scratch takes most consultants 4–8 hours the first time — node wiring, API auth, field mapping, testing edge cases. If you want to skip the build and go straight to customisation, the AI Lead Generation System ($59) at AutoFlow AI is a pre-built workflow JSON you import directly into n8n, with a step-by-step setup guide and tested integrations for both HubSpot and Airtable.
You can also see the live demo to walk through the exact node structure before buying.
The template includes the enrichment branch, the qualification IF node with production-grade conditions, the duplicate-dedup check, and the 24-hour Wait → follow-up sequence — ready to wire up your own API keys and go.
Ready to Automate Lead Generation in n8n?
If you're building this for a client, the $59 template pays for itself in the first hour you don't spend debugging Clearbit's pagination. If you want the full automation stack — lead gen, appointment booking, customer support, and WhatsApp follow-up — the $149 bundle includes all five workflows.
The n8n lead generation automation you've been putting off building? Thirty minutes and it's running.
Related articles
- How to Build an AI Customer Support Chatbot in n8n — once leads are in your CRM, automate the support side of the funnel too.
- How to Build an AI WhatsApp Lead Follow-Up System in n8n — the best pairing for lead gen: instant WhatsApp follow-up the moment a qualified lead hits your CRM.
- The 5 n8n Workflow Templates Every Agency Should Have Ready — if you're building this for clients, see how lead gen fits into a full agency template library.
AI Lead Generation System
$59n8n workflow to scrape, enrich, and follow up with leads automatically.