Paid Media

Retargeting Copy Cold/Warm/Hot: One Claude Session, Three Funnel Stages

Retargeting Copy Cold/Warm/Hot: One Claude Session, Three Funnel Stages
Contents

The default Meta retargeting setup serves the same ad to someone who scrolled past your homepage 89 days ago and someone who abandoned cart 4 hours ago. That's the bug nobody talks about. The platform will happily let you point one ad set at "Website visitors, last 90 days" and call it a retargeting strategy, but you've just blurred together three completely different psychological states and asked one piece of copy to do the job of three.

I had this beaten into me on a DTC skincare account where the "retargeting" line item was the worst-performing slot in the funnel — ROAS 1.1x against a 3.2x prospecting line, which is the opposite of how it's supposed to work. The fix wasn't more budget or fancier creative. It was splitting one ad set into three and writing copy that matched where the user actually was.

What follows is the single Claude session I run now for every retargeting brief. The "one session" part matters more than it sounds — I'll get to why.

The three temperatures, defined precisely

Before any prompt, you need clear definitions. Sloppy audience boundaries produce sloppy copy. These are the ones I use as a default, adjusted per business cycle length:

  • Cold (top-of-retargeting funnel) — Site visitors 30–90 days, no engagement beyond a single page view. They saw you once. They don't remember your brand name. CTR for ads here typically lands 0.4–0.8% in my e-commerce accounts.
  • Warm (mid-retargeting funnel) — Visited 2+ pages or watched 50%+ of a video ad in the last 30 days, no add-to-cart. They recognize the brand. They have an objection. CTR usually 1.2–1.8%.
  • Hot (bottom-of-retargeting funnel) — Added to cart or initiated checkout in the last 7 days, no purchase. They were one or two clicks from buying. CTR can hit 2.8–4% and ROAS routinely clears 5x if the copy doesn't fumble the moment.

Three audiences. Three psychological states. Three jobs the copy has to do. Running one ad across all three means you're optimizing for the average — which serves none of them well.

Why one Claude session, not three

The instinct is to open three prompts: "write cold retargeting copy," "write warm retargeting copy," "write hot retargeting copy." Don't. Three sessions produces three subtly different voices, three different reads on the same product, and worse — Claude can't see the gradient. It writes each in isolation and you end up with cold copy that's accidentally hotter than your warm tier.

In one session, Claude can see the escalation. You can literally tell it: "the warm variants should sound like the same brand the cold variants just introduced, but addressing the objection that visit-without-conversion implies." That continuity is impossible across separate chats.

There's also a practical reason: one session = one paste of the brief, one tone calibration, one round of corrections that propagate. I shaved roughly 35 minutes off my old multi-tab workflow the first time I switched.

The setup: a brief Claude can actually use

I start every retargeting session with the same 7-line brief. The first five lines are the standard product brief; the last two are the funnel-specific bits that most copywriters skip:

