Email Outreach Automation
by @mhmalvi
Cold email outreach pipeline with multi-step sequences, reply tracking, bounce handling, and campaign analytics. 4 production-ready n8n workflows with Google...
clawhub install email-outreach-automationπ About This Skill
name: email-outreach-automation description: Cold email outreach pipeline with multi-step sequences, reply tracking, bounce handling, and campaign analytics. 4 production-ready n8n workflows with Google Sheets CRM and SMTP integration. tags: [outreach, cold-email, sales, sequences, crm, automation, prospecting, n8n, google-sheets] author: mhmalvi version: 1.2.0 license: CC BY-NC-SA 4.0 metadata: clawdbot: emoji: "\U0001F4E7" requires: n8nCredentials: [google-sheets-oauth2, smtp] env: [OUTREACH_SECRET, OUTREACH_ADMIN_EMAIL] os: [linux, darwin, win32]
Email Outreach Automation
A complete cold email outreach pipeline built on n8n and Google Sheets. Import prospects, run multi-step email sequences, track replies, and get daily campaign reports.
Problem
Cold email outreach requires consistent followup sequences, reply detection, and status tracking across hundreds of prospects. Most tools charge $50-200/month per seat and lock you into their platform.
This system provides a free, self-hosted outreach pipeline with full control over your data and sending.
What It Does
1. Prospect Import β Webhook API to import prospects (single or batch) with validation and deduplication 2. Email Sequences β 4-step automated outreach: initial, follow-up 1 (Day 3), follow-up 2 (Day 7), breakup (Day 14) 3. Reply Tracking β Webhook to mark prospects as replied and notify your team 4. Campaign Reports β Daily metrics: reply rates, bounce rates, step distribution, per-campaign breakdown
Included Workflows
| # | File | Purpose |
|---|------|---------|
| 01 | 01-prospect-import.json | Webhook import with validation, dedup, and Sheets storage |
| 02 | 02-outreach-sequence.json | Scheduled 4-step email sequence with timing logic |
| 03 | 03-reply-tracker.json | Webhook to log replies and notify team |
| 04 | 04-campaign-report.json | Daily campaign analytics email |
Architecture
Prospect Import (webhook/CSV)
|
v
Workflow 01: Validate & Store
+-> Deduplicate by email
+-> Save to Google Sheets (status: new)Scheduled (every 4 hours):
|
v
Workflow 02: Outreach Sequence
+-> Read prospects with status != replied/bounced
+-> Check timing (Day 0/3/7/14)
+-> Send appropriate email template
+-> Update step + next_send_at in Sheets
Reply received:
|
v
Workflow 03: Reply Tracker
+-> Match email to prospect
+-> Mark as replied in Sheets
+-> Notify team via email
Daily Schedule:
|
v
Workflow 04: Campaign Report
+-> Aggregate metrics by campaign
+-> Reply rate, bounce rate, step distribution
+-> Email report to admin
Email Sequence
| Step | Timing | Template | |------|--------|----------| | 1 - Initial | Day 0 | Introduction + value proposition | | 2 - Follow-up 1 | Day 3 | Brief followup + case study mention | | 3 - Follow-up 2 | Day 7 | Different angle + call-to-action | | 4 - Breakup | Day 14 | Polite closing, leaves door open |
Required n8n Credentials
| Credential Type | Used For | Placeholder in JSON |
|----------------|----------|---------------------|
| Google Sheets OAuth2 | Prospect storage and tracking | YOUR_GOOGLE_SHEETS_CREDENTIAL_ID |
| SMTP | Sending outreach emails and reports | YOUR_SMTP_CREDENTIAL_ID |
Environment Variables
# Required
OUTREACH_SECRET=your-webhook-auth-secret
OUTREACH_ADMIN_EMAIL=admin@yourbusiness.com
Configuration Placeholders
| Placeholder | Description |
|-------------|-------------|
| YOUR_OUTREACH_SHEET_ID | Google Sheet ID for prospect data |
| YOUR_GOOGLE_SHEETS_CREDENTIAL_ID | n8n Google Sheets credential ID |
| YOUR_SMTP_CREDENTIAL_ID | n8n SMTP credential ID |
| YOUR_NOTIFICATION_EMAIL | Fallback admin email (also set via OUTREACH_ADMIN_EMAIL env) |
Google Sheets Schema (Prospects)
| Column | Type | Description | |--------|------|-------------| | email | text | Primary key, prospect email | | name | text | Prospect name | | company | text | Company name | | title | text | Job title | | campaign | text | Campaign identifier | | status | text | new / in_sequence / replied / bounced / completed | | step | number | Current sequence step (0-4) | | last_sent_at | datetime | When last email was sent | | next_send_at | datetime | When next email is due | | replied | boolean | Whether prospect replied | | replied_at | datetime | Reply timestamp | | bounced | boolean | Whether email bounced | | imported_at | datetime | Import timestamp |
Quick Start
1. Prerequisites
2. Create Prospect Sheet
Create a Google Sheet with the columns above. Name the tab "Prospects".3. Import & Configure
Import all 4 JSON files into n8n. Replace allYOUR_* placeholders.4. Import Prospects
curl -X POST https://your-n8n.com/webhook/outreach/import \
-H "Content-Type: application/json" \
-d '{
"_secret": "your-outreach-secret",
"prospects": [
{"email": "john@company.com", "name": "John", "company": "Acme Inc", "campaign": "q1-2026"}
]
}'
5. Track Replies
curl -X POST https://your-n8n.com/webhook/outreach/reply \
-H "Content-Type: application/json" \
-d '{"email": "john@company.com", "subject": "Re: Quick question", "message": "Sure, let us chat!"}'
Use Cases
1. Freelancers β Automated client prospecting with professional followup 2. Agencies β Multi-campaign outreach with per-campaign analytics 3. SaaS founders β Early-stage customer development outreach 4. Recruiters β Candidate outreach with sequenced followup 5. Sales teams β Supplement CRM with lightweight, self-hosted sequences
Requirements
β‘ When to Use
π‘ Examples
1. Prerequisites
2. Create Prospect Sheet
Create a Google Sheet with the columns above. Name the tab "Prospects".3. Import & Configure
Import all 4 JSON files into n8n. Replace allYOUR_* placeholders.4. Import Prospects
curl -X POST https://your-n8n.com/webhook/outreach/import \
-H "Content-Type: application/json" \
-d '{
"_secret": "your-outreach-secret",
"prospects": [
{"email": "john@company.com", "name": "John", "company": "Acme Inc", "campaign": "q1-2026"}
]
}'
5. Track Replies
curl -X POST https://your-n8n.com/webhook/outreach/reply \
-H "Content-Type: application/json" \
-d '{"email": "john@company.com", "subject": "Re: Quick question", "message": "Sure, let us chat!"}'