← sunnyray.com Book 15 minutes

Tools / Cold Email Composer

Free tool · No signup

How to compose a cold email campaign

The whole method, in the order you actually need it. Offer, list, deliverability, then the words.

70 to 90 words 2 emails, 3 maximum Tue to Thu send window Under 3% bounce

Do these in order, because the order is the point

Almost every failing cold email campaign is being debugged at the wrong layer. Someone rewrites the subject line for the fourth time while the real problem is that a third of the sends never reached an inbox, or that the offer asks a stranger for forty minutes of their life in exchange for a demo.

Work top down. Each step is worthless until the one above it holds.

LayerWhat decides itWhat it costs you when it is wrong
1. The offerIs this easy to say yes toEverything. No copy rescues a bad offer.
2. The listAre these the right people, and do the addresses existYou measure noise. Bounces poison the domain.
3. DeliverabilityDomains, authentication, warmup, volumePerfect copy that nobody sees.
4. The copyBody, subject, PS, CTAReplies, and only once 1 to 3 are true.
5. The sequenceHow many, how far apart, what dayGoodwill, and your sender reputation.

The single most useful diagnostic. Plot reply rate against bounce rate across your campaigns. If the campaign with the lowest bounce is also the campaign with the highest reply rate, and the one with the worst bounce is at or near zero replies, you do not have a copy problem. You have a delivery problem wearing a copy problem as a costume, and any A/B test you run right now will measure nothing.

1. Fix the offer before you write a word

Every strong campaign shares one trait: an offer that is easy to say yes to. Every B2B offer reduces to one of three things. You help someone save time, save money, or make more money. If you cannot state which one in a single sentence, stop and fix that first.

The test is not whether the offer is impressive. The test is what it costs the recipient to accept it. A demo costs them forty minutes and a follow-up sequence. A written read on one specific thing costs them a two-word reply. Lower the price of yes and the same list produces a different number.

  • Weak: a fifteen minute call to explore whether there is a fit.
  • Stronger: a specific thing you will do for free, delivered whether or not they ever buy.
  • Stronger still: a thing only you can do, because of an asset, a dataset, an audience or a relationship you already have.

When timing is genuinely unknowable, stop selling the purchase and sell the queue position instead. Ask who handles this kind of decision and whether you can be the next person they speak to when they do want to move. That converts an unanswerable "not now" into a real answer.

2. Build the list, then verify it

Everyone in outbound pulls from the same three or four databases, which means the average decision maker is sitting on thirty to fifty near-identical emails a week generated from the same contact record. Changing where you get contacts moves your numbers more than changing what you write, because it changes who receives the email rather than how it reads.

List hygiene, the non-negotiable parts

  • Verify every address through a verification service before it enters a campaign. Drop everything marked invalid.
  • Treat catch-all and unknown results as a separate risk pool. They will dominate any bounce event. Send to them from a separate mailbox group, or later, or not at all.
  • Suppress before you send: existing customers, live opportunities, anyone who has replied in the last ninety days, anyone who unsubscribed anywhere, and every address on a shared blocklist.
  • Deduplicate by domain as well as by address. Three people at the same forty-person company receiving near-identical mail on the same morning is how you get reported.
  • Re-verify anything older than about ninety days. B2B lists decay at roughly two to three percent a month through job changes alone.
  • Never buy a pre-built list. If it was sold to you it was sold to everyone, and the invalid addresses in it are what burns your domains.

Where to find contacts nobody else is emailing

Signal-based sourcing beats database sourcing because it selects for a live problem rather than a job title. People describing the exact problem you solve in public. Job postings for the role your product replaces or supports. Attendee and speaker lists from events in your category. Followers of the tools that sit next to yours. Communities where your buyer actually talks. It is slower to build and it is the reason one list outperforms another by a multiple rather than a percentage.

3. Deliverability, in the order it breaks

This is the layer people skip and the layer that decides the outcome. A campaign averaging seven percent bounce is not a campaign, it is an experiment being run on a broken instrument.

Dedicated sending domains

Never send cold volume from your primary company domain. The primary domain carries your invoices, your contracts and your existing customer mail, and it is the one asset you cannot buy back once its reputation is gone. Buy lookalike domains that a human immediately recognises as yours, put a real site or a redirect behind them, and send from those.

