Cold Email Outreach — Automated Prospecting & Drip Pipeline
Build lists, enrich contacts, send personalized cold emails, follow up automatically.
Pipeline Overview
- Source — Pull leads from government databases, web scraping, or CSV import
- Enrich — Find emails via website scraping, Google search, or enrichment APIs
- Personalize — Generate custom email copy per lead using templates + variables
- Send — Deliver via Resend API with rate limiting and domain rotation
- Follow Up — Automated drip sequences (Day 3, Day 7)
- Track — Log opens, replies, bounces to Google Sheets or CSV
Requirements
- Resend API key —
RESEND_API_KEY(free tier: 100 emails/day) - Verified sending domain — SPF + DKIM + DMARC configured
- Google Sheets OAuth (optional) — for lead tracking
Quick Start
export RESEND_API_KEY=your_key
# Send from CSV list
node scripts/send-campaign.js --list leads.csv --template templates/intro.txt --from "hello@yourdomain.com"
# Dry run (no emails sent)
node scripts/send-campaign.js --list leads.csv --template templates/intro.txt --dry-run
# Send follow-ups
node scripts/send-followups.js --campaign campaign-2026-03-12
Email Templates
Templates use {variable} placeholders:
Subject: {subject}
Hi {first_name},
{body}
Best,
{sender_name}
Available variables: {first_name}, {business_name}, {city}, {industry}, {specific_issue}, {sender_name}, {subject}
Deliverability Rules
- Max 25 emails per domain per day (cold outreach)
- Warm up new domains: start at 5/day, increase by 5 every 3 days
- Always include physical address (CAN-SPAM)
- Include unsubscribe mechanism
- Rotate sending domains if scaling past 50/day
- Remove bounced emails immediately
- Honor unsubscribes within 24 hours
Scripts
scripts/send-campaign.js— Main campaign sender with rate limitingscripts/send-followups.js— Drip follow-up senderscripts/enrich-list.js— Email enrichment from websites
References
references/templates.md— Proven email templates with open ratesreferences/deliverability.md— Domain setup and spam prevention guide