Product:        [one sentence — what it does, plainly]
Audience:       [the specific persona, with one quantifier]
Promise:        [the single outcome they buy this for]
Proof:          [one fact that makes the promise believable]
Tone:           [2-3 adjectives — "warm, specific, never urgent for urgency's sake"]
Objection:      [the #1 reason warm visitors don't convert]
Friction:       [the #1 thing hot users get stuck on before checkout]

The Objection and Friction lines are the ones that earn their keep. Without Objection, your warm copy defaults to "buy now, here's 10% off" — which is hot copy, written too early. Without Friction, your hot copy talks about brand values when the user just needs reassurance that shipping is free and returns are 30 days.

For the DTC skincare account, those two lines looked like: Objection: customers worry the formula is too rich for combination skin. Friction: shipping cost shown only at checkout step 3. Those facts changed everything downstream.

The prompt structure I run

After pasting the brief, here is the message I send Claude (Sonnet 4.5 for this, it handles the multi-stage reasoning better than Haiku):

You're writing Meta retargeting copy for the brief above. We're producing
three sets of variants, one per funnel stage. The voice stays consistent
across all three — only the job of the copy changes.

For each stage, produce 8 variants. Each variant needs:
- Primary text (max 125 chars before truncation; full version up to 400)
- Headline (max 27 chars; Meta truncates earlier than they admit)
- Description (max 27 chars)
- Why this works for THIS stage (one line)

STAGE 1 — COLD (site visitors 30–90d, no engagement beyond a pageview):
Goal: reintroduce the brand. Assume they don't remember us. Lead with
the single most distinctive thing about the product. CTA is low-friction
("see the lineup," not "buy now"). No urgency. No discount.

Wait for me to approve cold before moving to warm.

The "wait for me to approve" is non-negotiable. If you ask for all three stages at once, Claude races to fill the spec and the warm/hot sets get progressively thinner. Going one stage at a time, with you reviewing between, keeps quality flat across the funnel.

Cold variants: the reintroduction

When the cold set comes back, I cut hard. I'm looking for one thing: variants that would make sense to someone who has no memory of visiting the site. If the copy assumes prior context, it's wrong for cold.

Two patterns reliably pass my cut:

  • The signature mechanism. "The serum that uses fermented squalane instead of synthetic." Specific. Memorable. Doesn't require recall.
  • The honest framing. "If you've been browsing skincare and not sure who to trust — here's our 90-day refund." Acknowledges the user is shopping, doesn't pretend they're loyal.

What gets killed: anything starting with "Still thinking it over?" (that's warm copy mislabeled), anything with "Don't miss out" (that's hot copy mislabeled), anything that opens with the brand name (cold users don't care about your name yet, they care about what makes you different).

Eight variants in, I usually keep 3–4. Then I tell Claude what I cut and why, then move on:

Approved: variants 2, 5, 6, 8. The others assumed prior brand awareness
or leaned on urgency too early. Now do warm — site visitors who came
back at least twice in the last 30 days but didn't add to cart. They
remember us. They have the objection from the brief. Address it directly.

Warm variants: the objection killer

This is the stage everyone underinvests in. Cold ads get attention because they're the bulk of spend; hot ads get attention because they print money. Warm is the middle child — and it's where most accounts leak the most pipeline.

Warm copy has one job: dissolve the objection that's keeping them from progressing. Not "remind them you exist" — they remember. Not "create urgency" — they're not ready. Just: name the doubt, then resolve it.

For the skincare account, the variants Claude produced after seeing the Objection line included:

  • "Combination skin? The formula is non-comedogenic and water-based — tested on 200 oily-mixed-zone users before launch."
  • "Skipped checkout last time because the texture sounded heavy? It absorbs in 40 seconds. Here's a 15-second clip."
  • "The reviews that mention 'I have oily T-zone and this didn't make it worse' — we pulled 12 of them into one page. Link in bio."

Notice these don't sound like ads. They sound like a brand that paid attention to why someone bounced. That's the warm voice.

The CTA stays soft — "see the proof," "read the texture FAQ" — not "buy now." Warm users punished for early urgency convert worse, not better. I've watched this in split tests across three accounts.

Hot variants: kill the friction, then ask

Hot users were close. They added to cart. They started checkout. Something — a phone call, a shipping fee they didn't expect, second thoughts — stopped them. Hot copy has one job: address that exact something, then make the ask.

The prompt for hot:

Approved warm variants: 1, 3, 7. Now do hot — cart abandoners and
checkout starters, last 7 days. They were close. The friction from
the brief is what stopped most of them. Acknowledge it directly,
remove it where you can, and make a clear ask. Modest urgency is
okay here because the window is real (7 days = decision fatigue
sets in). Don't manufacture fake scarcity.

The hot variants for the skincare account opened with things like:

  • "Saw shipping at checkout and bailed? It's free over $40 — your cart's already there."
  • "Left your cart Tuesday. It's still saved. Here's the link straight to checkout."
  • "30-day returns. Free shipping over $40. No subscription trap. Your cart is waiting."

The last one is the friction summary — three objections answered in 17 words. It was the highest-CTR variant in the test and ran for six weeks.

What I avoid in hot copy: discount codes as the lead. A discount is a fine closer, not an opener. Opening with "10% off" trains the audience to wait for the discount on future purchases, and it conflates value with price. Lead with friction removal; offer the discount only if the friction-removal variants underperform.

Exporting: the format that actually goes into Meta

Once all three stages are approved, I ask Claude one last thing:

Output all approved variants in CSV format with columns:
stage, variant_id, primary_text, headline, description, notes

This drops straight into a Google Sheet, then into Meta Ads Manager via the bulk import. Twelve to fifteen final variants — typically 4 cold, 4–5 warm, 4–5 hot — assigned to three separate ad sets pointed at the three custom audiences.

One detail that matters: name the ad sets with the temperature in the name. RT_COLD_30-90d_pageview, RT_WARM_30d_2page_no-atc, RT_HOT_7d_atc-no-purchase. Future-you, looking at the performance report three weeks later, will thank current-you.

What to watch out for

A few things that have burned me:

  • Audience overlap. If you don't exclude warm from cold, and hot from warm, Meta serves the hot user a cold ad and you've wasted the best slot in the funnel. Set exclusions at the ad set level: cold excludes warm and hot; warm excludes hot.
  • Frequency caps per stage. Cold can handle 1–2 impressions per week without fatigue. Hot can handle 4–6 — they're closer to the decision and they're a smaller audience. One cap across the campaign starves the stage that matters most.
  • Refreshing the cold tier first. When CTR drops across the campaign, it's almost always cold tier fatigue, not hot. The audience is bigger and sees the ad more often. Refresh cold copy every 3–4 weeks; warm and hot can run 6–8 weeks before they need a refresh.

The result that made this stick

Back to the skincare account. Splitting one ad set into three and rewriting copy in a single Claude session moved retargeting ROAS from 1.1x to 3.6x over six weeks. Cold did the work of building recall; warm did the work of dissolving the texture objection; hot did the work of removing the shipping surprise. The campaign didn't get more budget. It just stopped asking one ad to do the job of three.

If you've been running retargeting as a single audience for years and the numbers feel disappointing, the fix is rarely a better hook. It's usually that you've been writing one piece of copy for three different users and hoping the average works.