The distinction that matters, and the one scarred buyers care about: a lookalike domain that obviously belongs to the company, warmed over weeks, is a completely different thing from a random throwaway domain bought yesterday. In regulated markets a mismatch between the sender domain and the business domain is itself a red flag that internal filtering will catch. If your buyer is a bank, a fund or a healthcare provider, keep the sending domain visibly, checkably yours.

Authentication: SPF, DKIM, DMARC

RecordWhat it provesGet this right
SPFThis server is allowed to send for this domainOne SPF record per domain, under ten DNS lookups. Two records is the same as none.
DKIMThe message was not altered and came from the domainPublish the selector your sending platform gives you and check it resolves before the first send.
DMARCWhat to do when SPF or DKIM fail, and who to tellStart at p=none with a real rua= reporting address. A DMARC record with no reporting address gives you a policy and no telemetry, which is the worst of both. Read a fortnight of reports before tightening.

Also worth doing on day one: set up the reverse DNS and custom tracking domain your platform asks for, and turn off link tracking on the first email entirely. A tracking pixel and a rewritten link are two of the strongest spam signals you can attach to a first touch from an unknown sender.

Mailbox warmup and volume

  • Warm every mailbox for two to three weeks before it sends a single real message. This is real, it is not optional, and it is the reason a start date this month means first replies next month. Say that to a prospect who wants results immediately: two weeks of the window is warmup where nothing happens, so the decision to start is the decision that moves the date.
  • Cap each mailbox low. Somewhere between twenty and forty sends a day per mailbox, ramped up rather than switched on. Volume comes from more mailboxes, never from a higher per-mailbox rate.
  • Keep warmup running alongside live sending, at a lower ratio.
  • Watch bounce daily. Under three percent is healthy. Three to five percent is a warning. Above five percent, pause the campaign the same day and find the cause before another send goes out.

A warmup score is not a health signal. A mailbox can report a perfect warmup score while every real send to a real recipient bounces, because warmup traffic only ever travels between cooperating mailboxes inside the same pool. If bounce is climbing, check the sending domain and its MX records directly rather than trusting the dashboard number. A whole pool of mailboxes pointed at a dead relay will look green and deliver nothing.

One thing not to do. Character substitution to slip past filters, swapping letters for lookalike characters or seeding deliberate typos, inverts. Modern filters normalise those substitutions and score the obfuscation itself as evasion, so you buy the exact outcome you were avoiding, on domains you cannot easily replace. It is also a terrible story to have attached to a business that puts its name on its outreach.

4. The body: 70 to 90 words

The band is narrow and it is not arbitrary. Emails between 70 and 90 words outperform both longer and shorter ones. Shorter is not automatically better: under 70 words there is no room to build credibility or explain the value, so the email reads as a request with nothing attached to it. Over 90 words, the reader stops.

What goes in the 70 to 90 words

LineJobFailure mode
GreetingFirst name, comma, next lineA dash after the name. It reads as a template, because it is one.
OpenerSay the thing you actually know, or say nothing and be direct about itThe fake research line. See below.
CredibilityThe outcome you produced for a similar company, unnamedNaming the company. Also see below.
The askA value-based question, not a calendar requestAsking for a meeting in the first email.
Sign-offYour first name. Nothing else.A signature block with a logo, four links and a phone number.
PSA second, different offerNot having one.

The personalisation opener is dead, and this is the specific one

Openers of the shape I saw you help fitness coaches and wanted to reach out, or I came across your company and thought I would get in touch, measure worse than sending nothing personalised at all. Not marginally worse. They were the single clearest negative signal in campaign data, because the pattern is now so common that recognising it and deleting the mail is one motion.

This does not mean personalisation is dead. It means generated personalisation is dead. A line that proves you read something specific, and that leads somewhere useful, still works. The test: could this sentence be sent to two thousand other companies with two words changed? If yes, delete it. The 70 to 90 word budget is better spent on the offer.

Social proof: describe the outcome, never name the company

Naming a specific case-study company correlates with average and below-average campaigns. Describing the outcome without naming anyone correlates with the strong ones. The reason is simple in both directions. An unfamiliar name means nothing, so it is wasted words. A famous name is worse, because the reader immediately thinks well, we are not them, this is not for us, and you have handed them the objection yourself.

