Cold email personalization
Quick answer
- 01What is it?
- When to Use Writing cold outreach, sales prospecting, or outbound B2B emails Personalizing email openers from prospect research signals Building multi-touch follow-up sequences Reviewing or scoring email drafts. It stands out by giving email marketing a defined shape, so the agent asks for better context and returns a more usable result.
- 02Inputs
- Context for email marketing: your goals, audience, constraints, and any source material the skill asks for.
- 03Output
- A ready-to-use result for email marketing: the analysis, copy, or recommendations the agent produces.
Add this skill
Install as a package
Installs this one skill package for your coding agent, including any supporting files that skill ships with — not every skill in the repository. Read the tutorial.
$ npx skills add gtmagents/gtm-agents --skill cold-email-personalizationSkill instructions
The instruction file for this skill. The skill also includes other files you need to install to use it.
Cold Email Personalization
When to Use
- Writing cold outreach, sales prospecting, or outbound B2B emails
- Personalizing email openers from prospect research signals
- Building multi-touch follow-up sequences
- Reviewing or scoring email drafts before sending
Workflow
- Map the ICP — Complete ICP & Objection Mapping (assets/icp-objection-mapping.md). Gate: persona, top 3 objections, and desired next step are defined.
- Research signals — Follow the Research Playbook (assets/research-playbook.md) to find custom signals from the last 90 days. Gate: at least 2 verified signals per prospect.
- Choose campaign path — Pick Custom Signal, Creative Idea, Whole Offer, or Fallback from Campaign Types (assets/campaign-types.md).
- Draft the email — Apply Email Structure (assets/email-structure.md) rules: plain text, 60-120 words, one CTA. Use Variable Schema (assets/variable-schema.md) for merge fields.
- QA and score — Run the QA Checklist (assets/qa-checklist.md), then score with the Scoring Rubric (assets/scoring-rubric.md). Gate: score >= 80 and 3:1 recipient-to-sender ratio.
- Build sequence — Add follow-ups per Follow-Up Strategy (assets/follow-up-strategy.md), rotating value props each touch.
Principles
- Message-market fit over cleverness — Show you understand the prospect's situation immediately.
- Research is the personalization — Custom signals prove homework; never fabricate facts.
- One job per email — Single sharp question or CTA; earn a reply, not a meeting.
- Two personalization paths — Path A: custom signal research. Path B: whole-offer strategy. See Creative Ideas (assets/creative-ideas.md) for Path B tactics.
Example
Signal found: Prospect's company posted a VP Sales hire on LinkedIn 2 weeks ago.
Subject: {{first_name}}, growing the sales team?
Body: Hi {{first_name}}, saw {{company}} just brought on a new VP Sales — congrats. Specifically, it looks like you're scaling outbound to {{customer_type}}. We helped [similar company] ramp 3 new reps to quota 40% faster by templatizing their top performer's research workflow. Worth a 15-min look?
Why it works: Uses a verified, recent signal in the first line; ties it to a specific, relevant outcome; single clear CTA.
References
- Research Playbook (assets/research-playbook.md) — Finding custom signals
- Variable Schema (assets/variable-schema.md) — Standard merge variables
- Email Structure (assets/email-structure.md) — Subject lines, body, punchiness
- Campaign Types (assets/campaign-types.md) — Four campaign patterns
- Creative Ideas (assets/creative-ideas.md) — Generating credible prospect ideas
- Follow-Up Strategy (assets/follow-up-strategy.md) — Sequence logic and value rotation
- ICP & Objection Mapping (assets/icp-objection-mapping.md) — Persona and objection prep
- QA Checklist (assets/qa-checklist.md) — Pre-send verification
- Scoring Rubric (assets/scoring-rubric.md) — 0-100 quality score
- Examples (assets/examples.md) — Full campaign examples
Supporting file: assets/campaign-types.md
Campaign Types
1. Custom Signal Campaign
When: You have strong research data (case studies, pricing insights, reviews, hiring).
Structure:
- Subject: 2-4 words, intriguing.
- First line: Custom signal with
{{variable}}. - Body: Value prop + case study proof.
- CTA: Low-effort question.
2. Creative Ideas Campaign
When: You can generate specific, credible ideas for them.
Requirements:
- Define 3-5 specific features/capabilities.
- Generate 3 bullet point ideas, each using ONE feature.
Structure:
{{First name}} – I was back on your site today and had some marketing ideas for you.
{{Creative Ideas}}
• Idea 1: [Specific action using Feature X]—would help with [their pain]
• Idea 2: [Specific action using Feature Y]—could improve [their goal]
• Idea 3: [Specific action using Feature Z]—might address [their challenge]
But of course, I wrote this without knowing anything about your current bottlenecks.
If it's interesting, we could hop on a call and I'd be happy to share what's working in the {{industry}} industry.
3. Whole Offer Campaign
When: Limited data availability or self-selecting offer.
Structure:
- Subject: Describes the pain/outcome.
- Preview text: Completes the offer.
- Body: Explain the offer, light personalization.
- CTA: Simple yes/no.
4. Fallback Campaign ("Let Me Know If...")
When: You're not 100% sure they're the right person.
Structure:
{{First name}} – let me know if {{employee_1}} or {{employee_2}} would be better to speak about {{specific_problem}}.
[Rest of email]
Why it works: Shows research (employee names) and gives an easy out.
Supporting file: assets/creative-ideas.md
Creative Ideas Campaign Generation
What Is This?
The Creative Ideas campaign shows 3 specific ideas of how you'd help THEIR company.
- Shows > Tells: Demonstrates capability.
- Tailored: Not a template.
- Low commitment: Just evaluating ideas.
The Critical Constraint: Feature-Box Your Ideas
The Problem: Unconstrained AI hallucinates capabilities. The Solution: Define 3-5 specific features you ACTUALLY offer, then generate ideas using ONLY those features.
Step 1: Define Your Constraint Box
List 3-5 specific features/capabilities. Example (Marketing Agency):
- Paid social ads
- SEO content creation
- Email marketing automation
Step 2: Research Their Company (5-7 min)
Look for:
- What they sell
- Current approach
- Gaps/opportunities
- Competitor landscape
Step 3: Generate Ideas (One Per Feature)
Formula: [Action verb] + [Feature from constraint box] + [Specific to their company] + [Why it would help]
Example:
• Paid social campaign targeting sales leaders using LinkedIn's "job function" targeting—would help with reaching decision-makers directly.
Step 4: Format the Email
Subject: "Marketing ideas", "Quick ideas" Opening: "I was back on your site today and had some ideas..." Ideas: 3 bullet points. Disclaimer: "But of course, I wrote this without knowing anything about your current bottlenecks..." CTA: "If it's interesting, we could hop on a call..."
Quality Check
- ✅ Each idea uses ONE feature from your constraint box?
- ✅ Each idea is specific to THEIR company?
- ✅ Each idea explains the benefit?
- ✅ Disclaimer included?
Supporting file: assets/email-structure.md
Email Structure & Strategy
Subject Line Strategy
Approach A: 2-4 Words (Intrigue)
Best when using custom research signals.
- "Partnership?"
- "Quick question"
- "Competitor insights"
- "Saw your post"
Test: Can a colleague send this? If yes, good.
Approach B: Whole Offer in Subject + Preview
Best when data is limited or offer is self-selecting.
- Subject: "Ever chase renters to pay on time?"
- Preview: "We built a platform that rewards renters for paying on time..."
Email Body Structure
Target: 50-90 words.
Line 1: Situation Recognition (1 sentence)
Describe THEIR exact situation. Be direct.
- ✅ "Saw you posted about {{ai_generation}}—seems like it was {{days_ago}} days since the one before that."
- ❌ "I hope this email finds you well!"
Line 2: Value Prop + Proof (1-2 sentences MAX)
What you do + metric. No fluff.
- ✅ "We helped companies like Lemlist double down on social with our scheduling tool."
- ✅ "We've attributed a 4.7x increase in upgrades after adding product videos."
Optional: The "Specifically" Line
"Specifically, it looks like you're trying to sell to {{customer_type}}, and we can help with that."
Line 3: Low-Effort CTA (1 sentence)
Binary question or simple offer.
- ✅ "Worth a look?"
- ✅ "Could I send you access?"
How to Make Emails Punchier
The Cutting Process
- Delete fluff: "I hope this finds you well", "I wanted to reach out", "innovative solutions".
- Compress sentences: Replace clauses with periods. "We built a platform that can do X" → "We do X".
- Cut adjectives: Keep only data-backed adjectives ("4.7x", "Series B").
Quick Compression Tactics
- Kill intro phrases: Just start with the point.
- Use em dashes: "Saw your post—noticed it was..."
- Delete "that" and "which": "We pull everyone engaging..."
- Active voice always.
- Numbers > words: "30 days" not "thirty days".
- Abbreviate where clear: "vs.", "CRO".
The 50-Word Challenge
Can you say it in 50 words without losing the situation, value prop, proof, or CTA? Usually, yes.
Supporting file: assets/examples.md
Real Campaign Examples
Example 1: Pricing Page Insight (Product Video)
Context: Targeting SaaS founders. Scraped pricing page to find upgrade paths. Subject: Starter vs. Professional
{{First_name}}—had a question about Starter vs. Pro.
Seemed like Starter is for platform access, Pro is for API integrations with CRM.
Do you have a product video showing how easy those integrations are and how much more sales leaders get if they upgrade?
We've attributed 4.7x increase in upgrades after adding product videos.
Worth a chat?
Why it works:
- Specific observation (Starter vs Pro).
- Metric proof (4.7x).
- Low-effort CTA.
Example 2: Vanta Engagement Alerts
Context: Targeting sales/marketing. Subject: Quick question
{{First_name}}—do you get alerts when prospects engage with Vanta's posts?
We pull everyone engaging with any LinkedIn company page, filter by your ICP titles, and send alerts.
Just confirm Vanta works as an example and I'll send you their last 10 posts' engagers.
Why it works:
- Immediate relevance.
- Value-exchange (confirm -> get data).
Example 3: LinkedIn Consistency (Taplio)
Context: Noticed gap in posting. Subject: saw your post
{{first_name}} – Saw one of your recent LinkedIn posts about {{ai_generation}}.
Seems like the last time you posted was {{number_of_days}} days before that though.
With {{number_of_followers}} followers I figured building your brand on LinkedIn might be a priority for you.
LinkedIn's own guidelines stress the importance of consistently creating content. Creators are using our platform to brainstorm and schedule all from one place.
Could I show you how it works sometime?
Why it works:
- Data point (days between posts).
- Follower count adds credibility.
Example 4: Whole Offer Strategy (Property Management)
Context: Reaching out about late rent. Subject: Ever chase renters for rent?
{{First_name}},
We reward renters for paying on time so you increase NOI.
Renters who pay on time get Starbucks gift cards they can spend at {{nearest_mall}}.
If we could increase on-time payments, would that be useful?
Why it works:
- Subject + preview = entire offer.
- Self-selecting.
- Light AI touch (nearest mall).
Example 5: Creative Ideas (Follow-Up)
Context: Email 2, generating ideas.
{{First Name}} – I was back on your site today and had some marketing ideas for you.
{{Creative Ideas}}
• Paid social campaign targeting [specific audience] using [specific platform feature]
• SEO content series around [keyword cluster] based on competitor gaps
• Email nurture sequence for [customer segment] that addresses [specific pain]
But of course, I wrote this without knowing anything about your current bottlenecks and goals.
If it's interesting, we could hop on a call and I'd be happy to share what's working in the {{industry}} industry.
Why it works:
- Creative ideas campaign.
- Humble disclaimer.
- Value-exchange CTA.
Supporting file: assets/follow-up-strategy.md
Follow-Up Email Sequences
Philosophy
- Email 1 (Day 0): Full campaign (Custom signal / Whole offer).
- Email 2 (Day 3-4): Threaded. Rotate value prop.
- Email 3 (Day 7-8): New thread. Different angle. Drop AI?
- Email 4 (Day 11-12): Final. Redirect or Resource offer.
The "3 Offers" Framework
- Save time (efficiency)
- Save money (ROI)
- Make money (revenue)
Strategy: If Email 1 was "Save Time", Email 2 should be "Make Money".
Email 2: Rotate Value Prop (Threaded)
Subject: NONE (threads to Email 1). Templates:
- Creative Ideas: "Had some ideas for you..."
- Stats/Data Hook: "Our system combines 40 databases..."
- Industry Insights: "Seeing changes in the {{industry}} environment..."
Email 3: New Thread, Different Angle
Subject: NEW subject line. Strategy: Consider dropping AI personalization. Go direct. Templates:
- Expertise Hook: "We've helped hundreds of customers..."
- Whole Offer (Reset): Direct problem → solution → proof.
- Case Study Deep Dive: Story format.
Email 4: Final Email
Strategy: Redirect or Resource. Path A (Redirect): "Let me know if {{employee_1}} or {{employee_2}} would be better..." Path B (Resources): "If you're busy, we have resources on [topic]..." Path C (Value Bomb): "I pulled these contacts for you..."
Sequence Summary
| Timing | Subject | Strategy | |
|---|---|---|---|
| 1 | Day 0 | New | Custom signal / Whole offer |
| 2 | Day 3-4 | Thread | Rotate value prop / Creative ideas |
| 3 | Day 7-8 | New | Drop AI / Case study |
| 4 | Day 11-12 | Thread/New | Redirect / Resources |
Supporting file: assets/icp-objection-mapping.md
ICP & Objection Mapping: Role-Play Before You Write
The Exercise
Before writing ANY cold email campaign, spend 15 minutes role-playing as your skeptical ICP. Why: You'll write defensively, focus on THEIR world, and understand what they ACTUALLY care about.
Step 1: Put Yourself in Their Shoes
Questions to Answer
- How are they doing this now? (Current solution, daily routine)
- Why would they switch? (What's broken, what's the "last straw")
- What's their switching cost? (Time, money, political risk)
- What objections will they have? (Budget, "we have X", "too busy")
Step 2: Map Role → What They Actually Care About
The Truth: Unless they're the CEO, they want to:
- Do their job well enough to avoid criticism.
- Go home on time.
- Look smart to their boss.
Your job: Connect your offer to THEIR personal wins.
Mapping Template
Role: [e.g., VP Sales]
Responsible for: [KPIs]
Success looks like: [Promotions, praise]
Failure looks like: [Missing targets, burnout]
Current solution: [Manual process, annoying tools]
Our solution offers:
- Business win: [Company ROI]
- Personal win: [They look like a hero, less stress]
Top 3 objections:
1. [Objection] → Preempt by: [Response]
Step 3: Preempt Objections in Your Email
Technique 1: "Poke the Bear" Questions
Frame opener as a question acknowledging current state. Instead of: "We help companies automate outbound" Try: "Have you figured out how to scale outbound without adding headcount, or is that still manual?"
Technique 2: Risk Reversal
"You only pay when it's successfully taken down" or "No upfront commitment".
Technique 3: Situational Social Proof
Instead of: "We work with Stripe" Try: "Most fintech teams hit this problem around month 3..."
Technique 4: Personal Benefit
"Not only a big win for the company, but you'd personally benefit from [specific thing]."
Step 4: Test Your Email Against the Map
- Does it acknowledge their current state?
- Does it address their #1 objection preemptively?
- Does it offer a personal win?
- Is the switching cost clear?
- Would I reply to this if I were them?
Supporting file: assets/qa-checklist.md
QA Checklist: Ship-Ready Email Standards
1. Personalization Quality
- ✅ First line references a specific signal (Custom research, AI insight, or Whole-offer).
- ✅ No hallucinations (Every fact verifiable).
- ✅ Variables properly formatted (
{{double_braces}}).
2. Banned Phrases (Delete These)
- ❌ "I hope this email finds you well"
- ❌ "I wanted to reach out"
- ❌ "We help companies..." (unless followed by proof)
- ❌ "Can I get 15 minutes?"
3. Recipient:Sender Ratio
- Count sentences about THEM vs US.
- Target ratio: 3:1 minimum.
4. Length & Punchiness Check
- Target: 50-90 words.
- The 20-Second Rule: Read aloud. If >20s, cut.
- Cut fluff: "I was wondering if", "innovative solution".
5. CTA Quality
- ✅ Low-effort reply test: Can they reply in 5 words or less?
- ✅ Value-exchange: "...so I can show you [example]"
- ❌ Bad: "Let me know your thoughts", "Schedule 15 mins".
6. Tone & Clarity
- ✅ Reads naturally aloud.
- ✅ Helpful, confident, conversational.
- ✅ Clear value proposition.
7. Punctuation & Formatting
- ✅ Em dashes consistent ("—").
- ✅ No double spaces.
- ✅ Plain text (no bold/italics).
8. Subject Line Check
- ✅ 2-4 words ("Partnership?", "Quick question") OR Whole offer.
- ❌ No "Quick question about your infrastructure" (too long/salesy).
9. Case Study Check
- ✅ Specific metric ("4.7x increase").
- ✅ Timeframe ("within 90 days").
- ✅ Customer type ("Series B SaaS").
10. The "Would I Reply?" Test
Ask honestly:
- Do they understand MY situation?
- Is there a non-obvious insight?
- Is it low-effort to reply?
- Is there a reason to engage NOW?
If NO to any → Rewrite.
Supporting file: assets/research-playbook.md
Research Playbook: Finding Custom Signals
The Research Mindset
Bad research: "Let me find their role and company size so I can plug them into my template." Good research: "What is happening in their world RIGHT NOW that makes my solution urgent?"
The best cold emails feel like you've been watching their company for weeks. Signals must be:
- Specific (not "you're growing" but "you hired 12 SDRs in Q4")
- Recent (last 90 days ideally)
- Directionally aligned with the pain your product solves
Before Research: Define Your Perfect Signal
Complete this sentence for every campaign:
"The ideal prospect would show evidence of [specific behavior/change/problem] because it means they're experiencing [pain] right now."
Research Priority (10 Minutes Max)
Tier 1: Case Studies (3 min) - START HERE
Where to look:
- Company website → /customers, /case-studies
- Blog → search for "case study"
- Press page
What to extract:
- Customer type/industry
- Problem solved
- Specific metric/outcome
- Timeframe
Variables: {{case_study_company}}, {{case_study_result}}, {{case_study_metric}}
Tier 2: Custom Signals (6-7 min) - THE DIFFERENTIATOR
Hunt for campaign-specific signals using tools.
Tool 1: Claygent (AI Web Scraper)
- Use for: Pricing pages, case studies, news summaries.
- Workflow: "Find pricing page" → Scrape → "Summarize difference between Starter and Pro".
Tool 2: ZenRows (Full Page Scraper)
- Use for: Full text of pricing, about, blog pages.
- Why: Gets nuance that summaries miss.
Tool 3: Serper (Google Search API)
- Use for: Google Reviews, news mentions.
- Workflow: Search company → Get CID → Get reviews → Extract negative review details.
Tool 4: SimilarWeb (Competitor Intelligence)
- Use for: Traffic data, keyword overlap.
- Workflow: Compare domain to competitor → "Saw {{competitor}} is taking your keywords..."
Tool 5: LinkedIn
- Use for: Recent posts, hiring activity, tenure.
- Workflow: Check recent posts (topic, date), hiring (roles, count).
Tier 3: Standard Variables (3-4 min) - BACKUP
- LinkedIn basics: Role, tenure.
- Company site: Blog topics, press.
- Hiring page: Open roles.
Signal Freshness Rules
| Signal Type | Fresh Until |
|---|---|
| Funding news | 90 days |
| LinkedIn posts | 30 days |
| Hiring activity | 60 days |
| G2 reviews | 90 days |
| Negative review | 180 days |
The "So What?" Test
Before using a signal, ask:
- Is it recent?
- Does it connect to MY offer?
- Would THEY care that I noticed?
- Can I tie it to a specific pain?
When to Skip
If after 10 minutes you find no Tier 1/2 signals and can't tie anything to your offer:
- Skip or mark for later.
- OR use Whole Offer strategy if targeting is solid.
Supporting file: assets/scoring-rubric.md
Scoring Rubric (0-100)
| Dimension | Weight | What's Measured |
|---|---|---|
| Situation Recognition | 25 pts | Specific data about them? |
| Value Clarity | 25 pts | Clear offer + proof? |
| Personalization Quality | 20 pts | Custom signal OR AI insight? |
| CTA Effort | 15 pts | 5 words or less to reply? |
| Punchiness | 10 pts | 50-90 words? No fluff? |
| Subject Line | 5 pts | 2-4 words OR whole offer? |
Scoring Guide
- 85+ = Ship it
- 70-84 = Needs one more pass
- <70 = Start over
Detailed Criteria
Situation Recognition (25 pts)
- 25: References a specific, recent event (hiring, funding, post) or precise pain point.
- 15: References general company info (industry, size).
- 0: Generic "I hope this finds you well".
Value Clarity (25 pts)
- 25: Clear "We help X do Y" + specific metric proof.
- 15: Vague value prop without proof.
- 0: Confusing or jargon-heavy.
Personalization Quality (20 pts)
- 20: Uses custom signal (Tier 1/2) or clever whole-offer.
- 10: Uses basic variables (Name, Company).
- 0: Wrong variables or hallucinations.
CTA Effort (15 pts)
- 15: Yes/No question, low friction ("Worth a look?").
- 5: "Let me know your thoughts".
- 0: "Can we schedule 15 mins?"
Punchiness (10 pts)
- 10: 50-90 words, no fluff.
- 5: 90-120 words.
- 0: >120 words or full of filler.
Subject Line (5 pts)
- 5: Intriguing (2-4 words) or clear offer.
- 0: Salesy or misleading.
Supporting file: assets/variable-schema.md
Variable Schema
Core Variables (Always try to include)
{{first_name}}{{company_name}}{{role_title}}{{department}}{{company_domain}}{{industry}}{{hq_location}}
High-Signal Variables (Use when available)
{{tenure_years}}{{recent_post_topic}},{{recent_post_date}}{{press_headline}}{{event_webinar_title}},{{event_date}}{{competitor}},{{category_competitors}}{{stack_crm}},{{stack_marketing}},{{stack_data}}{{hiring_roles}},{{open_roles_count}}{{traffic_trend}}{{conversion_goal}}{{kpi_at_risk}}
AI-Generated Variables (Dynamic)
{{ai_customer_description}}: e.g., "fitness enthusiasts who want to breathe better"{{ai_customer_type}}: e.g., "VPs of Finance"{{ai_generation}}: Flexible contextual generation based on website/LinkedIn
Custom Signal Variables (Campaign-specific)
{{g2_review_complaint}}{{github_repo_found}}{{security_page_outdated}}{{pricing_page_insight}}{{hiring_spike_dept}}{{competitor_mentioned}}{{negative_review}}{{google_cid}}{{follower_count}}
Case Study Variables
{{case_study_company}}{{case_study_result}}{{case_study_metric}}{{case_study_customer_type}}{{case_study_timeframe}}
Formatting Rules
- Always show variables in
{{double_braces}}in drafts. - Never invent facts; if unknown, omit or use broader strategy.
Common questions
How do I install Cold email personalization in Cursor, Claude Code, or Codex?
Run npx skills add gtmagents/gtm-agents --skill cold-email-personalization in the project where you want it, then ask your agent for the skill by name. The --skill flag installs only Cold email personalization, not every skill in the repository.
Where does Cold email personalization come from and what license is it under?
Cold email personalization comes from the gtmagents/gtm-agents repository on GitHub. That repository has 297 GitHub stars. The skill is published under the Apache-2.0 license.
Prefer plain text? Read the Cold email personalization guide as markdown.
Related skills
More from gtmagents
More Email skills