# Cold Emailing

> Write, review, or improve cold outreach emails and sequences (B2B sales, SMMA, agency, job-seeker, or partnership outreach). Use this whenever the user asks to draft a cold email, write a follow-up sequence, improve their reply/open rates, critique an existing cold email, build a subject line, or plan list segmentation/targeting for outbound. Trigger even if they just paste a draft email and ask "does this work" or "how do I improve this."

- Skill: `ralf-claude-skills/cold-emailing` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add ralf-claude-skills/cold-emailing`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ralf-claude-skills/cold-emailing/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: ralf-claude-skills (https://skillmd.com/u/ralf-claude-skills)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/ralf-claude-skills/cold-emailing

---


# Cold Emailing

A framework for writing high-reply-rate cold emails and sequences, synthesized from analysis of multiple cold-email training sources (see `references/source-report.md` for full citations and a contradiction-resolution table).

## Core principle

A cold email's only job is to earn a reply — not to close a deal. It must (1) prove relevance in the first 5 seconds, and (2) answer "what's in it for me" immediately. Never lead with yourself.

## Ready-made vertical templates

`templates/roofing.md`, `templates/moving.md`, `templates/hvac.md`,
`templates/plumbing.md` — 3-email sequences for pitching an AI
chatbot/voice-agent offer to home-service business owners. Use these as a
starting structure, not verbatim copy — swap in the prospect's real details.

Supporting playbooks: `playbooks/send-timing.md` (when to send per vertical),
`playbooks/reply-handler.md` (what to do when someone replies),
`playbooks/pre-send-checklist.md` (full pre-send audit).

These templates have been updated for Hormozi compliance (see §Hormozi
Compliance below). Each sequence now leads with dream outcome, includes a
price-anchor in Email 2, and closes with a soft guarantee in Email 3.

---

## Hormozi Compliance

Cold emails earn the reply. The offer closes the deal. These are separate
jobs — and the email skill only handles the first one.

Before sending any sequence, validate your offer against these three
checkpoints. If you skip this, a well-written email will still convert
poorly.

### Checkpoint 1 — Outcome framing
Every Email 1 must open with what the prospect *gets*, not what your
product *does*.

- ❌ "We set up chatbots that capture leads"
- ✅ "We get you extra booked jobs from leads you're currently losing to voicemail"

The templates enforce this. If you customize Email 1, re-apply the test
before sending.

### Checkpoint 2 — Price anchor (Email 2)
Email 2 must reframe your price as a replacement cost, not an expense. The
standard anchor for all four verticals:

> "An answering service runs $200–500/month and still can't book the job.
> This handles it — usually for less."

Verify current answering service pricing before citing. The $200–500 range
reflects AnswerConnect/PATLive/Ruby as of mid-2025.

### Checkpoint 3 — Guarantee (Email 3)
Every breakup email includes a soft guarantee. Default:

> "If you don't book at least one extra [job type] in the first 30 days,
> we'll refund the setup fee."

**Only use this if your actual offer includes it.** If it doesn't, replace
with one of:
- A named case study from your own clients (strongest)
- A pilot offer (free first 30 days, cancel anytime)
- A directional proof point framed qualitatively

Hormozi hierarchy: Unconditional guarantee > Conditional guarantee > Named
case study > Pilot offer. Pick your rung before writing Email 3.

Do not put a guarantee in an email that your offer doesn't back up.

### The one conflict with cold-emailing's 80-word rule
When you have a real guarantee or a named case study, Email 3 may run
slightly over 80 words. That's acceptable — a strong proof point outweighs
the word-count rule. Do not cut the guarantee to fit the limit.

---

## Capacity Pre-Check (run before targeting)

The offer solves a lead-capture problem. It does NOT solve a capacity
problem. If the prospect is already booked out, more leads = more declined
bookings = more bad reviews = churn and negative word-of-mouth.

**Before adding a company to your list, check for over-capacity signals:**
- Google Business: response time shown as "usually responds in a few days"
- Google Business: "temporarily closed" or booking unavailable
- Recent reviews (last 30 days) mention long wait times or unresponsive staff
- Owner's social media indicates they're slammed

Target owners with available capacity, or explicitly time sends for
pre-season (see `playbooks/send-timing.md`).

---

## Who Actually Reads the Email (Gatekeeper Reality)

In home-service businesses under ~$2M revenue, the owner's email is often
screened by an office manager, dispatcher, or spouse. The sequence is
written owner-to-owner, but the first reader may not be the owner.

**Gatekeeper-safe design rules:**
- CTA must be answerable by a gatekeeper ("Mind if I send a short video?"
  can be forwarded; "Worth 10 minutes on a call?" cannot)
- Don't use language that implies the owner is the only person who can
  understand the offer ("as a business owner, you know...")
- Make Email 1 so short and clear that forwarding it takes one click

---

## Burned Phrases — Spam and Pattern Risk

Even with perfect technical deliverability (SPF/DKIM/DMARC), these phrases
increase classifier risk. Avoid in cold sequences:

| Phrase | Why | Replace with |
|--------|-----|--------------|
| "AI chatbot" | Promotional classifier trigger | "automated system", "voice agent", "intake system" |
| "book automatically" | Spam signal in volume sends | "schedules the call", "puts it on your calendar" |
| "Mind if I send" (repeated across all 4 templates verbatim) | Pattern-matched at scale | Vary per template — see individual templates |
| Any link in Email 1 | Raises spam score on first touch | Plain text only in Email 1; unsubscribe link from Email 2 onward |

Note on unsubscribe links: CAN-SPAM requires an opt-out mechanism in
commercial emails. If your sending tool (Instantly, Smartlead, n8n+SMTP)
auto-appends a plain-text unsubscribe footer, that satisfies the requirement
without adding a clickable link to Email 1. Verify your tool's behavior.

---

## Reply SLA — Intent Is Perishable

A contractor who replies at 7:15am between jobs has a 2-hour window before
he's back on a roof and has mentally moved on. Reply rate and conversion
rate decouple entirely if response is slow.

**Required:** define your reply SLA before sending. Recommended:
- Business hours (8am–6pm): reply within 1 hour
- After-hours reply: respond first thing next morning with a Loom or short video

**What to say when someone replies "tell me more":**
See `playbooks/reply-handler.md` for scripts.

---

## Measurement Framework

Without this, you can't distinguish bad copy from a bad list from bad timing.

| Metric | Benchmark | Action if below |
|--------|-----------|-----------------|
| Open rate | 40–60% | Deliverability problem — check domain health, subject lines |
| Reply rate | 2–5% | Copy or list problem — A/B test Email 1 opener |
| Reply → call booked | 30–50% | Reply handler problem — see playbooks/reply-handler.md |
| Call → close | Varies by offer | Offer problem — outside this skill |

Sub-1% reply rate = deliverability or list quality issue, not copy.
Fix the infrastructure before rewriting emails.

Open rate tracking is unreliable post-iOS Mail Privacy Protection. Use
reply rate as primary signal.

Per-vertical: run each template separately, don't blend results across
verticals in the same measurement window.

---

## The Familiarity Architecture (Multi-Channel Context)

Cold email alone has a structural ceiling in skilled-trade verticals because
these buyers' primary trust mechanism runs through peer community, not inbox.
The email's real job may be to deposit name recognition, not generate intent
directly.

**If reply rates are low despite clean deliverability and strong copy:**
Run a parallel play in trade-specific communities (roofing Facebook groups,
HVAC forums, supplier networks, local trade associations). The email's job
shifts to: manufacturer familiarity → peer trigger → email follow-up →
call. Measure "prospect touched 3+ times across channels" not just "replied
to email."

This is documented for context, not as a primary strategy. Start with the
sequence. Add community only if sequence alone stalls.

---

## Workflow

### 0. Verify any AI-generated stat before it goes in a template
If you (or the user) are sourcing claims from an AI research tool
(Perplexity, Claude, etc.) rather than a source you've personally opened:
- Spot-check 2-3 of the most load-bearing stats with a live search before
  using them.
- Treat a blog on an unfamiliar domain citing a suspiciously precise
  number ("$20,160/month," "65.8% response lift") as a red flag — this is
  the single most common hallucination pattern seen in cold-email
  research (see `references/verification-log.md` for a live example: 20+
  fabricated domains cited with fake blog titles and stats in one
  research pass).
- A stat is safe to use once you can point to who actually published it,
  when, and with what methodology — not just a URL that returns a
  plausible-looking title.
- When in doubt, drop the number and use directionally-true qualitative
  language instead ("a lot of after-hours calls go to voicemail" beats an
  unverifiable "62.4%").

### 1. Segment before writing anything
Don't write one email for a whole list. Split by industry, company size, and role, then for each segment answer:
- What's their #1 pain point right now?
- What do they actually care about (speed, cost, scale, compliance, status)?
- What language/terminology do they use?
- What proof would resonate with them specifically?

Also split by sub-niche within each vertical — see individual template Notes
for sub-niche guidance per vertical.

If the user hasn't given you this, ask for it before drafting — or draft with an explicit placeholder assumption and flag it.

### 2. Write the subject line
Keep it short. Favor curiosity or specificity over cleverness. Avoid generic sales language ("quick question," "following up," "partnership opportunity"). Good subject lines are under-specified enough to prompt a click without being clickbait — they should make sense only once the email is read.

### 3. Write the opening line — the self-diagnosis trigger
The strongest Email 1 opener is a question that forces the prospect to
calculate a number they don't know but should. This generates self-discovered
motivation — more credible than any claim you make.

Format: "Do you know [specific metric]? Most [their type] don't — and it's
usually [directional: more/higher/worse] than they expect."

This is stronger than stating the problem for them. The calculation happens
in their head, and they own the result.

Also: the first line must reference something true of only this
company/person — never just their job title or company name dropped into a
template. Test: *could this sentence apply to 1,000 other companies?* If
yes, rewrite it.

Do NOT lead with "I/we/my company." The prospect must be mentioned before
you are.

### 4. Structure the body — keep it under 80 words
Formula:
1. Self-diagnosis question (the opener)
2. The offer / value prop (not a pitch — a case study, audit, playbook, or short video)
3. A low-friction call to action

Rules:
- 1–2 sentences per paragraph max.
- Total email 50–80 words.
- Run the "phone scan" test: would this be readable and scannable on a mobile screen in 3 seconds?
- Run the "drunk test": could someone understand the ask in 10 seconds, slightly distracted?

### 5. Choose the right CTA — value before ask
Never open with "can we hop on a 15-minute call?" Nobody owes you their time yet. Instead, offer something concrete and free: an audit, a case study, a short Loom video, a lead list, a partial solution. Let them opt into more (a call) only after they've engaged with that value.

**Best CTA for home-service owners:** a 2-minute Loom showing exactly how
it works for a company like theirs (ideally in their state/market). Async,
watchable on a phone between jobs, no calendar commitment.

CTA phrasing varies per template to avoid pattern-matching — see individual
templates.

### 6. Build the follow-up sequence (3–5 emails)
- Space follow-ups 2–5 days apart.
- **Never** send a "just checking in" / "bumping this" email — every follow-up must add new value or a new angle.
- Suggested sequence:
  - Email 1: self-diagnosis opener + value offer (Loom, case study, or breakdown)
  - Email 2: additional insight or context (price anchor + new angle)
  - Email 3: urgency trigger + guarantee/proof (breakup)
  - Email 4 (optional): social proof / similar-company angle
  - Email 5 (optional): free resource, no strings attached, framed as the last touch
- A "breakup" email should never guilt-trip. Frame it as "wrong person?" (checking if someone else at the company is the right contact), not "you've been ignoring me."

### 7. Add urgency — Email 3 must give a reason to act now, not later
Default urgency options (pick the one that's true for your situation):
- Capacity constraint: "We're onboarding [city] contractors for [season] — have [N] setup slots open this month"
- Seasonal anchor: "AC season typically starts in [month] — setup takes 3 days"
- Competitor signal: "Two other [city] [vertical] companies are already running this" (only use if true)

Do not fabricate urgency. Pick a real one or omit it.

### 8. Sanity-check before sending
See `playbooks/pre-send-checklist.md` for the full list.

Core checks:
- Does line 1 pass the "only them" test?
- Is the total word count under 80?
- Is there a single clear CTA, and is it low-friction (not a calendar ask)?
- Does the CTA vary from template to template (not all "Mind if I send")?
- Is Email 1 link-free (unsubscribe in E2/E3 only)?
- If citing a data point, attributed to source ("SimilarWeb shows...") not stated as own claim?
- Has capacity pre-check been run on the target list?
- Is timing aligned with send-timing guide for this vertical?

## When reviewing/critiquing an existing email

Check against this list and call out failures explicitly:
- [ ] Opens with the prospect, not the sender
- [ ] Opening line passes the "only them" test or uses self-diagnosis question
- [ ] Under 80 words, short paragraphs
- [ ] CTA is low-friction and gatekeeper-safe (not "hop on a call")
- [ ] No generic filler ("I hope this finds you well," "just following up")
- [ ] No unearned personalization (title/company name alone doesn't count)
- [ ] No burned phrases (AI chatbot, book automatically, link in Email 1)
- [ ] If part of a sequence: does this specific email add new value vs. prior emails?

## Known trade-offs (don't over-apply one rule)

- **Length**: default to <80 words, but slightly longer is defensible when the extra length pre-empts one specific, known objection — not for general elaboration.
- **Personalization**: segment-level personalization (written per persona) is usually the right scale — full 1:1 hand-research doesn't scale, but title-swap templates fail the "only them" test. Aim for the middle.
- **Follow-up count**: 3 is a reasonable floor, 5 a reasonable ceiling. More than that risks spam flags and diminishing returns; fewer than 3 leaves most replies (which skew toward later touches) uncaptured.

For full source citations and the detailed contradiction-resolution reasoning behind these trade-offs, see `references/source-report.md`. For a record of which sources in the home-services research pass were fabricated vs. verified, see `references/verification-log.md`.