Write "a logistics operator with about forty people" instead of the logo. It keeps the proof and removes the mismatch, and it has the side benefit of never putting a client name in a stranger inbox, which is the kind of thing your clients notice.

5. Subject lines

Four properties correlate with strong campaigns, and all four are cheap to test.

Test always

The first name

Including the recipient first name had the highest correlation with above-average and excellent campaigns of any subject-line property measured.

Counterintuitive

Mismatched case

First letter capitalised, everything after it lowercase. Deliberately slightly off. Title Case reads like a newsletter, and a newsletter is a thing people archive.

Short

Under three words

Subject lines under three words correlate with strong performance. On a phone, anything longer is truncated anyway.

Smaller effect

The company name

A small positive signal, against some conventional wisdom. Worth a test arm, not worth a rule.

What to avoid: questions that invite the answer no, anything with a number and a percent sign, the words free, guarantee and urgent, all caps, exclamation marks, and any subject line that describes the email rather than earning the open. "Quick question" is the most-sent subject line in cold email and it now performs like a form of identification.

6. The PS line carries a second offer

This is the highest return single change available in cold email, and almost nobody does it. Putting a different value angle in the PS produced roughly five times more responses than not having one.

The mechanic: the body carries one of the three offers, and the PS carries another. If the body is about saving time, the PS is about saving money. Phrase it as an escape hatch rather than a second pitch: PS. If that is not interesting, we also help with this other thing. A reader who bounced off the first angle now has a second reason to reply instead of a reason to archive.

A PS is also the most-read line in an email after the first line, because the eye lands there before it reads the middle. Do not waste it on a signature, a calendar link, or a reminder that you already sent something.

7. The CTA is a question about value, not a calendar request

Direct meeting asks measurably reduce replies. "Do you have fifteen minutes on Thursday" asks a stranger to spend something before they believe anything. The best-performing pattern is a value-based question:

It costs one word to answer. It surfaces intent without asking for a commitment. And it lets the person who is interested but busy raise their hand without having to open a calendar. The meeting gets booked on the reply, which is the correct place for it.

The alternative that works just as well is to offer something free and specific instead of asking for anything: a written read on one thing, a list, a teardown, an artefact they keep whether or not they ever speak to you. That generates hand-raisers rather than appointments, and hand-raisers convert.

What a CTA must never do. Promise an outcome you do not control. No meeting counts, no "we will fill your calendar", no revenue predictions, no money-back-if-you-do-not-get-N-meetings. Beyond the compliance exposure, an outcome guarantee tells an experienced buyer that the thing being sold is a lottery ticket. Guarantee what you build, which you do control: the domains, the warmed infrastructure, the verified list, the tested copy, the weekly human review. Those exist whether or not the market responds, and they are what the buyer is actually paying for.

8. Two emails. Three at the absolute maximum.

Two emails is the best-performing sequence length. Three is the ceiling. Performance drops hard on the fourth and fifth, and the reason is worth understanding rather than memorising: nothing about their situation has changed. You are following up with people who have no new reason to reply, so the extra sends buy you irritation and spam complaints instead of conversations.

Send email one. Send email two. Take the replies. Then leave them alone for about two months. Their business changes, they forget you, and the same list becomes a fresh list. That rest period is a feature, not a gap in the plan.

The second email must carry new information

The most common failure in all of outbound is a step two that opens with just following up in case this got buried and then says nothing. It carries no information, and it teaches the recipient that your mail is safe to ignore. Every follow-up needs to be worth opening on its own: a different angle, a specific observation, a useful artefact, or an honest admission that this may not be for them.

Delete this

"Just following up in case my last email got buried. Let me know if you would like to chat."

Send this

A second, different angle plus a genuine reason it is arriving now, ending in the same value-based question. Then stop.

9. Send timing

  • Tuesday, Wednesday, Thursday. The best reply days by a clear margin.
  • Monday works but is weaker. Friday fades badly through the afternoon.
  • Weekends are not worth it for B2B, and they look automated.
  • On a small list, send only Tuesday to Thursday. If you have a few hundred perfect contacts, every one of them deserves the best slot available. Volume is not the constraint, so do not trade quality of slot for speed.
  • Send in the recipient timezone, spread across the window rather than at the top of the hour, which is when every automated tool fires.

