Sales email subject lines that get opened (with examples)
Open rate can no longer judge a subject line, and a one-variant test has no control. The patterns, the examples, and a test that resolves.
A subject line has one job, which is to make the next second worth spending, and one measurement problem, which is that the metric everybody uses to judge it no longer measures what they think. Short, specific, lowercase and free of hype is a reasonable default. The harder and more useful part is knowing that your open rate now contains a large amount of machine traffic, that a one-variant test in most tools has historically had no control group at all, and that the sample size you need to resolve a real difference is bigger than most cold campaigns produce.
What a subject line is actually competing against
Before any pattern, the mechanism. A recipient scanning an inbox on a phone sees a sender name, a truncated subject and a truncated preview line, arranged in a list of thirty. The decision to open is made in well under a second and is mostly a decision about the sender, not the subject.
That has three consequences that outrank every clever formula.
The from-name does more work than the subject. A recognisable human name beats a company name, which beats a no-reply. If your from-name says "Sales Team", the subject is arguing uphill.
The preview line is part of the subject. Most clients render the first characters of the body next to the subject, so your first sentence is competing for the same second. Starting the body with "Hi {first_name}," spends that space on nothing.
Truncation is by pixel width, not characters. Neither Gmail nor Outlook publishes a character limit, because they do not truncate by character — they truncate by the width available in the rendered list, which changes with device, font size, orientation and whether a preview pane is open. The practical rule that follows is to front-load: put the load-bearing words first and assume everything after the first few is a bonus.
Patterns that work, with examples
These are patterns rather than templates, because a template that a hundred senders use stops being specific by definition. Each is written the way you would type it to a colleague.
The specific observation. You noticed something real and you name it.
noticed you're hiring three SDRs in Puneyour pricing page dropped the free tierquestion about the Bangalore office opening
The direct question. A question mark is the cheapest legitimate open loop there is, and it commits you to actually asking something in the body.
who owns outbound at Acme?worth a look at your bounce rate?
The named referral or shared context. This is the highest-performing category available and the one you can least often use honestly. Use it only when it is true.
Priya suggested I email youwe met at SaaSBoomi
The bare noun phrase. Reads like an internal note rather than a campaign, which is the point.
10DLC registrationoutbound tooling
The explicit breakup. Honest, low-pressure, and the one that reliably surfaces the people who meant to reply.
closing the loopshould I stop emailing?
Lowercase is worth a note of its own. It reads as typed-in-a-hurry rather than composed-by-marketing, which is the impression you want on a first touch. It is also a stylistic choice that some industries read as sloppy, so test it rather than adopting it because a blog said so. Worked personalisation examples show what a genuinely specific observation looks like when it reaches the body.
What to avoid, and one reason that is legal rather than aesthetic
The obvious list first. Hype and numbers you cannot support (Boost revenue 300%), all caps, exclamation marks, FREE, and anything that reads like a newsletter subject on a one-to-one email. These damage the open and, on a cold domain with no reputation, contribute to a spam classification at the same time — the spam trigger words worth avoiding covers that half properly.
The less obvious one is a legal constraint rather than a style preference. The CAN-SPAM Act makes deceptive subject headings unlawful for commercial email in the United States. The Federal Trade Commission's own compliance guide for business states that "the subject line must accurately reflect the content of the message", and that each separate email in violation is subject to penalties of up to $53,088.
That rules out a specific and popular trick: the fake Re: or Fwd: prefix on a thread that never existed. It is not a grey area, it is the exact pattern the requirement describes, and the fact that it lifts opens is the reason it is prohibited rather than a defence.
A second technical trap. A subject line containing anything outside ASCII — an emoji, a rupee sign, a name with a diacritic — has to be encoded as an encoded word under RFC 2047, and a client or gateway that mishandles the encoding renders the raw =?utf-8?B? string in the inbox list. On a cold send to somebody with no reason to give you the benefit of the doubt, that is a worse outcome than any subject line could earn back.
Why open rate can no longer judge a subject line
This is the section that changes how you work, so it is worth being precise rather than gesturing at "Apple broke tracking".
An open is recorded when a one-pixel image in your message is fetched. It is a proxy that assumed fetching the image and reading the message were the same event. Three things broke that assumption.
Apple Mail Privacy Protection. Apple states on its own privacy pages that with Protect Mail Activity on, the recipient's IP address is hidden from senders and remote content is downloaded in the background when a message is received "rather than only downloading remote content when you open an email" — and that it does so "regardless of whether you engage with the email". Every one of those fetches is an open in your reporting and a non-event in reality.
Client and preview prefetch. Outlook, Office and BingPreview fetch remote images on delivery to build previews. Those fetches carry identifiable user agents, so they can be filtered — which is why Autocloz classifies outlook, microsoft office and bingpreview fetches as machine traffic and excludes them from the headline figures.
Security gateway scanning. Proofpoint, Mimecast, Barracuda, Cisco IronPort, Forcepoint, Sophos, Fortinet, Trend Micro, Symantec and Cloudmark all fetch content and follow links to scan them. Gateway scanning is also why some tools report more clicks than opens, which is impossible for humans: the gateway follows every link but often does not fetch the image. Classifying clicks by the same rule as opens restores that invariant.
One correction to the usual advice, because it goes the other way. Gmail's image proxy and Yahoo's are *not* machine traffic. For a Gmail user, the provider proxy is the only fetch that ever reaches your pixel on a genuine manual open, because the client never fetches the image directly. Filter those out and a real human open can never be counted at all. The distinction that matters is fetch-on-open versus fetch-on-delivery, not proxy versus direct.
What survives all of this is the negative signal. An open rate that collapses toward zero across a whole campaign is real information — it usually means your mail is not arriving, not that your subject line got worse. Treat it as a smoke alarm and read what an open event actually records before you act on a small movement in it.
Autocloz's free plan covers 5 users and 10 mailboxes, with human and machine opens separated in reporting rather than added together — start free if you would rather see the smaller honest number.
How to run a subject test that can resolve
The mechanics matter more than the copy, because most subject tests cannot produce an answer regardless of what they test.
Put the control in the rotation. This sounds obvious and is the single most common defect. If your tool rotates only across the variant list, adding one variant expecting a 50/50 split gives you 100% variant and no control at all, and the "winner" is compared against nothing. Autocloz builds the arm list with the primary subject as arm 0 — the control, not a fallback — and drops blank variant slots rather than mapping them onto the primary, so a half-filled variant list cannot silently double-weight the control. Check that your tool does the same before you trust a result from it.
Make the assignment sticky per recipient. If the arm is chosen per send, a retry or a second touch reshuffles which subject that person sees, and the attribution is nonsense. The assignment must be a stable function of the recipient and the step. Autocloz hashes lead_id:step_id with blake2b and takes the result modulo the number of arms, deliberately not Python's built-in hash, which is salted per process and would bucket the same lead differently in the API process and the worker.
Key on the recipient and the step, not the recipient alone. Keying on the lead alone pins that person to arm 0 for the entire sequence, which correlates every step's test with every other one.
Do the sample arithmetic before you start. You are comparing two proportions. To separate a 4% reply rate from a 5% one with any confidence you need thousands of sends per arm. If your list cannot supply that, you are not running a test — you are picking a subject line and generating a number that will mislead you later.
Read reply rate, not open rate, for the reasons above. Autocloz's per-variant results report opens, clicks, replies and bounces per arm with machine traffic filtered out, and it picks the winner on open rate for a subject test and reply rate for a body test. Use the reply column.
Diagnosing a subject test that is telling you nothing
Four symptoms, four causes.
- One arm has almost all the sends. Blank variant slots, or a rotation that excludes the primary. Check the per-arm send counts before the rates.
- The same lead received two different subjects on retries. Assignment is keyed on the send rather than the recipient. Historical results from that period cannot be salvaged, because the arm each message actually carried was never recorded.
- A variant shows a 100% open rate on eleven sends. The sample is too small for the rate to mean anything, and there is a real trap here: the shipped winner selection picks the highest raw rate among arms with at least one send, with no minimum sample and no significance test. It will happily crown an arm with three sends and two machine opens.
- You edited the variant list mid-flight. Attribution recomputes the arm index from the current list, so sends made against the old list are bucketed against the new one. Finish a test before you edit it.
At one person, a subject test is something you eyeball. At ten, it needs a written stopping rule and one owner, because the failure mode of a team is that five people each run a test on the same list at the same time and every result is contaminated by the others. If you want a quick read on a line before it enters a rotation, the subject line tester checks length and spam-trigger patterns, and the per-step variants live in the email campaign builder. For the broader question of what a test should cover beyond the subject, the cold email A/B testing guide sets out the variable order; if you are comparing tools on this specific capability, the Autocloz and Lemlist comparison covers how each handles variants.
What subject-line testing does not fix
It does not fix a list. A perfect subject to the wrong person produces a non-reply with excellent phrasing.
It does not fix deliverability. A subject line cannot rescue a message that never reached the inbox, and the collapse in open rate you would use to detect that is the same collapse you would misread as a copy problem.
It does not survive the measurement. Because a material share of opens are machine-generated and Apple's cannot be reliably identified from the user agent, an open-rate winner is a winner on a contaminated metric. That is why the honest recommendation is to read the reply column even though the shipped winner logic reads opens for subject tests.
And Autocloz's own A/B implementation has two limits worth stating. The winner is the highest raw rate with no minimum sample and no significance calculation, so the operator has to supply that judgement. And body-variant assignment is still keyed on the send rather than the recipient, so body tests are not sticky per lead the way subject tests are — a limit that matters most on the channels with no subject field at all.
Frequently asked
How long should a cold email subject line be?
Short enough that a phone shows all of it, which in practice means roughly three to seven words. There is no published character limit from Gmail or Outlook, because both truncate by pixel width in the rendered list rather than by character count, and the width available differs by device, font size and whether a preview pane is open. Write for the narrowest surface you know a recipient uses and stop worrying about a number.
Is it legal to write whatever I want in a subject line?
No. The CAN-SPAM Act makes deceptive subject headings unlawful for commercial email in the United States, and the FTC's compliance guidance states plainly that "the subject line must accurately reflect the content of the message". The FTC also states that each separate email in violation is subject to penalties of up to $53,088. A fake "Re:" on a thread that never existed is the exact pattern the rule describes.
Why does my A/B test show a variant winning by a huge margin?
Almost always because the sample is too small and one arm caught a cluster of machine opens. A subject test compares two proportions, so the difference you can resolve depends on the number of sends per arm, and a few hundred sends per arm cannot separate a 40% open rate from a 45% one. Check the send count per variant before you read the rate, and re-run before you promote anything.
Does putting an emoji in a subject line help or hurt?
The measurable risk is encoding rather than taste. A non-ASCII subject has to be encoded per RFC 2047 as an encoded word, and a client or gateway that mishandles it renders the raw encoded string in the inbox list instead of the character. That is a worse first impression than any emoji is worth on a cold B2B send, where the recipient has no prior relationship to give you the benefit of the doubt.
What should I measure instead of open rate?
Reply rate, and positive reply rate specifically. Reply is a human action with no machine analogue, which is exactly what makes it usable now that a large share of opens are recorded by mail infrastructure rather than by people. Open rate remains useful for detecting a catastrophe — an open rate that collapses to near zero usually means a delivery problem, not a subject line problem — but it is a smoke alarm, not a scoreboard.
Should the subject line be personalised with a merge field?
Only where the merged value is genuinely specific and you have verified it. A company name in a subject reads as automated to most B2B buyers because they have seen the pattern a thousand times, and a merge field that fails renders as a broken placeholder or an empty gap. Specificity in the first line of the body, where you have room to say something true, does more work than a token in the subject.