Subject lines are the first gate. Bad subject line, zero opens. Good subject line, 40-60% open rates. In B2B cold, the rules are specific and nearly opposite to consumer email marketing.
The rules
3-5 words. Longer subject lines get cut off in mobile preview and feel marketing-y.
Lowercase. Title Case Looks Like Marketing. lowercase feels like a colleague.
No emojis. Instantly flags as promotional in B2B inboxes.
No symbols or brackets. No [Re:], no ?, no !, no ().
No questions unless very natural. "Quick question" is dead.
Name-drop when relevant. "[Mutual connection] suggested I reach out" works.
Patterns that work
The specific observation
"your post on retention"
"saw your Q3 announcement"
"re: your hiring push"
The question format (short)
"quick thought on pipeline"
"thoughts on [specific topic]"
The name-drop
"[Mutual name] said to reach out"
"from [company] to [their company]"
The curiosity
"odd question about [department]"
"something you might've missed"
The direct
"15 min next week?"
"introduction from [referrer]"
Patterns that fail
"Exclusive offer for [Company]", marketing
"Transform your pipeline", ad
"FREE [anything]", spam filter bait
"Last chance", fake urgency
"Are you struggling with X?", leading
"You won't believe this", clickbait
Subject line generation
Subject line generator
Generate 15 cold email subject lines for:
- Target: [role + industry]
- Email topic: [what the email is about]
- Context trigger (if any): [recent event]
Rules:
- 3-5 words max
- Lowercase
- No emojis, no symbols
- Should feel like a peer wrote them, not a marketer
- Mix: specific observation, curiosity, direct, name-drop
Just the subject lines, numbered.
Testing
A/B test 2 subject lines per campaign at minimum. Split 50/50 for the first 200 sends. Keep the winner, test a new challenger against it. See what to test.
Typical open rates by subject line quality:
Weak (generic, long, promotional): 15-25%
Decent (short, lowercase, specific): 35-45%
Strong (specific observation + trigger): 55-70%
With iOS 15+ inflating open rates through prefetching, treat opens as directional not absolute. Reply rate is the truer signal.