Claude Prompt Templates for B2B Email Personalization

A tested collection of Claude prompt templates for personalizing B2B outbound and nurture emails at scale — including prompt text, required context inputs, adjustment notes, and known failure modes for each template.

AuthorAI Marketing Workbook Editorial
Published
Tags
claudeemailemail-subject-linepersonalizationprompt-engineeringB2B

B2B email personalization sits at an awkward intersection: the bar for what counts as "personalized" has risen (first-name tokens no longer move reply rates), but the volume of outreach most teams need to run makes hand-crafted emails impractical past a few dozen contacts. Claude handles this middle ground reasonably well — it can absorb structured account context and produce emails that read as researched rather than templated, as long as you give it the right inputs.

This entry documents tested prompt templates for four common B2B email scenarios: cold outbound, trigger-based outreach, multi-touch nurture sequences, and re-engagement. Each template includes the prompt text, a list of required context variables, notes on what to adjust for your situation, and documented failure modes observed during testing.

What Claude Does Well Here — and Where It Breaks Down

Before the templates: Claude's strength in B2B email personalization is synthesis. Give it a LinkedIn summary, a recent company announcement, and a clear ICP pain point, and it will connect those dots into a coherent opening hook without you having to write the logic yourself. That's genuinely useful when you're working through a list of 200 accounts.

Its weaknesses are equally predictable. It defaults to professional but slightly generic language unless you constrain the tone explicitly. It will hallucinate company details if you give it vague inputs — "they're in fintech" produces worse outputs than a specific funding announcement or product description. And it occasionally over-explains the value proposition, producing emails that are too long for cold outreach.

  • Strong: connecting specific account signals (job postings, news, product launches) to your offer
  • Strong: adjusting formality level when you specify it (e.g., "write for a VP of Engineering, not a CMO")
  • Strong: generating subject line variants from a single email body
  • Weak: inferring company context from a name alone — always provide structured inputs
  • Weak: short, punchy cold email formats — it tends toward 3–4 paragraphs unless you cap word count explicitly
  • Weak: humor and informal registers — outputs often feel forced rather than natural

Template 1: Cold Outbound — Account Signal Hook

This is the highest-volume use case. The prompt takes a specific account signal (a hiring trend, funding round, product launch, or press mention) and builds an opening that references it before transitioning to the pitch. The signal is what separates a personalized email from a mail-merge — Claude's job is to make the connection feel earned rather than mechanical.

You are writing a cold outreach email for a B2B sales team.

Context you have:
- Sender company: [SENDER_COMPANY]
- Sender role: [SENDER_ROLE]
- Recipient name: [RECIPIENT_NAME]
- Recipient title: [RECIPIENT_TITLE]
- Recipient company: [RECIPIENT_COMPANY]
- Account signal: [SIGNAL — e.g., "They announced a Series B in March and are hiring 3 enterprise AEs"]
- Our core offer: [ONE_SENTENCE_VALUE_PROP]
- Relevant pain point this signal suggests: [PAIN_POINT]
- Desired CTA: [CTA — e.g., "15-minute call this week"]

Write a cold outreach email with these constraints:
- Subject line: under 8 words, no clickbait
- Opening: reference the account signal in the first sentence without being creepy about it
- Body: 3 sentences max connecting the signal to the pain point to our offer
- CTA: one specific ask, no "let me know if you're interested"
- Total length: under 120 words
- Tone: direct, peer-to-peer, not salesy

Also generate 3 subject line variants.

Required Inputs

Template 1 variable guide
VariableWhat to Put HereCommon Mistake
SIGNALSpecific event: funding date, job posting title, press quote, product launch nameWriting 'they're growing fast' — too vague to produce a specific hook
ONE_SENTENCE_VALUE_PROPWhat you do and for whom, in plain languagePasting your homepage headline — usually too abstract
PAIN_POINTThe operational problem the signal impliesSkipping this field — Claude will invent one that may be wrong
CTAExact ask with time referenceWriting 'happy to connect' — Claude will echo the vagueness

Failure Modes

Template 2: Trigger-Based Outreach — Behavioral or Intent Signal

This template is for when a prospect has taken a trackable action — visited a pricing page, downloaded a resource, attended a webinar, or appeared in an intent data feed. The challenge is writing an email that acknowledges the signal without making the recipient feel tracked. Claude does this reasonably well when you tell it explicitly how to frame the reference.

You are writing a follow-up email triggered by a prospect behavior signal.

Context:
- Recipient name: [RECIPIENT_NAME]
- Recipient title: [RECIPIENT_TITLE]
- Recipient company: [RECIPIENT_COMPANY]
- Trigger event: [TRIGGER — e.g., "downloaded our ROI calculator for enterprise procurement teams"]
- Time since trigger: [TIME — e.g., "2 days ago"]
- Our relevant offer or resource: [OFFER]
- One outcome the recipient likely wants: [DESIRED_OUTCOME]

Write a follow-up email with these rules:
- Do NOT say "I saw you downloaded" or "I noticed you visited" — frame it as a natural follow-up
- Acknowledge the topic area they engaged with, not the tracking event itself
- Offer one additional piece of value (a case study, a calculation, a benchmark) relevant to their role
- CTA: low-friction — a question they can answer in one sentence, or a specific short call offer
- Length: 80–100 words
- Tone: helpful, not pushy

Generate the email and one subject line.