10. Copy variation: about five variants, not fifteen

Heavy spin syntax hurts campaigns. Strong campaigns ran around five streams of copy variation. Campaigns with more than about fifteen injected variables performed worse, because the variants degrade into sentences no human would write, and because you can no longer tell which version produced the result.

The one exception worth keeping: when deliverability starts slipping, increasing variation is a legitimate response, since identical bodies at volume are themselves a pattern. Treat it as a lever you reach for under pressure, not a default setting.

How to tell whether it is working

Reply rate flatters and misleads, because it counts every out-of-office and every unsubscribe request. The number that matters is how many contacts it takes to earn one positive response.

TierContacts per positive response
Excellent150 or fewer
Above average150 to 400
Average450 to 800
Below average800 to 1,200
PoorAbove 1,200

Where you should sit depends on your deal size and how big your addressable market is. A business with a five-figure contract value and ten thousand possible buyers can live at 800 and be extremely profitable. Do not compare yourself to a screenshot on the internet.

And read it late, not early. At these rates, two positive replies against four is noise, not a signal. Give each test arm five hundred or more sends before you conclude anything, and if you have already run twenty experiments and the numbers are outside the table, stop tuning and go make the offer better.

Before and after

Three rewrites. The before versions are composites of the patterns that show up most often, not anyone specific.

1. Software sold to operations leaders

Before · 130 words

Nine separate problems: a dash greeting, a filler opener, a fake research line, a named case study that invites a mismatch, a subject line in Title Case describing the email, a link in a first touch, a bare meeting ask, an exclamation mark, and a signature block that doubles the length.

After · 84 words

2. A service sold to founders

Before · 89 words

Inside the word band and still unsendable, which is the point: length is a constraint, not a strategy. The outcome guarantee is the fatal one here. It is unenforceable, it signals a lottery ticket rather than a service, and in any regulated or capital-adjacent context it is a real liability. The rest is a pitch about the sender.

After · 86 words

3. An interview invitation

Before · 102 words

Interview invitations are now the most abused shape in cold email, so this one has to work harder than any other. The generic opener, the audience claim and the implied business outcome are the three things that mark it as one of the hundred a founder deletes each month.

After · 88 words

Saying plainly that you cannot promise the good part is more disarming than implying you can, and it is the opposite of everything else in that inbox.

Check your draft

Paste a subject line and a body. Everything runs in your browser: nothing is uploaded, stored, or sent anywhere, and there is no signup. Refreshing the page clears it.

Body: 0 words

The checker finds mechanical faults. It cannot tell you whether the offer is any good, and the offer is the thing that decides the campaign.

Pre-send checklist

  • The offer is easy to say yes to, and I can name whether it saves time, saves money, or makes money.
  • Every address is verified. Catch-all and unknown are separated out. Suppression lists are applied.
  • Sending is on dedicated lookalike domains, never the primary domain.
  • SPF, DKIM and DMARC all resolve, and DMARC has a real reporting address.
  • Every mailbox has been warmed for two to three weeks and is capped at twenty to forty sends a day.
  • Body is 70 to 90 words. No links, no tracking pixel, no signature block in the first email.
  • Greeting is a name and a comma. No dash.
  • No "I came across", no "I saw you", no "hope this finds you well".
  • Subject line is short, mismatched case, first name included, and split-tested.
  • Social proof describes an outcome and names nobody.
  • CTA is a value-based question, not a calendar request. No promised outcomes anywhere.
  • There is a PS, and it carries a different offer from the body.
  • Sequence is two emails, three at most, then a rest of about two months.
  • Scheduled Tuesday to Thursday, in the recipient timezone.
  • Copy variation is around five streams, not fifteen.
  • Sender identity, a postal address and a working unsubscribe are configured at the sending layer, because cold B2B is not a blanket exemption under CAN-SPAM, CASL or GDPR.

Want this built rather than explained?

We build and run the outbound layer: dedicated domains, authentication, warmup, the verified list, the copy, the sequencing and a weekly human review. Three month engagement, flat fee. You own every relationship that comes out of it.

Built with help from AI. We use AI tools to research, draft, and assemble pages like this one. A human reviews everything, but if something looks off, tell us and we will fix it fast.