lead-enrichment-pipeline
# Lead Capture & Tracking Pipeline 🎯
Capture leads from any source, deduplicate by email, score by intent, track in Google Sheets, and notify your team — all automatically via n8n workflows.
## Problem
Leads come from multiple sources (website forms, newsletters, strategy calls, product waitlists). Manually entering them into a CRM and following up is error-prone and slow. Hot leads go cold.
This pipeline captures, deduplicates, scores, and routes leads in real-time.
## What It Does
1. **Capture** — Receives leads from webhooks (website forms, landing pages, chatbots)
2. **Deduplicate** — Checks Google Sheets for existing leads (email match via `appendOrUpdate`)
3. **Score** — Basic lead scoring based on source type and engagement signals
4. **Store** — Appends to Google Sheets with scoring data
5. **Notify** — Emails team with lead details and suggested next action
> **Note:** This pipeline does not include third-party enrichment integrations (e.g., Clearbit, FullContact). To add enrichment, insert an HTTP Request node between the webhook and the Sheets node in the workflow, calling your preferred enrichment API.
## Included Workflows
| # | File | Purpose |
|---|------|---------|
| 1 | `lead-tracker.json` | Webhook → deduplicate → store in Sheets → notify owner |
| 2 | `lead-magnet.json` | Lead magnet download → store lead → send PDF attachment email |
| 3 | `newsletter.json` | Newsletter signup → store subscriber → send welcome email |
## Architecture
```
Lead Source (form, chatbot, API)
│
▼
Webhook Endpoint (n8n)
│
├── Validate required fields (name, email)
├── Check for duplicates (email match in Sheets)
│
├── IF new lead:
│ ├── Score lead (source type + available fields)
│ ├── Append to Google Sheets
│ └── Send notification email to team
│
└── IF existing lead:
├── Update engagement count
└── Log new touchpoint
```
## Required n8n Credentials
You must create these credentials in your n8n instance before importing:
| Credential Type | Used For | Placeholder in JSON |
|----------------|----------|---------------------|
| Google Sheets OAuth2 | Reading/writing lead data | `YOUR_GOOGLE_SHEETS_CREDENTIAL_ID` |
| SMTP (Gmail or custom) | Sending notification and welcome emails | `YOUR_SMTP_CREDENTIAL_ID` |
After importing, open each workflow and reconnect the credential nodes to your own credentials.
## Configuration Placeholders
Replace these placeholders in the workflow JSON before deploying:
| Placeholder | Description |
|-------------|-------------|
| `YOUR_LEADS_SHEET_ID` | Your Google Sheet ID for lead tracking |
| `YOUR_GOOGLE_SHEETS_CREDENTIAL_ID` | Your n8n Google Sheets credential ID |
| `YOUR_SMTP_CREDENTIAL_ID` | Your n8n SMTP credential ID |
| `YOUR_FROM_EMAIL` | Sender email address |
| `YOUR_NOTIFICATION_EMAIL` | Where to send lead notifications |
| `YOUR_NAME` | Your name for email templates |
| `YOUR_DOMAIN` | Your website domain for email links |
## Supported Lead Sources
| Source | Webhook Path | Fields |
|--------|-------------|--------|
| Newsletter signup | `/webhook/newsletter` | email |
| Lead magnet download | `/webhook/lead-magnet` | name, email, company |
| Strategy call booking | `/webhook/strategy-call` | name, email, phone, company, message |
| Product waitlist | `/webhook/product-waitlist` | name, email |
| Contact form | `/webhook/contact` | name, email, subject, message |
| Custom | `/webhook/add-lead-enriched` | Any JSON payload |
## Google Sheets Schema
| Column | Type | Description |
|--------|------|-------------|
| name | text | Full name |
| email | text | Email address (primary key for dedup) |
| company | text | Company name |
| phone | text | Phone number |
| source | text | Where they came from |
| score | number | Lead score (0-100) |
| status | text | new / contacted / qualified / converted |
| created_at | date | First captured |
| updated_at | date | Last activity |
| touchpoints | number | Total interactions |
| notes | text | Additional notes |
## Quick Start
### 1. Prerequisites
- n8n v2.4+ (self-hosted or cloud)
- Google Sheets API credentials (OAuth2)
- SMTP email credentials (Gmail or custom)
### 2. Create Tracking Sheet
Set up a Google Sheet with the columns above. Enable `appendOrUpdate` matching on `email` column to prevent duplicates.
### 3. Import Workflows
Import the 3 JSON files from the `workflows/` directory into n8n. Replace all `YOUR_*` placeholders with your actual values.
### 4. Test
```bash
curl -X POST https://your-n8n.com/webhook/add-lead-enriched \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@company.com",
"company": "Acme Inc",
"source": "website-contact"
}'
```
## Lead Scoring
| Factor | Points | Example |
|--------|--------|---------|
| Source: Strategy call | +40 | High intent |
| Source: Lead magnet | +25 | Medium intent |
| Source: Newsletter | +10 | Low intent |
| Has company name | +10 | B2B signal |
| Has phone number | +15 | Ready to talk |
| Repeat visitor | +10 per touchpoint | Engaged |
## Use Cases
1. **Freelancers** — Track inbound leads from website contact forms
2. **Agencies** — Multi-source lead capture with team notifications
3. **SaaS** — Waitlist management with scoring
4. **Content creators** — Newsletter subscriber tracking with engagement scoring
5. **eCommerce** — Customer inquiry pipeline
## Requirements
- n8n v2.4+ (self-hosted or cloud)
- Google Sheets OAuth2 credentials
- SMTP email credentials
标签
skill
ai