The instruction to avoid "I saw you downloaded" is necessary — without it, Claude defaults to that phrasing in roughly 60% of outputs. The reframe toward topic area ("given your interest in procurement cost reduction") reads more naturally and avoids the surveillance tone that tanks reply rates.

Template 3: Multi-Touch Nurture Sequence

This prompt generates a 3-email sequence for a single prospect segment. It's designed for marketing-owned nurture rather than SDR outbound — the tone is educational rather than sales-forward, and each email has a distinct purpose. Running this in one prompt (rather than three separate prompts) keeps the tone consistent across the sequence.

You are writing a 3-email nurture sequence for a B2B marketing team.

Segment context:
- Persona: [PERSONA — e.g., "VP of Operations at mid-market manufacturing companies, 200–1000 employees"]
- Stage in funnel: [STAGE — e.g., "aware of the problem, evaluating whether to solve it internally or buy a solution"]
- Our product category: [CATEGORY]
- Primary pain point this persona has: [PAIN]
- One customer story or data point we can reference: [PROOF — be specific; avoid vague claims]
- Desired end action after sequence: [END_CTA]

Write 3 emails:
Email 1 — Problem framing: Acknowledge the pain point with a concrete industry observation. No product pitch. End with a question or a useful resource link.
Email 2 — Solution education: Explain how companies in their position typically solve this. Introduce our category without hard-selling. Include the PROOF point.
Email 3 — Direct offer: Make a specific, low-friction offer (demo, assessment, conversation). Reference the journey of the previous two emails briefly.

For each email:
- Subject line (under 8 words)
- Body (under 150 words)
- Tone: peer-level, not vendor-y

Send interval suggestion based on typical B2B nurture pacing.

Template 4: Re-Engagement — Lapsed Prospect or Churned Trial

Re-engagement emails have a different problem than cold outreach: the recipient already knows you, which means generic value-prop language reads as lazy. This template prompts Claude to acknowledge the gap, reference something that's changed (either at your end or in their industry), and make a specific new offer.

You are writing a re-engagement email to a prospect who went cold after initial interest.

Context:
- Recipient name: [RECIPIENT_NAME]
- Time since last contact: [TIME — e.g., "4 months"]
- What they showed interest in originally: [ORIGINAL_INTEREST]
- What has changed since then (your product, their industry, a relevant event): [CHANGE]
- New offer or angle: [NEW_OFFER]
- Tone note: [TONE — e.g., "direct and brief, no guilt-tripping, no 'just checking in'"]

Write a re-engagement email:
- Acknowledge the time gap briefly and without apology
- Lead with the CHANGE — something new that makes this email worth reading
- Connect CHANGE to what they originally cared about
- Make a specific, easy CTA
- Under 100 words
- No subject lines like 'Touching base' or 'Following up' — write something that references the CHANGE

Generate the email and 2 subject line options.

The explicit instruction against "just checking in" and "touching base" is necessary. Claude will use those phrases by default when the TONE field is left empty. The CHANGE field is the load-bearing variable here — without something genuinely new to reference, the email has no reason to exist and Claude will produce a thin re-skin of the original pitch.

Adjusting These Prompts for Your Situation

Tone Calibration

Claude's default register for professional emails sits around "polished but slightly formal." If your brand voice is more direct or more conversational, add a tone instruction with a concrete example: "Match this tone: [paste a real email your best rep has sent]." Giving Claude an actual example is more reliable than describing the tone in adjectives.

Scaling Across a List

These prompts are designed for single-account generation. If you're running them against a list via the API, the most important variable to populate per-row is SIGNAL or TRIGGER — that's where the personalization actually lives. The other fields (value prop, CTA, tone) can be shared across the batch. Avoid the temptation to batch the signal field too — "they're in the healthcare space" is not a signal.

Length Control

Claude consistently runs long on cold emails unless you specify a hard word count. The templates above include word limits, but if you're adapting them, be explicit: "Do not exceed 100 words. If you exceed this, cut from the body, not the CTA." Without the second instruction, Claude tends to shorten the CTA — the part that actually drives action.

Known Limitations Across All Templates

Documented failure modes and mitigations
LimitationWhen It AppearsWorkaround
Generic hooks when signal is thinAny template where SIGNAL/TRIGGER is vagueRequire a specific, datable event in the input — reject vague signals before running the prompt
Over-long outputsCold outbound and nurture templatesAdd explicit word count cap + specify what to cut if over
Hallucinated company detailsWhen only company name is providedAlways include a factual description or paste relevant text from their website/LinkedIn
Salesy closing linesRe-engagement and nurture templatesAdd: 'Do not use phrases like excited, love to connect, or looking forward to hearing from you'
Identical subject line variantsWhen asking for 3 subject line optionsAdd: 'Each subject line must use a different structural approach (question, statement, number)'

What to Review Before Sending

Claude-generated B2B emails need a human pass before they go out. The review doesn't need to be long, but it should check for three things specifically:

  1. Factual accuracy of any company-specific claims — Claude can misread or extrapolate from vague inputs
  2. The signal reference in the opening — does it read as informed or as surveillance? Adjust the framing if it sounds like you're monitoring their activity
  3. The CTA — is it specific enough to act on? If a recipient would need to ask a clarifying question before responding, the CTA is too vague

A review pass of 30–60 seconds per email is realistic at this quality level. If you're finding you need to rewrite more than 30% of the output, the issue is usually the input variables — specifically the SIGNAL or PAIN_POINT fields being too generic.

Comments

Join the discussion with an anonymous comment.

Loading comments...