---
name: design-retargeting-ladder
description: >-
  Lays out Meta's warm audiences as an intent-and-recency ladder - product/page viewers, then video 50%+
  viewers or IG/FB engagers, then AddToCart/InitiateCheckout non-purchasers, then short-recency cart
  abandoners - tightening the recency window (3-7 days hot, up to 180 days cool) and the offer as intent
  rises, and requiring every tier to exclude purchasers plus every tier downstream so nobody is served
  twice. Sizes ad-set budget to each tier's pool against the ~50-events/7-day threshold and matches creative
  to stage: soft reminder at top, urgency or incentive at bottom. Reach for it when retargeting runs as one
  flat visitors audience, when standing up on a newly-live pixel, or when auditing for double-serving. It
  ends at a documented tier map with windows, creative angles, and required exclusions - it does not
  implement the exclusion targeting itself (set-exclusions-and-suppression) or map the campaign/funnel
  beyond the warm layer (map-full-funnel-structure).
---
# Design a Retargeting Ladder

## Purpose
Retargeting fails when every warm visitor sees the same generic ad regardless of how close they are to
buying. This skill tiers warm audiences by intent and recency, tightens the offer as a visitor climbs the
ladder, and bakes in the exclusion logic that stops a cart abandoner from also seeing a top-of-funnel
reminder ad, turning a flat retargeting pool into a structured path toward purchase.

## When to run
- Retargeting currently runs as a single, undifferentiated "all website visitors" audience.
- Standing up retargeting for the first time on an account with pixel or engagement history.
- Funnel data shows a specific drop-off (video viewers not converting, cart abandonment) worth its own tier.
- Auditing an existing retargeting setup that shows signs of double-serving (rising frequency, flat results).

## When NOT to run
- The underlying tier audiences do not exist yet → `build-custom-audiences` first.
- You are ready to implement the exclusion mechanics the ladder calls for →
  `set-exclusions-and-suppression` (this skill designs the map; that skill applies it).
- You are mapping the full campaign/funnel structure, not just the warm retargeting layer →
  `map-full-funnel-structure`.

## Prerequisites
- Pixel firing PageView, ViewContent, AddToCart, InitiateCheckout, and Purchase (verify via `mads_list_pixels`).
- Video or engagement sources connected if video-viewer or IG/FB engagement tiers are in scope.
- Tier audiences either already built or ready to build via `build-custom-audiences`.

## Procedure
1. **List the funnel stages present in the data.** Typical set: product/page viewers, video 50%+ viewers
   or IG/FB engagers, AddToCart/InitiateCheckout non-purchasers, cart abandoners, and purchasers (used as
   the exclusion anchor, not a targeting tier).
2. **Assign source, subtype, and window per stage.** Product/page viewers: ViewContent/PageView, 30 days.
   Video/engagement (50%+ video views, IG/FB profile or page engagers): up to 180 days for the broadest
   warm-pool tier. AddToCart/InitiateCheckout non-purchasers: 14 days. Cart abandoners: 3-7 days for
   urgency. Follow the source/window logic in `build-custom-audiences`.
3. **Order tiers cold to hot.** Viewers → video/engagers → AddToCart/InitiateCheckout non-purchasers →
   cart abandoners, tightening both the recency window and the offer at each step up.
4. **Build or confirm each tier.** Where a tier audience does not exist yet, create it via
   `mads_create_custom_audience` (preview → explicit user approval → commit), then verify size with
   `mads_list_custom_audiences`.
5. **Attach downstream exclusions to every tier.** Each tier excludes purchasers within the relevant
   lookback and every tier downstream of it in the ladder (the viewer tier excludes AddToCart and
   cart-abandoner audiences, and so on), applied via `mads_create_adset`/`mads_update_adset`. The
   exclusion mechanics themselves are `set-exclusions-and-suppression`, this step just wires the map's
   requirements in.
6. **Match creative and offer tightness to tier.** Top of the ladder: soft reminder or benefit-led message.
   Middle: specific product plus objection handling. Bottom (cart abandoners): urgency or incentive. Never
   lead with a discount at the top rung, it trains cold browsers to wait for one.
7. **Size budget to pool, not ambition.** Check tier size via `mads_list_custom_audiences`/`mads_list_adsets`
   and size the daily budget (minor currency units, $20.00 = `2000`) so the ad set can plausibly reach
   ~50 optimization events in 7 days. Consolidate undersized tiers (e.g., merge AddToCart with
   InitiateCheckout) rather than running them thin.
8. **Validate before launch.** Run `mads_policy_guardrail` on the resulting targeting spec, then create
   or update ad sets via `mads_create_adset`/`mads_update_adset` (preview → explicit user approval → commit).
9. **Document the ladder.** Tier, source audience, window, exclusions applied, creative angle, and budget
   per tier, this map is what `set-exclusions-and-suppression` and future audits check against.

## Decision rules
- **Recency bands:** general viewers 30d; video/engagement up to 180d (the broadest tier this ladder
  uses, still a defined warm pool, not a default); AddToCart/InitiateCheckout non-purchasers 14d; cart
  abandoners 3-7d. Shorter window = hotter intent = more urgent offer.
- **Exclusion rule (non-negotiable):** every tier excludes purchasers within the relevant lookback and
  every audience downstream of it, a cart abandoner should never also be eligible for the top-of-funnel ad.
- **Budget-to-pool sizing:** an ad set needs ~50 optimization events/7 days to exit learning. If a tier's
  pool cannot plausibly generate that at an affordable budget, consolidate it into the adjacent tier
  instead of running it underfed.
- **Offer escalation:** soft messaging at the coldest rung, product-specific plus objection-handling in
  the middle, urgency/incentive only at the hottest rung, reserve discounts for cart abandoners.
- **Tier minimum viability:** a tier audience below the ~1,000 useful-size floor (`build-custom-audiences`)
  should be merged upward rather than run alone.
- **Done means:** every funnel stage present in the data has a tier with a defined window, a creative
  angle, and exclusions against purchasers and all downstream tiers; every tier clears a viable
  budget-to-pool ratio; the map is written down.

## Common failure modes
- **One flat, undifferentiated 30-day visitors audience** instead of tiers, the same generic ad reaches
  a cart abandoner and a casual browser alike.
- **No exclusions between tiers**, self-competition, inflated CPMs, and a purchaser still eligible for
  prospecting-style ads.
- **Leading with a discount at the top of the funnel**, training cold visitors to wait for a coupon
  instead of converting on first intent.
- **Recency windows too long for the tier** (a 180-day "cart abandoner" audience), the audience stops
  representing real intent and becomes just another slow, cold pool.
- **Splitting tiers so thin none reach ~50 events/7 days**, every ad set stays Learning Limited
  indefinitely.

## Related skills
- Run before this: `build-custom-audiences` (source tiers must exist), `map-full-funnel-structure`
  (the broader campaign/funnel map this ladder plugs into).
- Run after this: `set-exclusions-and-suppression` (implements the exclusion mechanics this design requires).
- Related: `build-lookalike-audiences` (the prospecting layer feeding the top of this ladder).
