Cold Email Outreach
Production-grade B2B cold email that sounds like it came from a person, not a sequence tool.
Table of Contents
Keywords
cold email, cold outreach, prospecting email, SDR email, sales email, first-touch email, follow-up sequence, email prospecting, outbound email, sales development, sequence building, email personalization, email deliverability, CAN-SPAM, GDPR, B2B outreach, email compliance, subject lines, reply rates, breakup email
Clarify First
Before generating the email, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
Quick Start
Write a First-Touch Email
- Define the ICP, specific problem, and outreach trigger
- Select voice calibration based on recipient seniority
- Write opener about their world (not yours)
- State relevance in 1-2 sentences with specific proof
- Close with a single, low-friction ask
- Generate 3 subject line variants
- Validate: under 150 words, no corporate speak, one CTA
Build a Full Sequence
- Write the first email (above)
- Plan 4-5 follow-ups, each with a different angle
- Set escalating gap cadence (Day 1, 4, 9, 16, 25, 35)
- Write each follow-up as a standalone (recipient does not remember earlier emails)
- End with a breakup email that closes the loop professionally
- Validate deliverability setup before sending
Core Workflows
Workflow 1: Single First-Touch Email
Step 1: Gather Context
Required information:
- Sender context: Role, company, what they sell, key proof points
- Prospect context: Job title, company type/size, likely problem, trigger for outreach
- Goal: Book a call? Get a reply? Get a referral?
Step 2: Choose Framework
| Framework |
Best When |
Structure |
| Problem-First |
Prospect has a visible pain point |
Problem observation > Relevance > Ask |
| Trigger-Based |
There is a specific event (funding, hiring, news) |
Trigger reference > Connection to problem > Ask |
| Mutual Connection |
Referral or shared network |
Name drop > Context > Ask |
| Value-First |
You have something genuinely useful to share |
Insight/resource > Brief context > Ask |
| Direct Ask |
Prospect is high-intent or very senior |
Brief context > Direct question |
Step 3: Draft the Email
Structure:
Subject: [2-4 words, looks like an internal email]
[Opener: 1 sentence about their world — trigger, observation, or question]
[Relevance: 1-2 sentences connecting their situation to what you do]
[Proof: 1 sentence of credible evidence — specific number, named customer, result]
[Ask: 1 sentence with a single, specific, low-friction CTA]
[Sign-off]
Step 4: Validate
Workflow 2: Full Sequence Build
Step 1: Write Email 1 (Using Workflow 1)
Step 2: Plan Follow-Up Angles
Each follow-up needs a distinct angle. Plan before writing:
| Email |
Day |
Angle |
What is New |
| 1 |
Day 1 |
Problem-first |
Initial outreach |
| 2 |
Day 4 |
New evidence |
Case study, data point, or recent result |
| 3 |
Day 9 |
Different pain point |
Alternative angle on their world |
| 4 |
Day 16 |
Industry insight |
Something notable about their space |
| 5 |
Day 25 |
Direct question |
Simple, clear ask without context |
| 6 |
Day 35 |
Breakup |
Professional close, referral ask |
Step 3: Write Each Follow-Up
Rules for every follow-up:
- Standalone: does not require reading previous emails
- New angle: brings something the previous email did not
- Shorter than Email 1 (each subsequent email gets shorter)
- Never says "just checking in" or "circling back"
- Never references all previous emails ("As I mentioned in my last three emails...")
Step 4: Write the Breakup Email
The breakup email closes the loop. It signals this is the last one, which paradoxically increases reply rate.
Template:
Subject: closing the loop
[Name],
Last note from me. If [specific problem] becomes a priority,
reply here and I'll pick it up.
If there's someone else at [Company] better suited for this
conversation, a name would help.
Either way — [genuine well-wish related to something specific].
[Sign-off]
Workflow 3: Performance Iteration
Step 1: Diagnose the Problem
| Symptom |
Likely Cause |
Fix |
| Low open rate (< 25%) |
Subject lines |
Test new subject line patterns |
| Opens but no replies (< 2% reply rate) |
Email body |
Rewrite with stronger relevance and lower-friction CTA |
| Replies but wrong outcome |
CTA mismatch |
Adjust the ask |
| High bounce rate (> 5%) |
List quality |
Verify email addresses before sending |
| Landing in spam |
Deliverability |
Check SPF/DKIM/DMARC, reduce send volume, warm domain |
Step 2: Rewrite the Underperforming Element
Focus on one element at a time. Do not rewrite the entire email when only the subject line is the problem.
Step 3: Test and Measure
- A/B test subject lines with minimum 100 sends per variant
- Test one variable at a time
- Wait for 3-5 days of data before drawing conclusions
- Document every test and result for future reference
Writing Principles
1. Write Like a Peer, Not a Vendor
The moment your email sounds like marketing copy, it is deleted.
Test: Would you send this to a smart colleague at another company? If not, rewrite.
2. Every Sentence Earns Its Place
Each sentence must do one of these jobs:
- Create curiosity
- Establish relevance
- Build credibility
- Drive to the ask
If a sentence does none of these, cut it.
3. Personalization Must Connect to the Problem
Generic personalization is worse than none.
- Bad: "I saw you went to Stanford" followed by a pitch unrelated to Stanford
- Good: "I saw you're hiring three SDRs — usually a signal that you're scaling cold outreach. That's exactly the challenge we help with."
The personalization must bridge to the reason for reaching out.
4. Lead with Their World, Not Yours
The opener should be about their situation, problem, or context. Not about you or your product.
5. One Ask Per Email
Do not ask them to book a call, watch a demo, read a case study, AND reply with their timeline. Pick one.
Voice Calibration by Audience
| Audience |
Length |
Tone |
Subject Style |
What Works |
| C-suite (CEO, CRO, CMO) |
3-4 sentences |
Ultra-brief, peer-level, strategic |
Short, vague, internal-looking |
Big problem > relevant proof > one question |
| VP / Director |
5-7 sentences |
Direct, metrics-conscious |
Slightly more specific |
Specific observation + clear business angle |
| Manager |
7-10 sentences |
Practical, shows homework |
Can be descriptive |
Specific problem + practical value + easy CTA |
| Technical (Engineer, Architect) |
7-10 sentences |
Precise, no fluff |
Technical specificity |
Exact problem > precise solution > low-friction ask |
| Founder / Solo |
5-7 sentences |
Empathetic, peer-to-peer |
Casual, human |
Shared experience + relevant proof + conversational ask |
Rule: The higher up the org chart, the shorter your email needs to be.
Subject Line Framework
Principles
The goal of a subject line is to get the email opened. Not to convey value, not to be clever. Just opened.
The best cold email subject lines look like internal emails: short, slightly vague, enough curiosity to click.
Patterns That Work
| Pattern |
Example |
Why It Works |
| Two or three words |
"quick question" |
Looks like a real email from a colleague |
| Specific trigger + question |
"your TechCrunch piece" |
Specific enough to not look like spam |
| Shared context |
"re: Series B" |
Feels like a follow-up, not cold |
| Observation |
"your ATS setup" |
Relevant, not salesy |
| Referral hook |
"[mutual name] suggested I reach out" |
Social proof front-loaded |
| Role-specific |
"SDR team scaling" |
Shows you know who they are |
Patterns That Kill Opens
- ALL CAPS anything
- Emojis in subject lines
- Fake Re: or Fwd: (damages trust before the first word)
- Question format ("Are you struggling with X?") — sounds like an ad
- Company name mention ("Acme Corp: helping you achieve...")
- Blog headline format ("5 ways to improve your...")
- Exclamation marks
Follow-Up Strategy
Cadence
| Email |
Send Day |
Gap |
Notes |
| Email 1 |
Day 1 |
— |
First touch |
| Email 2 |
Day 4 |
+3 days |
New evidence angle |
| Email 3 |
Day 9 |
+5 days |
Different pain point |
| Email 4 |
Day 16 |
+7 days |
Industry insight |
| Email 5 |
Day 25 |
+9 days |
Direct question |
| Breakup |
Day 35 |
+10 days |
Close the loop |
Gaps increase over time. Persistent but not annoying.
Follow-Up Angle Rotation
| Angle Type |
Description |
Example |
| New evidence |
Case study, data point, recent result |
"Since my last note, we helped [Company] reduce [metric] by [%]" |
| Different pain |
Alternative problem in their world |
"Setting aside [topic A] — are you dealing with [topic B]?" |
| Industry insight |
Something notable about their space |
"Saw [industry trend]. Most teams are responding by [approach]" |
| Direct question |
Simple ask without buildup |
"[Name], quick one: who handles [function] at [Company]?" |
| Reverse ask |
Request for referral |
"If this isn't your area, who would you point me to?" |
| Social proof |
Relevant peer doing it |
"[Similar company] just went through this — here's what worked" |
Personalization Framework
Three Tiers of Personalization
Tier 1: Segment-Level (Minimum)
- Industry-specific pain points
- Company size-specific challenges
- Role-specific language and priorities
Tier 2: Company-Level (Standard)
- Recent company news (funding, hiring, product launch)
- Tech stack signals (what tools they use)
- Growth signals (job postings, office expansion)
Tier 3: Individual-Level (Premium)
- Content they have published (posts, articles, talks)
- Career moves (new role, promotion)
- Shared connections or experiences
- Specific project or initiative they are leading
Personalization Sources
| Source |
What You Find |
How to Use |
| LinkedIn profile |
Role, tenure, content they share |
Role-specific opener, reference their posts |
| Company blog |
Priorities, culture, technology choices |
Connect your solution to their stated priorities |
| Job postings |
Growth areas, pain points, tech stack |
"You're hiring for X, which usually means..." |
| Press/news |
Funding, partnerships, launches |
Trigger-based openers |
| GitHub/tech blogs |
Technical decisions, stack choices |
Technical relevance and credibility |
| Podcast/talks |
Opinions, expertise areas |
"Your point about X in [talk] resonated..." |
Deliverability Setup
Infrastructure Requirements
| Component |
What |
Why |
| Dedicated sending domain |
mail.yourdomain.com or outreach.yourdomain.com |
Protects primary domain reputation |
| SPF record |
DNS TXT record authorizing sending servers |
Proves you are authorized to send |
| DKIM signing |
Cryptographic signature on emails |
Proves emails were not modified in transit |
| DMARC policy |
DNS record specifying SPF/DKIM enforcement |
Tells receiving servers how to handle failures |
| Domain warmup |
4-6 weeks of gradually increasing volume |
Builds sender reputation with ISPs |
Warmup Schedule
| Week |
Daily Volume |
Notes |
| 1 |
10-20 |
Send to engaged contacts only |
| 2 |
20-40 |
Mix of warm and cold contacts |
| 3 |
40-70 |
Begin cold outreach at low volume |
| 4 |
70-100 |
Monitor bounce rates closely |
| 5-6 |
100-150 |
Increase if bounce rate < 3% |
| 7+ |
150-200 max |
Steady state for cold outreach |
Deliverability Monitoring
- Bounce rate: Keep under 3% (above 5% damages reputation)
- Spam complaint rate: Keep under 0.1%
- Verify email addresses before sending (use verification services)
- Monitor blacklists monthly (MXToolbox, Google Postmaster)
- Use mail-tester.com to check deliverability score before campaigns
Email Format Rules
- Plain text or minimal HTML (no logos, images, or heavy formatting)
- No tracking pixels if possible (they trigger spam filters)
- Limit links to 1-2 maximum
- Avoid spam trigger words: "free," "guarantee," "act now," "limited time"
- Keep emails under 200 words
- Include a physical address (CAN-SPAM requirement)
- Include an unsubscribe mechanism
Compliance Requirements
CAN-SPAM (United States)
Required for all commercial email to US recipients:
GDPR (European Union)
Required for email to EU/EEA residents:
CASL (Canada)
Required for commercial electronic messages to Canadian recipients:
Best Practice Regardless of Jurisdiction
- Always include an easy unsubscribe option
- Honor opt-outs immediately (do not wait the legal maximum)
- Do not buy email lists (poor quality, compliance risk)
- Document your legal basis for outreach
- Keep records of consent and opt-out requests
Anti-Patterns
| Pattern |
Why It Fails |
| "I hope this email finds you well" |
Instant signal that this is templated mass outreach |
| "I wanted to reach out because..." |
Three words of nothing before saying anything |
| Opening with "My name is X and I work at Y" |
They can see your name. Start with something useful. |
| Feature dump in email 1 |
Nobody cares about features when they do not trust you yet |
| HTML templates with logos and colors |
Looks like marketing, gets spam-filtered |
| Fake Re:/Fwd: subject lines |
Deceptive, destroys trust |
| "Just checking in" follow-ups |
Adds no value, removes credibility |
| Social proof without context |
"We work with 500 companies" means nothing without relevance |
| Long-form case study in email 1 |
Save it for follow-up |
| Passive CTAs ("Let me know if you're interested") |
Weak. Ask a direct question or propose a specific step. |
| Multiple CTAs in one email |
Creates decision paralysis. One ask per email. |
| Sending from your primary domain |
Risks your entire domain reputation |
Best Practices
Send from a real person, not a company alias — "sarah@mail.acme.com" outperforms "sales@acme.com" every time.
Read the email aloud before sending — If you hear yourself droning, cut. If it sounds like a brochure, rewrite.
Time your sends — Tuesday through Thursday, 8-10 AM in the prospect's timezone, produces the highest open rates for B2B.
Verify emails before campaigns — A 5% bounce rate damages your domain reputation. Verify every address.
Track reply rate, not open rate — Open tracking is unreliable (privacy features block tracking pixels). Reply rate is the metric that matters.
Build sequences, not individual emails — Most replies come from follow-ups, not the first email. Plan the full sequence before writing.
Document your playbook — Every winning email, subject line, and angle should be documented for the team. Build institutional knowledge.
Respect opt-outs immediately — Not just legally required, but professionally essential. Process within 24 hours.
Rotate sending domains — Use 2-3 sending domains to distribute volume and protect reputation.
Segment relentlessly — A generic template sent to 1,000 people will underperform a personalized email sent to 50 who match your ideal profile.
Integration Points
- Copywriting — Use for landing page copy and marketing page copy. Cold email follows different constraints (shorter, personal tone, no visual design).
- Content Strategy — Use to create content assets (case studies, guides) referenced in follow-up emails.
- Marketing Context — Use for ICP definition and positioning. If you do not know who you are targeting and why, cold email is the wrong tool.
- Marketing Psychology — Apply psychological principles (reciprocity, social proof, scarcity) to strengthen email messaging.
- Campaign Analytics — Use to track sequence performance and optimize based on data.
Troubleshooting
| Symptom |
Likely Cause |
Fix |
| Open rate below 15% |
Subject lines too long, spammy, or generic |
Test 2-4 word internal-email-style subjects. Run subject_line_scorer.py. |
| Opens but reply rate below 1% |
Email body lacks relevance or CTA is too high-friction |
Rewrite opener about their world. Use a question CTA, not a statement. |
| Emails landing in spam (2026) |
Missing SPF/DKIM/DMARC or RFC 8058 one-click unsubscribe |
Gmail/Yahoo/Microsoft now reject non-compliant bulk mail. Run deliverability_checker.py. |
| Bounce rate above 3% |
Unverified email list or role-based addresses |
Verify every address before sending. Remove catch-alls and role accounts. |
| Spam complaint rate above 0.10% |
Irrelevant targeting or too-frequent sends |
Gmail enforces 0.10% threshold as of 2026. Improve targeting and reduce volume per domain. |
| Replies but wrong outcome |
CTA mismatch with funnel stage |
Align CTA friction to prospect readiness. C-suite wants a question; managers accept a demo link. |
| Domain blacklisted |
Sending from primary domain or too-high volume |
Use dedicated sending subdomains. Warm new domains 4-6 weeks. Max 100 emails/day/address. |
Success Criteria
- Open rate consistently above 35% across sequence (benchmark: 25-40% for cold B2B)
- Reply rate above 3% (benchmark: 2-5% for well-targeted cold outreach)
- Bounce rate below 2% on every campaign (Gmail/Microsoft 2026 threshold)
- Spam complaint rate below 0.10% (2026 Gmail/Yahoo hard enforcement line)
- Deliverability rate above 95% with SPF/DKIM/DMARC/RFC 8058 fully configured
- Sequence produces replies from emails 2-5, not just email 1 (follow-ups carry 60%+ of replies)
- Every email under 150 words with one CTA and zero corporate speak
Scope & Limitations
In Scope:
- B2B cold email outreach strategy and copy
- Multi-email sequence design and optimization
- Subject line and body copy frameworks
- Deliverability infrastructure setup (SPF, DKIM, DMARC, domain warming)
- CAN-SPAM, GDPR, CASL compliance guidance
- Performance diagnosis and iteration methodology
Out of Scope:
- Email HTML template design (use email-template-builder)
- Marketing automation platform configuration (Outreach, Salesloft, Apollo)
- Email list building or scraping (compliance risk)
- Warm/inbound email sequences (use email-sequence)
- Phone call scripts or LinkedIn outreach sequences
- Legal advice on compliance (consult legal counsel for jurisdiction-specific requirements)
Limitations:
- Scripts use heuristic analysis, not live inbox testing (use mail-tester.com for production validation)
- Deliverability checker cannot perform live DNS lookups (verify SPF/DKIM/DMARC records separately)
- Benchmarks are B2B SaaS-focused; adjust thresholds for other industries
Python Automation Tools
1. Subject Line Scorer (scripts/subject_line_scorer.py)
Scores cold email subject lines on deliverability, spam risk, and open-rate potential using deterministic heuristics.
python scripts/subject_line_scorer.py "quick question"
python scripts/subject_line_scorer.py --file subjects.txt --json
2. Deliverability Checker (scripts/deliverability_checker.py)
Audits email content for spam triggers, HTML complexity, link density, and compliance against 2025-2026 Gmail/Yahoo/Microsoft requirements.
python scripts/deliverability_checker.py email.txt
python scripts/deliverability_checker.py email.txt --domain yourdomain.com --json
3. Sequence Optimizer (scripts/sequence_optimizer.py)
Analyzes cold email sequence performance data against industry benchmarks. Diagnoses open rate, reply rate, bounce rate, and cadence issues.
python scripts/sequence_optimizer.py sequence_data.json
python scripts/sequence_optimizer.py --sample --json
1---2name: cold-email-23description: Write and optimize B2B cold email outreach sequences that get replies, covering personalization, follow-up cadence, deliverability, and compliance. Use when writing cold outreach, prospecting/SDR emails, or building outbound sequences.4license: MIT5---6# Cold Email Outreach
7
8Production-grade B2B cold email that sounds like it came from a person, not a sequence tool.
9
10---
11
12## Table of Contents
13
14- [Keywords](#keywords)
15- [Quick Start](#quick-start)
16- [Core Workflows](#core-workflows)
17- [Writing Principles](#writing-principles)
18- [Voice Calibration by Audience](#voice-calibration-by-audience)
19- [Subject Line Framework](#subject-line-framework)
20- [Follow-Up Strategy](#follow-up-strategy)
21- [Personalization Framework](#personalization-framework)
22- [Deliverability Setup](#deliverability-setup)
23- [Compliance Requirements](#compliance-requirements)
24- [Anti-Patterns](#anti-patterns)
25- [Best Practices](#best-practices)
26- [Integration Points](#integration-points)
27
28---
29
30## Keywords
31
32cold email, cold outreach, prospecting email, SDR email, sales email, first-touch email, follow-up sequence, email prospecting, outbound email, sales development, sequence building, email personalization, email deliverability, CAN-SPAM, GDPR, B2B outreach, email compliance, subject lines, reply rates, breakup email
33
34---
35
36## Clarify First
37
38Before generating the email, confirm these inputs. If any is unknown or vague, ASK — do not assume:
39
40- [ ] **ICP / prospect context** — job title, company type/size, seniority (drives the opener, relevance, and voice calibration)
41- [ ] **Specific problem + outreach trigger** — the pain and why now (selects the framework and shapes the opener)
42- [ ] **The one proof point** — a specific number, named customer, or result (drives the credibility line)
43- [ ] **The single CTA / goal** — book a call, get a reply, or get a referral (drives the one ask)
44
45Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
46
47## Quick Start
48
49### Write a First-Touch Email
50
511. Define the ICP, specific problem, and outreach trigger
522. Select voice calibration based on recipient seniority
533. Write opener about their world (not yours)
544. State relevance in 1-2 sentences with specific proof
555. Close with a single, low-friction ask
566. Generate 3 subject line variants
577. Validate: under 150 words, no corporate speak, one CTA
58
59### Build a Full Sequence
60
611. Write the first email (above)
622. Plan 4-5 follow-ups, each with a different angle
633. Set escalating gap cadence (Day 1, 4, 9, 16, 25, 35)
644. Write each follow-up as a standalone (recipient does not remember earlier emails)
655. End with a breakup email that closes the loop professionally
666. Validate deliverability setup before sending
67
68---
69
70## Core Workflows
71
72### Workflow 1: Single First-Touch Email
73
74**Step 1: Gather Context**
75
76Required information:
77- **Sender context**: Role, company, what they sell, key proof points
78- **Prospect context**: Job title, company type/size, likely problem, trigger for outreach
79- **Goal**: Book a call? Get a reply? Get a referral?
80
81**Step 2: Choose Framework**
82
83| Framework | Best When | Structure |
84|-----------|-----------|-----------|
85| Problem-First | Prospect has a visible pain point | Problem observation > Relevance > Ask |
86| Trigger-Based | There is a specific event (funding, hiring, news) | Trigger reference > Connection to problem > Ask |
87| Mutual Connection | Referral or shared network | Name drop > Context > Ask |
88| Value-First | You have something genuinely useful to share | Insight/resource > Brief context > Ask |
89| Direct Ask | Prospect is high-intent or very senior | Brief context > Direct question |
90
91**Step 3: Draft the Email**
92
93Structure:
94```
95Subject: [2-4 words, looks like an internal email]
96
97[Opener: 1 sentence about their world — trigger, observation, or question]
98
99[Relevance: 1-2 sentences connecting their situation to what you do]
100
101[Proof: 1 sentence of credible evidence — specific number, named customer, result]
102
103[Ask: 1 sentence with a single, specific, low-friction CTA]
104
105[Sign-off]
106```
107
108**Step 4: Validate**
109
110- [ ] Under 150 words total
111- [ ] Opener is about them, not you
112- [ ] No sentence starts with "I" or "We"
113- [ ] One CTA, not multiple
114- [ ] CTA is a question, not a statement
115- [ ] No jargon or corporate speak
116- [ ] Would a friend send this to another friend in business?
117
118### Workflow 2: Full Sequence Build
119
120**Step 1: Write Email 1 (Using Workflow 1)**
121
122**Step 2: Plan Follow-Up Angles**
123
124Each follow-up needs a distinct angle. Plan before writing:
125
126| Email | Day | Angle | What is New |
127|-------|-----|-------|-------------|
128| 1 | Day 1 | Problem-first | Initial outreach |
129| 2 | Day 4 | New evidence | Case study, data point, or recent result |
130| 3 | Day 9 | Different pain point | Alternative angle on their world |
131| 4 | Day 16 | Industry insight | Something notable about their space |
132| 5 | Day 25 | Direct question | Simple, clear ask without context |
133| 6 | Day 35 | Breakup | Professional close, referral ask |
134
135**Step 3: Write Each Follow-Up**
136
137Rules for every follow-up:
138- Standalone: does not require reading previous emails
139- New angle: brings something the previous email did not
140- Shorter than Email 1 (each subsequent email gets shorter)
141- Never says "just checking in" or "circling back"
142- Never references all previous emails ("As I mentioned in my last three emails...")
143
144**Step 4: Write the Breakup Email**
145
146The breakup email closes the loop. It signals this is the last one, which paradoxically increases reply rate.
147
148Template:
149```
150Subject: closing the loop
151
152[Name],
153
154Last note from me. If [specific problem] becomes a priority,
155reply here and I'll pick it up.
156
157If there's someone else at [Company] better suited for this
158conversation, a name would help.
159
160Either way — [genuine well-wish related to something specific].
161
162[Sign-off]
163```
164
165### Workflow 3: Performance Iteration
166
167**Step 1: Diagnose the Problem**
168
169| Symptom | Likely Cause | Fix |
170|---------|-------------|-----|
171| Low open rate (< 25%) | Subject lines | Test new subject line patterns |
172| Opens but no replies (< 2% reply rate) | Email body | Rewrite with stronger relevance and lower-friction CTA |
173| Replies but wrong outcome | CTA mismatch | Adjust the ask |
174| High bounce rate (> 5%) | List quality | Verify email addresses before sending |
175| Landing in spam | Deliverability | Check SPF/DKIM/DMARC, reduce send volume, warm domain |
176
177**Step 2: Rewrite the Underperforming Element**
178
179Focus on one element at a time. Do not rewrite the entire email when only the subject line is the problem.
180
181**Step 3: Test and Measure**
182
183- A/B test subject lines with minimum 100 sends per variant
184- Test one variable at a time
185- Wait for 3-5 days of data before drawing conclusions
186- Document every test and result for future reference
187
188---
189
190## Writing Principles
191
192### 1. Write Like a Peer, Not a Vendor
193
194The moment your email sounds like marketing copy, it is deleted.
195
196**Test:** Would you send this to a smart colleague at another company? If not, rewrite.
197
198### 2. Every Sentence Earns Its Place
199
200Each sentence must do one of these jobs:
201- Create curiosity
202- Establish relevance
203- Build credibility
204- Drive to the ask
205
206If a sentence does none of these, cut it.
207
208### 3. Personalization Must Connect to the Problem
209
210Generic personalization is worse than none.
211
212- Bad: "I saw you went to Stanford" followed by a pitch unrelated to Stanford
213- Good: "I saw you're hiring three SDRs — usually a signal that you're scaling cold outreach. That's exactly the challenge we help with."
214
215The personalization must bridge to the reason for reaching out.
216
217### 4. Lead with Their World, Not Yours
218
219The opener should be about their situation, problem, or context. Not about you or your product.
220
221### 5. One Ask Per Email
222
223Do not ask them to book a call, watch a demo, read a case study, AND reply with their timeline. Pick one.
224
225---
226
227## Voice Calibration by Audience
228
229| Audience | Length | Tone | Subject Style | What Works |
230|----------|--------|------|---------------|------------|
231| C-suite (CEO, CRO, CMO) | 3-4 sentences | Ultra-brief, peer-level, strategic | Short, vague, internal-looking | Big problem > relevant proof > one question |
232| VP / Director | 5-7 sentences | Direct, metrics-conscious | Slightly more specific | Specific observation + clear business angle |
233| Manager | 7-10 sentences | Practical, shows homework | Can be descriptive | Specific problem + practical value + easy CTA |
234| Technical (Engineer, Architect) | 7-10 sentences | Precise, no fluff | Technical specificity | Exact problem > precise solution > low-friction ask |
235| Founder / Solo | 5-7 sentences | Empathetic, peer-to-peer | Casual, human | Shared experience + relevant proof + conversational ask |
236
237Rule: The higher up the org chart, the shorter your email needs to be.
238
239---
240
241## Subject Line Framework
242
243### Principles
244
245The goal of a subject line is to get the email opened. Not to convey value, not to be clever. Just opened.
246
247The best cold email subject lines look like internal emails: short, slightly vague, enough curiosity to click.
248
249### Patterns That Work
250
251| Pattern | Example | Why It Works |
252|---------|---------|-------------|
253| Two or three words | "quick question" | Looks like a real email from a colleague |
254| Specific trigger + question | "your TechCrunch piece" | Specific enough to not look like spam |
255| Shared context | "re: Series B" | Feels like a follow-up, not cold |
256| Observation | "your ATS setup" | Relevant, not salesy |
257| Referral hook | "[mutual name] suggested I reach out" | Social proof front-loaded |
258| Role-specific | "SDR team scaling" | Shows you know who they are |
259
260### Patterns That Kill Opens
261
262- ALL CAPS anything
263- Emojis in subject lines
264- Fake Re: or Fwd: (damages trust before the first word)
265- Question format ("Are you struggling with X?") — sounds like an ad
266- Company name mention ("Acme Corp: helping you achieve...")
267- Blog headline format ("5 ways to improve your...")
268- Exclamation marks
269
270---
271
272## Follow-Up Strategy
273
274### Cadence
275
276| Email | Send Day | Gap | Notes |
277|-------|----------|-----|-------|
278| Email 1 | Day 1 | — | First touch |
279| Email 2 | Day 4 | +3 days | New evidence angle |
280| Email 3 | Day 9 | +5 days | Different pain point |
281| Email 4 | Day 16 | +7 days | Industry insight |
282| Email 5 | Day 25 | +9 days | Direct question |
283| Breakup | Day 35 | +10 days | Close the loop |
284
285Gaps increase over time. Persistent but not annoying.
286
287### Follow-Up Angle Rotation
288
289| Angle Type | Description | Example |
290|-----------|-------------|---------|
291| New evidence | Case study, data point, recent result | "Since my last note, we helped [Company] reduce [metric] by [%]" |
292| Different pain | Alternative problem in their world | "Setting aside [topic A] — are you dealing with [topic B]?" |
293| Industry insight | Something notable about their space | "Saw [industry trend]. Most teams are responding by [approach]" |
294| Direct question | Simple ask without buildup | "[Name], quick one: who handles [function] at [Company]?" |
295| Reverse ask | Request for referral | "If this isn't your area, who would you point me to?" |
296| Social proof | Relevant peer doing it | "[Similar company] just went through this — here's what worked" |
297
298---
299
300## Personalization Framework
301
302### Three Tiers of Personalization
303
304**Tier 1: Segment-Level (Minimum)**
305- Industry-specific pain points
306- Company size-specific challenges
307- Role-specific language and priorities
308
309**Tier 2: Company-Level (Standard)**
310- Recent company news (funding, hiring, product launch)
311- Tech stack signals (what tools they use)
312- Growth signals (job postings, office expansion)
313
314**Tier 3: Individual-Level (Premium)**
315- Content they have published (posts, articles, talks)
316- Career moves (new role, promotion)
317- Shared connections or experiences
318- Specific project or initiative they are leading
319
320### Personalization Sources
321
322| Source | What You Find | How to Use |
323|--------|--------------|-----------|
324| LinkedIn profile | Role, tenure, content they share | Role-specific opener, reference their posts |
325| Company blog | Priorities, culture, technology choices | Connect your solution to their stated priorities |
326| Job postings | Growth areas, pain points, tech stack | "You're hiring for X, which usually means..." |
327| Press/news | Funding, partnerships, launches | Trigger-based openers |
328| GitHub/tech blogs | Technical decisions, stack choices | Technical relevance and credibility |
329| Podcast/talks | Opinions, expertise areas | "Your point about X in [talk] resonated..." |
330
331---
332
333## Deliverability Setup
334
335### Infrastructure Requirements
336
337| Component | What | Why |
338|-----------|------|-----|
339| Dedicated sending domain | mail.yourdomain.com or outreach.yourdomain.com | Protects primary domain reputation |
340| SPF record | DNS TXT record authorizing sending servers | Proves you are authorized to send |
341| DKIM signing | Cryptographic signature on emails | Proves emails were not modified in transit |
342| DMARC policy | DNS record specifying SPF/DKIM enforcement | Tells receiving servers how to handle failures |
343| Domain warmup | 4-6 weeks of gradually increasing volume | Builds sender reputation with ISPs |
344
345### Warmup Schedule
346
347| Week | Daily Volume | Notes |
348|------|-------------|-------|
349| 1 | 10-20 | Send to engaged contacts only |
350| 2 | 20-40 | Mix of warm and cold contacts |
351| 3 | 40-70 | Begin cold outreach at low volume |
352| 4 | 70-100 | Monitor bounce rates closely |
353| 5-6 | 100-150 | Increase if bounce rate < 3% |
354| 7+ | 150-200 max | Steady state for cold outreach |
355
356### Deliverability Monitoring
357
358- Bounce rate: Keep under 3% (above 5% damages reputation)
359- Spam complaint rate: Keep under 0.1%
360- Verify email addresses before sending (use verification services)
361- Monitor blacklists monthly (MXToolbox, Google Postmaster)
362- Use mail-tester.com to check deliverability score before campaigns
363
364### Email Format Rules
365
366- Plain text or minimal HTML (no logos, images, or heavy formatting)
367- No tracking pixels if possible (they trigger spam filters)
368- Limit links to 1-2 maximum
369- Avoid spam trigger words: "free," "guarantee," "act now," "limited time"
370- Keep emails under 200 words
371- Include a physical address (CAN-SPAM requirement)
372- Include an unsubscribe mechanism
373
374---
375
376## Compliance Requirements
377
378### CAN-SPAM (United States)
379
380Required for all commercial email to US recipients:
381- [ ] Sender identity is clear and not misleading
382- [ ] Subject line is not deceptive
383- [ ] Physical postal address included
384- [ ] Opt-out mechanism present and functional
385- [ ] Opt-out requests honored within 10 business days
386- [ ] Message identified as an advertisement (if applicable)
387
388### GDPR (European Union)
389
390Required for email to EU/EEA residents:
391- [ ] Legitimate interest basis documented for B2B outreach
392- [ ] Prospect data collected from lawful sources
393- [ ] Privacy notice accessible
394- [ ] Data processing records maintained
395- [ ] Right to erasure honored promptly
396- [ ] Data minimization: only collect what you need
397- [ ] No consent required for B2B if legitimate interest applies, but this must be documented and defensible
398
399### CASL (Canada)
400
401Required for commercial electronic messages to Canadian recipients:
402- [ ] Express or implied consent documented
403- [ ] Sender identification clear
404- [ ] Unsubscribe mechanism functional
405- [ ] Implied consent valid for 2 years from last transaction or 6 months from inquiry
406
407### Best Practice Regardless of Jurisdiction
408
409- Always include an easy unsubscribe option
410- Honor opt-outs immediately (do not wait the legal maximum)
411- Do not buy email lists (poor quality, compliance risk)
412- Document your legal basis for outreach
413- Keep records of consent and opt-out requests
414
415---
416
417## Anti-Patterns
418
419| Pattern | Why It Fails |
420|---------|-------------|
421| "I hope this email finds you well" | Instant signal that this is templated mass outreach |
422| "I wanted to reach out because..." | Three words of nothing before saying anything |
423| Opening with "My name is X and I work at Y" | They can see your name. Start with something useful. |
424| Feature dump in email 1 | Nobody cares about features when they do not trust you yet |
425| HTML templates with logos and colors | Looks like marketing, gets spam-filtered |
426| Fake Re:/Fwd: subject lines | Deceptive, destroys trust |
427| "Just checking in" follow-ups | Adds no value, removes credibility |
428| Social proof without context | "We work with 500 companies" means nothing without relevance |
429| Long-form case study in email 1 | Save it for follow-up |
430| Passive CTAs ("Let me know if you're interested") | Weak. Ask a direct question or propose a specific step. |
431| Multiple CTAs in one email | Creates decision paralysis. One ask per email. |
432| Sending from your primary domain | Risks your entire domain reputation |
433
434---
435
436## Best Practices
437
4381. **Send from a real person, not a company alias** — "sarah@mail.acme.com" outperforms "sales@acme.com" every time.
439
4402. **Read the email aloud before sending** — If you hear yourself droning, cut. If it sounds like a brochure, rewrite.
441
4423. **Time your sends** — Tuesday through Thursday, 8-10 AM in the prospect's timezone, produces the highest open rates for B2B.
443
4444. **Verify emails before campaigns** — A 5% bounce rate damages your domain reputation. Verify every address.
445
4465. **Track reply rate, not open rate** — Open tracking is unreliable (privacy features block tracking pixels). Reply rate is the metric that matters.
447
4486. **Build sequences, not individual emails** — Most replies come from follow-ups, not the first email. Plan the full sequence before writing.
449
4507. **Document your playbook** — Every winning email, subject line, and angle should be documented for the team. Build institutional knowledge.
451
4528. **Respect opt-outs immediately** — Not just legally required, but professionally essential. Process within 24 hours.
453
4549. **Rotate sending domains** — Use 2-3 sending domains to distribute volume and protect reputation.
455
45610. **Segment relentlessly** — A generic template sent to 1,000 people will underperform a personalized email sent to 50 who match your ideal profile.
457
458---
459
460## Integration Points
461
462- **Copywriting** — Use for landing page copy and marketing page copy. Cold email follows different constraints (shorter, personal tone, no visual design).
463- **Content Strategy** — Use to create content assets (case studies, guides) referenced in follow-up emails.
464- **Marketing Context** — Use for ICP definition and positioning. If you do not know who you are targeting and why, cold email is the wrong tool.
465- **Marketing Psychology** — Apply psychological principles (reciprocity, social proof, scarcity) to strengthen email messaging.
466- **Campaign Analytics** — Use to track sequence performance and optimize based on data.
467
468---
469
470## Troubleshooting
471
472| Symptom | Likely Cause | Fix |
473|---------|-------------|-----|
474| Open rate below 15% | Subject lines too long, spammy, or generic | Test 2-4 word internal-email-style subjects. Run `subject_line_scorer.py`. |
475| Opens but reply rate below 1% | Email body lacks relevance or CTA is too high-friction | Rewrite opener about their world. Use a question CTA, not a statement. |
476| Emails landing in spam (2026) | Missing SPF/DKIM/DMARC or RFC 8058 one-click unsubscribe | Gmail/Yahoo/Microsoft now reject non-compliant bulk mail. Run `deliverability_checker.py`. |
477| Bounce rate above 3% | Unverified email list or role-based addresses | Verify every address before sending. Remove catch-alls and role accounts. |
478| Spam complaint rate above 0.10% | Irrelevant targeting or too-frequent sends | Gmail enforces 0.10% threshold as of 2026. Improve targeting and reduce volume per domain. |
479| Replies but wrong outcome | CTA mismatch with funnel stage | Align CTA friction to prospect readiness. C-suite wants a question; managers accept a demo link. |
480| Domain blacklisted | Sending from primary domain or too-high volume | Use dedicated sending subdomains. Warm new domains 4-6 weeks. Max 100 emails/day/address. |
481
482---
483
484## Success Criteria
485
486- Open rate consistently above 35% across sequence (benchmark: 25-40% for cold B2B)
487- Reply rate above 3% (benchmark: 2-5% for well-targeted cold outreach)
488- Bounce rate below 2% on every campaign (Gmail/Microsoft 2026 threshold)
489- Spam complaint rate below 0.10% (2026 Gmail/Yahoo hard enforcement line)
490- Deliverability rate above 95% with SPF/DKIM/DMARC/RFC 8058 fully configured
491- Sequence produces replies from emails 2-5, not just email 1 (follow-ups carry 60%+ of replies)
492- Every email under 150 words with one CTA and zero corporate speak
493
494---
495
496## Scope & Limitations
497
498**In Scope:**
499- B2B cold email outreach strategy and copy
500- Multi-email sequence design and optimization
501- Subject line and body copy frameworks
502- Deliverability infrastructure setup (SPF, DKIM, DMARC, domain warming)
503- CAN-SPAM, GDPR, CASL compliance guidance
504- Performance diagnosis and iteration methodology
505
506**Out of Scope:**
507- Email HTML template design (use email-template-builder)
508- Marketing automation platform configuration (Outreach, Salesloft, Apollo)
509- Email list building or scraping (compliance risk)
510- Warm/inbound email sequences (use email-sequence)
511- Phone call scripts or LinkedIn outreach sequences
512- Legal advice on compliance (consult legal counsel for jurisdiction-specific requirements)
513
514**Limitations:**
515- Scripts use heuristic analysis, not live inbox testing (use mail-tester.com for production validation)
516- Deliverability checker cannot perform live DNS lookups (verify SPF/DKIM/DMARC records separately)
517- Benchmarks are B2B SaaS-focused; adjust thresholds for other industries
518
519---
520
521## Python Automation Tools
522
523### 1. Subject Line Scorer (`scripts/subject_line_scorer.py`)
524Scores cold email subject lines on deliverability, spam risk, and open-rate potential using deterministic heuristics.
525
526```bash
527python scripts/subject_line_scorer.py "quick question"
528python scripts/subject_line_scorer.py --file subjects.txt --json
529```
530
531### 2. Deliverability Checker (`scripts/deliverability_checker.py`)
532Audits email content for spam triggers, HTML complexity, link density, and compliance against 2025-2026 Gmail/Yahoo/Microsoft requirements.
533
534```bash
535python scripts/deliverability_checker.py email.txt
536python scripts/deliverability_checker.py email.txt --domain yourdomain.com --json
537```
538
539### 3. Sequence Optimizer (`scripts/sequence_optimizer.py`)
540Analyzes cold email sequence performance data against industry benchmarks. Diagnoses open rate, reply rate, bounce rate, and cadence issues.
541
542```bash
543python scripts/sequence_optimizer.py sequence_data.json
544python scripts/sequence_optimizer.py --sample --json
545```