Skill: leooooooow/retargeting-funnel (version 1.1.0)

--- name: Retargeting Funnel description: Designs multi-stage retargeting ad funnels that re-engage ecommerce visitors based on browsing depth — from homepage bouncers to cart abandoners — with platform-specific strategies for Meta, Google, and TikTok. --- # Retargeting Funnel Design and deploy multi-stage retargeting ad funnels that bring ecommerce visitors back at every level of buying intent, matching creative format, bid strategy, and frequency cap to each audience segment's proximity to purchase. ## Quick Reference | Decision | Strong | Acceptable | Weak | |---|---|---|---| | Audience window for cart abandoners | 1-3 days with urgency creative | 3-7 days with reminder creative | 14+ days with generic ads | | Product page viewer retargeting | Dynamic product ads showing viewed items | Category-level carousel ads | Static brand awareness ads | | Homepage bouncer strategy | Broad value-prop video ads (15s) | Lifestyle image carousel | Same ads as cart abandoners | | Frequency capping | 3-5 impressions per day per segment | 6-8 impressions per day | Uncapped or 15+ per day | | Cross-platform sequencing | Platform-specific creative per stage | Same creative resized per platform | Single platform only | | Exclusion logic | Exclude purchasers + higher-funnel segments from lower-funnel campaigns | Exclude purchasers only | No exclusions between segments | | Budget allocation by funnel stage | 50-60% bottom funnel, 25-30% mid, 15-20% top | Even split across stages | Majority spend on top funnel | | Lookback window overlap handling | Strict non-overlapping windows with priority rules | Partial overlap with bid adjustments | Fully overlapping audiences | ## Solves 1. **Wasted retargeting spend on low-intent visitors** — Segments audiences by browsing depth so budget flows to the visitors most likely to convert rather than blanketing everyone with the same ad. 2. **Cart abandonment revenue leakage** — Deploys time-sensitive, product-specific creative within hours of abandonment to recover 8-15% of lost carts. 3. **Ad fatigue from undifferentiated retargeting** — Rotates creative themes and formats across funnel stages so each visitor sees progressively relevant messaging instead of the same banner repeatedly. 4. **Cross-platform attribution confusion** — Establishes clear platform roles (Meta for discovery retargeting, Google for intent capture, TikTok for social proof) with unified audience definitions. 5. **Over-retargeting recent purchasers** — Implements exclusion audiences and suppression windows to prevent showing ads to customers who already converted. 6. **Inability to measure incremental lift from retargeting** — Builds holdout groups and incrementality tests into the funnel structure so you can prove retargeting is driving real revenue, not just claiming organic conversions. 7. **Missing the mid-funnel entirely** — Captures the product-page-viewer and collection-browser segments that most advertisers ignore, filling the gap between awareness and cart-level intent. ## Workflow ### Step 1: Audit Existing Pixel and Event Setup Before building any audiences, verify that your tracking infrastructure captures the events needed for segmentation. **Required events by platform:** - Meta Pixel: PageView, ViewContent, AddToCart, InitiateCheckout, Purchase - Google Ads: page_view, view_item, add_to_cart, begin_checkout, purchase - TikTok Pixel: PageView, ViewContent, AddToCart, InitiateCheckout, CompletePayment **Validation checklist:** - Fire each event manually and confirm it appears in the platform's event manager - Verify event parameters include product ID, value, currency, and content category - Check that the pixel fires on all pages, including dynamic product pages loaded via JavaScript - Confirm server-side event forwarding (CAPI for Meta, enhanced conversions for Google) is active to offset browser-side tracking losses **Output:** A pixel health report listing each event, its fire rate over the past 7 days, and any parameter gaps. ### Step 2: Define Audience Segments by Funnel Stage Create mutually exclusive audience segments based on the deepest action each visitor took. Exclusion logic is critical — a cart abandoner should not also appear in your homepage bouncer audience. | Segment | Definition | Lookback Window | Typical Size (% of traffic) | |---|---|---|---| | S1: Homepage Bouncers | Visited site, viewed no product pages | 30 days | 25-40% | | S2: Category Browsers | Viewed collection/category pages but no product detail pages | 21 days | 15-25% | | S3: Product Viewers | Viewed 1+ product detail pages, did not add to cart | 14 days | 15-25% | | S4: Cart Abandoners | Added 1+ items to cart, did not begin checkout | 7 days | 5-10% | | S5: Checkout Abandoners | Began checkout, did not purchase | 3 days | 2-5% | | S6: Recent Purchasers (suppress/upsell) | Completed purchase | 14-30 days | 2-5% | **Exclusion hierarchy:** Each segment excludes all segments below it. S1 excludes S2-S6. S4 excludes S5-S6. This prevents audience overlap and ensures budget is not wasted showing low-intent creative to high-intent users. ### Step 3: Design Creative by Funnel Stage Match ad format, messaging angle, and call-to-action intensity to the visitor's demonstrated intent level. **S1 — Homepage Bouncers:** - Format: 15-second video ad or lifestyle carousel - Message: Brand story, unique value proposition, social proof (press mentions, customer count) - CTA: "Discover Our Collection" or "See What's New" - Goal: Drive them back to browse **S2 — Category Browsers:** - Format: Collection-level carousel or dynamic category ads - Message: Highlight the category they browsed, show bestsellers within it - CTA: "Shop [Category Name]" or "Trending in [Category]" - Goal: Move them to product pages **S3 — Product Viewers:** - Format: Dynamic product ads (DPA) showing exact viewed items + similar products - Message: Product benefits, ratings, limited stock signals - CTA: "Still Interested?" or "Back in Stock" - Goal: Get them to add to cart **S4 — Cart Abandoners:** - Format: Dynamic ads showing carted items with price - Message: "You left something behind" with urgency (limited stock, sale ending) - CTA: "Complete Your Order" with direct cart link - Goal: Return to cart and purchase **S5 — Checkout Abandoners:** - Format: Single-product ad showing the primary carted item - Message: "Your order is waiting" — address objections (free shipping, easy returns, secure payment) - CTA: "Finish Checkout" with incentive if margin allows (5-10% discount, free shipping code) - Goal: Complete purchase ### Step 4: Configure Platform-Specific Campaigns Set up campaigns on each platform with the right objective, bid strategy, and placement. **Meta Ads:** - Use Advantage+ catalog sales for S3-S5 (dynamic product ads) - Use Traffic or Engagement objective for S1-S2 - Enable Advantage+ placements but review delivery by placement weekly - Set campaign budget optimization (CBO) within each funnel stage, not across stages **Google Ads:** - Performance Max with audience signals for S3-S5 - Standard Display with custom intent audiences for S1-S2 - YouTube retargeting for S1 with 15-second bumper ads - Set target ROAS bidding for bottom-funnel, maximize clicks for top-funnel **TikTok Ads:** - Spark Ads using organic content for S1-S2 (highest engagement rate) - Collection Ads for S3 showing viewed products - Conversion objective with value optimization for S4-S5 - Use TikTok's auto-creative optimization for format testing ### Step 5: Set Frequency Caps and Budget Allocation **Frequency caps by segment:** | Segment | Daily Cap | Weekly Cap | Rationale | |---|---|---|---| | S1 | 2-3 | 10-12 | Low intent — avoid annoyance | | S2 | 3-4 | 14-16 | Building familiarity | | S3 | 4-5 | 18-20 | High intent — stay visible | | S4 | 5-6 | 20-25 | Urgency window is short | | S5 | 5-7 | 25-30 | Highest conversion probability | **Budget allocation framework:** Allocate budget proportional to expected return, not audience size. Bottom-funnel segments are smaller but convert at 5-15x the rate of top-funnel. - S5 Checkout Abandoners: 20-25% of retargeting budget - S4 Cart Abandoners: 25-30% - S3 Product Viewers: 20-25% - S2 Category Browsers: 10-15% - S1 Homepage Bouncers: 5-10% ### Step 6: Build Measurement and Optimization Framework **Key metrics by funnel stage:** | Segment | Primary Metric | Target Benchmark | Secondary Metric | |---|---|---|---| | S1 | Click-through rate | 0.8-1.5% | Cost per site visit | | S2 | Product page view rate | 15-25% of clickers | Cost per product view | | S3 | Add-to-cart rate | 8-15% of clickers | Cost per add-to-cart | | S4 | Purchase conversion rate | 10-20% | Cost per acquisition | | S5 | Purchase conversion rate | 15-30% | Return on ad spend | **Incrementality testing:** - Hold out 10-15% of each segment from retargeting for 2-4 weeks - Compare conversion rate of exposed group vs. holdout - Calculate incremental ROAS = (revenue from exposed - revenue from holdout) / ad spend - If incremental lift is below 5% for a segment, reallocate its budget to higher-performing stages ### Step 7: Iterate with Cohort Analysis Run weekly cohort reviews to identify shifts in funnel behavior: - Track segment migration rates (what % of S1 visitors become S3 within 7 days) - Monitor time-to-conversion by segment to adjust lookback windows - A/B test creative rotations within each stage on a 2-week cycle - Refresh dynamic product feed data daily to prevent stale product images or prices - Sunset audiences that exceed their lookback window by adding rolling exclusions ## Worked Examples ### Example 1: DTC Skincare Brand ($150K/month ad spend) **Context:** A direct-to-consumer skincare brand selling $40-$120 products wants to improve retargeting efficiency. Current retargeting runs a single campaign targeting all site visitors from the past 30 days with the same carousel ad. Current ROAS on retargeting: 2.8x. **Step 1 — Pixel Audit:** Meta Pixel and Google tag are both active. TikTok pixel is installed but AddToCart event is not firing on the AJAX cart — requires developer fix. Meta CAPI is configured. Google enhanced conversions are not set up (flagged for implementation). **Step 2 — Segments Built:** | Segment | 30-Day Size | Lookback | Exclusions | |---|---|---|---| | S1: Homepage Bouncers | 85,000 | 30 days | Excludes S2-S6 | | S2: Category Browsers | 42,000 | 21 days | Excludes S3-S6 | | S3: Product Viewers | 38,000 | 14 days | Excludes S4-S6 | | S4: Cart Abandoners | 12,000 | 7 days | Excludes S5-S6 | | S5: Checkout Abandoners | 4,500 | 3 days | Excludes S6 | | S6: Purchasers (suppress) | 6,200 | 30 days | — | **Step 3 — Creative Plan:** - S1: 15-second founder story video ("Why I started this brand") + press mention carousel - S2: "Best of [Category]" carousel — top 5 products in browsed category with star ratings - S3: DPA showing viewed products + "Customers Also Loved" companion products - S4: "Still in your cart" DPA with free shipping reminder (orders over $75) - S5: Single-product ad with 10% discount code, urgency copy ("Your cart expires soon") **Step 4 — Platform Setup:** - Meta: 3 campaign groups (Top: S1-S2 / Mid: S3 / Bottom: S4-S5), CBO within each - Google: Performance Max for S3-S5, Standard Display for S1-S2 - TikTok: Paused until AddToCart pixel fix ships; planned for S1-S2 Spark Ads **Step 5 — Budget Allocation (of $45K retargeting budget, 30% of total):** - S5: $11,250 (25%) - S4: $13,500 (30%) - S3: $9,000 (20%) - S2: $6,750 (15%) - S1: $4,500 (10%) **Step 6 — Results after 8 weeks:** | Segment | ROAS | CPA | Incremental Lift | |---|---|---|---| | S5 | 9.2x | $8.40 | 22% over holdout | | S4 | 6.8x | $12.10 | 18% over holdout | | S3 | 4.1x | $22.50 | 14% over holdout | | S2 | 2.3x | $38.00 | 7% over holdout | | S1 | 1.4x | $52.00 | 3% over holdout | **Optimization decisions:** - Reduced S1 budget to 5%, reallocated to S4 (highest incremental return per dollar) - S2 creative refreshed — swapped static images for UGC video, CTR improved 40% - Overall retargeting ROAS improved from 2.8x to 5.1x --- ### Example 2: Multi-Brand Fashion Retailer ($500K/month ad spend) **Context:** An online fashion retailer selling 200+ brands at $50-$400 price points. High traffic volume (2M monthly visitors) but retargeting campaigns are poorly segmented — one campaign for "all visitors" and one for "cart abandoners." Retargeting represents 35% of total spend ($175K/month). Current blended retargeting ROAS: 3.2x. **Step 1 — Pixel Audit:** All platforms (Meta, Google, TikTok) have pixels with complete event coverage. However, product feed has 1,200 items with missing GTIN numbers and 340 items with outdated prices. Feed issues are causing DPA disapprovals. Immediate fix: sync product feed from Shopify every 4 hours instead of daily. **Step 2 — Segments Built (with sub-segments for this volume):** | Segment | 30-Day Size | Lookback | Special Rules | |---|---|---|---| | S1: Homepage Bouncers | 480,000 | 21 days | Split by traffic source (paid vs. organic) | | S2: Category Browsers | 320,000 | 14 days | Split by gender category browsed | | S3a: Single Product Viewers | 280,000 | 14 days | Viewed 1 product | | S3b: Multi-Product Viewers | 145,000 | 14 days | Viewed 3+ products (higher intent) | | S4: Cart Abandoners | 68,000 | 7 days | Split by cart value (<$100 vs. $100+) | | S5: Checkout Abandoners | 22,000 | 3 days | All treated as highest priority | | S6: Purchasers | 45,000 | 60 days | 0-14 days: suppress; 14-60 days: cross-sell | **Step 3 — Creative Plan:** - S1 (paid traffic): "New Arrivals This Week" video lookbook — recapture the interest that brought them via paid ads - S1 (organic): Brand manifesto + bestseller carousel — build brand affinity - S2: Gender-specific trend roundups ("Men's Spring Essentials" / "Women's Date Night Edit") - S3a: DPA of viewed product + 3 similar items at comparable price points - S3b: "Your Shortlist" DPA showing all viewed items in a single carousel — acknowledge their research - S4 (<$100 cart): "Don't miss out" with social proof ("2,300 people bought this today") - S4 ($100+ cart): Free expedited shipping offer to justify the larger purchase - S5: "Complete your order" with live chat CTA for objection handling + 48-hour price guarantee **Step 4 — Platform Distribution:** - Meta (60% of retargeting spend): All segments active. Advantage+ catalog for S3-S5. Video-first for S1-S2. - Google (30%): Performance Max for S3-S5 with product-level ROAS targets. YouTube pre-roll for S1. Discovery ads for S2. - TikTok (10%): S1-S2 only using Spark Ads from brand creator partnerships. Testing S3 with Collection Ads. **Step 5 — Budget Allocation ($175K retargeting):** - S5: $35,000 (20%) - S4: $52,500 (30%) - S3b: $22,750 (13%) - S3a: $17,500 (10%) - S2: $26,250 (15%) - S1: $21,000 (12%) **Step 6 — Results after 12 weeks:** | Segment | ROAS | Conv. Rate | Cost Per Purchase | |---|---|---|---| | S5 | 11.4x | 24% | $11.20 | | S4 ($100+) | 8.9x | 18% | $14.80 | | S4 (<$100) | 5.6x | 15% | $9.60 | | S3b | 5.2x | 9% | $18.40 | | S3a | 3.4x | 5% | $28.90 | | S2 | 2.1x | 2.2% | $42.00 | | S1 (paid) | 1.6x | 0.9% | $58.00 | | S1 (organic) | 1.1x | 0.5% | $71.00 | **Optimization decisions:** - Killed S1 organic retargeting (incremental lift only 1.2%) — reallocated to S4 - Doubled down on S3b multi-product viewers with higher frequency cap — this segment showed strongest incrementality (19%) - Introduced cross-sell campaign for S6 purchasers at day 14 post-purchase, generating an additional $28K/month - Blended retargeting ROAS improved from 3.2x to 5.8x over 12 weeks ## Common Mistakes 1. **Treating all site visitors as one retargeting audience.** A homepage bouncer has fundamentally different intent than a checkout abandoner. Showing them the same ad wastes budget on low-intent visitors and under-serves high-intent ones. Always segment by browsing depth. 2. **Not excluding higher-intent segments from lower-intent campaigns.** Without exclusion logic, a cart abandoner receives both the cart-specific ad and the generic "come visit us" ad. This dilutes messaging and inflates frequency. Build strict exclusion hierarchies. 3. **Setting identical lookback windows for all segments.** A 30-day window for checkout abandoners is wasteful — most who will convert do so within 72 hours. Shorter windows for higher-intent segments improve ROAS and reduce ad fatigue. 4. **Ignoring frequency caps entirely.** Retargeting without frequency limits causes ad fatigue, brand damage, and wasted impressions. Users who see the same ad 20+ times per week develop negative brand associations. Set caps and monitor them weekly. 5. **Allocating budget proportional to audience size instead of conversion probability.** Homepage bouncers are your largest audience but lowest-converting. Cart and checkout abandoners are tiny but convert at 10-20x the rate. Weight budget toward the bottom of the funnel. 6. **Using static creative for dynamic-eligible segments.** If a visitor looked at specific products, show them those exact products with dynamic product ads. Generic brand images for product viewers and cart abandoners leave conversion rate on the table. 7. **Running retargeting without incrementality measurement.** Without holdout tests, you cannot distinguish between conversions retargeting caused and conversions that would have happened organically. Many retargeting campaigns show high ROAS but near-zero incrementality on top-funnel segments. 8. **Neglecting product feed quality.** Dynamic product ads are only as good as your product feed. Outdated prices, missing images, out-of-stock items, and broken URLs in the feed erode user trust and trigger ad disapprovals. Sync feeds at minimum every 6 hours. 9. **Forgetting to suppress recent purchasers.** Showing "buy this product" ads to someone who bought it yesterday is a poor customer experience and wasted spend. Suppress purchasers for at least 14 days (longer for high-AOV or infrequent-purchase categories). 10. **Running the same creative for more than 3-4 weeks without rotation.** Even strong creative fatigues. Monitor frequency vs. CTR curves and rotate creative when CTR drops 20% below its initial benchmark. ## Resources - [Meta Ads Retargeting Best Practices](https://www.facebook.com/business/help/retargeting) — Official Meta documentation on custom audiences, dynamic ads, and catalog campaigns - [Google Ads Remarketing Guide](https://support.google.com/google-ads/answer/2453998) — Setup and optimization for Google Display, YouTube, and Performance Max remarketing - [TikTok Ads Manager Retargeting](https://ads.tiktok.com/help/) — TikTok pixel events, custom audiences, and Spark Ads setup - [Shopify Retargeting Audiences](https://help.shopify.com/en/manual/promoting-marketing/create-marketing/facebook-audiences) — Shopify-specific audience sync for Meta and Google - [Dynamic Product Ads Feed Specification](https://www.facebook.com/business/help/120325381656392) — Meta catalog feed requirements for DPA campaigns - [Google Merchant Center Feed Guide](https://support.google.com/merchants/answer/7052112) — Product feed specifications for Google Shopping and Performance Max - [Incrementality Testing Framework](https://www.facebook.com/business/help/1738164643098669) — Meta conversion lift studies and holdout group configuration

path: output-template.md
content: # Retargeting Funnel — Output Template

Use this template to document a complete retargeting funnel plan. Fill in each section based on the workflow steps in the main skill file.

---

## 1. Business Context

**Brand/Store Name:** [Name]
**Industry/Vertical:** [e.g., DTC Skincare, Fashion Retail, Home Goods]
**Monthly Site Traffic:** [Unique visitors per month]
**Average Order Value (AOV):** $[Amount]
**Current Monthly Ad Spend:** $[Total] | Retargeting portion: $[Amount] ([X]%)
**Ecommerce Platform:** [Shopify / WooCommerce / Magento / Custom]
**Current Retargeting ROAS:** [X.Xx] (if existing campaigns are running)

---

## 2. Pixel and Event Health Report

### Meta Pixel

| Event | Status | 7-Day Fire Count | Parameters Verified | Notes |
|---|---|---|---|---|
| PageView | Active / Inactive | [count] | Yes / No | |
| ViewContent | Active / Inactive | [count] | product_id, value, currency | |
| AddToCart | Active / Inactive | [count] | product_id, value, currency | |
| InitiateCheckout | Active / Inactive | [count] | value, currency, num_items | |
| Purchase | Active / Inactive | [count] | value, currency, order_id | |

**CAPI Status:** Active / Not configured
**CAPI Event Match Quality:** [Score if available]

### Google Ads Tag

| Event | Status | 7-Day Fire Count | Parameters Verified | Notes |
|---|---|---|---|---|
| page_view | Active / Inactive | [count] | Yes / No | |
| view_item | Active / Inactive | [count] | item_id, value, currency | |
| add_to_cart | Active / Inactive | [count] | item_id, value, currency | |
| begin_checkout | Active / Inactive | [count] | value, currency, items | |
| purchase | Active / Inactive | [count] | transaction_id, value | |

**Enhanced Conversions:** Active / Not configured

### TikTok Pixel

| Event | Status | 7-Day Fire Count | Parameters Verified | Notes |
|---|---|---|---|---|
| PageView | Active / Inactive | [count] | Yes / No | |
| ViewContent | Active / Inactive | [count] | content_id, value, currency | |
| AddToCart | Active / Inactive | [count] | content_id, value, currency | |
| InitiateCheckout | Active / Inactive | [count] | value, currency | |
| CompletePayment | Active / Inactive | [count] | value, currency, order_id | |

**Issues to Resolve:**
- [ ] [Describe any pixel issues, missing events, parameter gaps]
- [ ] [Developer tasks required]

---

## 3. Audience Segmentation Plan

| Segment ID | Segment Name | Definition | Lookback Window | Estimated Size | Exclusions |
|---|---|---|---|---|---|
| S1 | Homepage Bouncers | [Definition] | [X] days | [Size] | Excludes S2-S6 |
| S2 | Category Browsers | [Definition] | [X] days | [Size] | Excludes S3-S6 |
| S3 | Product Viewers | [Definition] | [X] days | [Size] | Excludes S4-S6 |
| S4 | Cart Abandoners | [Definition] | [X] days | [Size] | Excludes S5-S6 |
| S5 | Checkout Abandoners | [Definition] | [X] days | [Size] | Excludes S6 |
| S6 | Recent Purchasers | [Definition] | [X] days | [Size] | — |

**Sub-segments (if applicable):**
- [e.g., S3a: Single Product Viewers / S3b: Multi-Product Viewers]
- [e.g., S4 split by cart value threshold]

---

## 4. Creative Strategy by Segment

### S1 — Homepage Bouncers
- **Format:** [Video / Carousel / Static]
- **Message Angle:** [Description]
- **CTA:** [CTA text]
- **Creative Assets Needed:** [List]

### S2 — Category Browsers
- **Format:** [Video / Carousel / Static]
- **Message Angle:** [Description]
- **CTA:** [CTA text]
- **Creative Assets Needed:** [List]

### S3 — Product Viewers
- **Format:** [DPA / Carousel / Static]
- **Message Angle:** [Description]
- **CTA:** [CTA text]
- **Creative Assets Needed:** [List]

### S4 — Cart Abandoners
- **Format:** [DPA / Single Image / Carousel]
- **Message Angle:** [Description]
- **CTA:** [CTA text]
- **Incentive (if any):** [e.g., free shipping, discount code]
- **Creative Assets Needed:** [List]

### S5 — Checkout Abandoners
- **Format:** [DPA / Single Image]
- **Message Angle:** [Description]
- **CTA:** [CTA text]
- **Incentive (if any):** [e.g., discount code, price guarantee]
- **Creative Assets Needed:** [List]

---

## 5. Platform Campaign Structure

### Meta Ads

| Campaign | Objective | Segments | Bid Strategy | Budget | Placements |
|---|---|---|---|---|---|
| [Name] | [Objective] | [S1-S2] | [Strategy] | $[Daily] | [Placements] |
| [Name] | [Objective] | [S3] | [Strategy] | $[Daily] | [Placements] |
| [Name] | [Objective] | [S4-S5] | [Strategy] | $[Daily] | [Placements] |

### Google Ads

| Campaign | Type | Segments | Bid Strategy | Budget | Networks |
|---|---|---|---|---|---|
| [Name] | [PMax/Display/YouTube] | [Segments] | [Strategy] | $[Daily] | [Networks] |

### TikTok Ads

| Campaign | Objective | Segments | Bid Strategy | Budget | Format |
|---|---|---|---|---|---|
| [Name] | [Objective] | [Segments] | [Strategy] | $[Daily] | [Format] |

---

## 6. Frequency Caps and Budget Allocation

### Frequency Caps

| Segment | Daily Cap | Weekly Cap |
|---|---|---|
| S1 | [X] | [X] |
| S2 | [X] | [X] |
| S3 | [X] | [X] |
| S4 | [X] | [X] |
| S5 | [X] | [X] |

### Budget Allocation

| Segment | % of Retargeting Budget | Monthly Spend | Expected ROAS |
|---|---|---|---|
| S1 | [X]% | $[Amount] | [X.Xx] |
| S2 | [X]% | $[Amount] | [X.Xx] |
| S3 | [X]% | $[Amount] | [X.Xx] |
| S4 | [X]% | $[Amount] | [X.Xx] |
| S5 | [X]% | $[Amount] | [X.Xx] |
| **Total** | **100%** | **$[Amount]** | **[X.Xx]** |

---

## 7. Measurement Framework

### KPIs by Segment

| Segment | Primary KPI | Target | Secondary KPI | Target |
|---|---|---|---|---|
| S1 | [Metric] | [Value] | [Metric] | [Value] |
| S2 | [Metric] | [Value] | [Metric] | [Value] |
| S3 | [Metric] | [Value] | [Metric] | [Value] |
| S4 | [Metric] | [Value] | [Metric] | [Value] |
| S5 | [Metric] | [Value] | [Metric] | [Value] |

### Incrementality Test Plan
- **Holdout percentage:** [X]%
- **Test duration:** [X] weeks
- **Segments tested:** [List]
- **Success criteria:** Incremental lift > [X]%

---

## 8. Optimization Schedule

| Cadence | Action |
|---|---|
| Daily | Monitor delivery pacing, check for ad disapprovals, review spend vs. budget |
| Weekly | Review segment performance vs. KPIs, adjust bids, check frequency vs. CTR |
| Bi-weekly | Creative rotation review, A/B test results analysis |
| Monthly | Budget reallocation across segments, incrementality test review |
| Quarterly | Full funnel audit, lookback window adjustments, new segment exploration |

---

## 9. Open Items and Next Steps

- [ ] [Action item 1 — owner — due date]
- [ ] [Action item 2 — owner — due date]
- [ ] [Action item 3 — owner — due date]


path: audience-segmentation-guide.md
content: # Audience Segmentation Guide for Retargeting Funnels

This guide covers how to build, configure, and maintain retargeting audience segments by funnel stage across Meta, Google, and TikTok.

## Core Segmentation Principles

### Mutual Exclusivity

Every visitor should appear in exactly one funnel segment at a time. This is achieved through exclusion logic: each segment excludes all visitors who qualify for a higher-intent segment.

**Why this matters:**
- Prevents the same user from receiving ads from multiple funnel stages simultaneously
- Ensures budget is allocated to the creative most relevant to each user's intent level
- Produces clean performance data — you can attribute conversions to the correct funnel stage

**Implementation:** When building custom audiences in any platform, always apply exclusion audiences. A "Product Viewer" audience must exclude anyone who has also triggered AddToCart, InitiateCheckout, or Purchase events.

### Intent Signal Hierarchy

Rank visitor actions from lowest to highest intent. The deepest action a visitor has taken determines their segment.

| Rank | Action | Intent Level | Segment |
|---|---|---|---|
| 1 | Page view only (homepage/about/blog) | Lowest | S1: Homepage Bouncers |
| 2 | Category/collection page view | Low-Mid | S2: Category Browsers |
| 3 | Product detail page view | Mid | S3: Product Viewers |
| 4 | Add to cart | Mid-High | S4: Cart Abandoners |
| 5 | Begin checkout | High | S5: Checkout Abandoners |
| 6 | Purchase | Converted | S6: Purchasers (suppress/upsell) |

## Building Segments by Platform

### Meta Custom Audiences

**S1 — Homepage Bouncers:**
1. Go to Audiences > Create Audience > Custom Audience > Website
2. Select "People who visited specific web pages"
3. Include: URL contains "/" (all pages)
4. Exclude: Custom Audience of ViewContent event triggers
5. Exclude: Custom Audience of AddToCart event triggers
6. Exclude: Custom Audience of Purchase event triggers
7. Set retention to 30 days

**S2 — Category Browsers:**
1. Create Custom Audience > Website
2. Include: URL contains "/collections/" OR "/category/" (adjust to your URL structure)
3. Exclude: Custom Audience of ViewContent event triggers (product pages)
4. Exclude: Custom Audience of AddToCart, Purchase
5. Set retention to 21 days

**S3 — Product Viewers:**
1. Create Custom Audience > Website
2. Event: ViewContent
3. Exclude: Custom Audience of AddToCart event triggers
4. Exclude: Custom Audience of Purchase event triggers
5. Set retention to 14 days

**S4 — Cart Abandoners:**
1. Create Custom Audience > Website
2. Event: AddToCart
3. Exclude: Custom Audience of InitiateCheckout event triggers
4. Exclude: Custom Audience of Purchase event triggers
5. Set retention to 7 days

**S5 — Checkout Abandoners:**
1. Create Custom Audience > Website
2. Event: InitiateCheckout
3. Exclude: Custom Audience of Purchase event triggers
4. Set retention to 3 days

**S6 — Recent Purchasers:**
1. Create Custom Audience > Website
2. Event: Purchase
3. Set retention to 30 days (suppression) or 60 days (cross-sell after 14-day gap)

### Google Ads Audience Segments

**Using Google Ads audience manager:**

1. Navigate to Tools & Settings > Audience Manager > Segments
2. Create segments using "Website visitors" as the source

**S1 — Homepage Bouncers:**
- Segment members: "Visitors of a page"
- Page URL: All visitors
- Add "Also exclude" rules for each higher-intent segment
- Membership duration: 30 days

**S3 — Product Viewers (example):**
- Segment members: "Visitors of a page who also visited another page" — use this to target product page URL patterns
- OR use Google Analytics 4 audiences based on the `view_item` event
- Exclude users who triggered `add_to_cart` or `purchase`
- Membership duration: 14 days

**GA4 integration (recommended for precision):**
- Build audiences in GA4 using event-based conditions
- GA4 audiences auto-sync to Google Ads within 24-48 hours
- Advantage: GA4 supports complex sequencing conditions (e.g., "triggered view_item but NOT add_to_cart within the same session or any subsequent session")

### TikTok Custom Audiences

1. Go to TikTok Ads Manager > Assets > Audiences
2. Create Custom Audience > Website Traffic

**Segment configuration mirrors Meta's approach:**
- Use TikTok pixel events (ViewContent, AddToCart, etc.)
- Apply exclusion rules using "Exclude" audience settings
- Set retention windows per segment

**TikTok-specific considerations:**
- TikTok audiences require a minimum of 1,000 users to be targetable
- Smaller ecommerce sites may need to combine S4 and S5 into a single bottom-funnel segment
- TikTok's Events API (server-side) supplements browser pixel data — configure it for higher match rates

## Advanced Segmentation Strategies

### Value-Based Sub-Segments

Split cart abandoners by cart value to customize messaging and incentive strategy:

| Sub-Segment | Cart Value | Strategy | Incentive |
|---|---|---|---|
| S4-Low | Under $50 | Social proof, urgency | None (margins too thin) |
| S4-Mid | $50-$150 | Free shipping threshold nudge | Free shipping if within $10 of threshold |
| S4-High | $150+ | White-glove service, price guarantee | Free expedited shipping or 5% discount |

### Engagement Depth Sub-Segments

Split product viewers by engagement intensity:

| Sub-Segment | Behavior | Window | Creative Approach |
|---|---|---|---|
| S3a: Casual Viewer | Viewed 1 product, <30s on page | 14 days | Category-level exploration ads |
| S3b: Active Researcher | Viewed 3+ products or 2+ min on page | 14 days | DPA with all viewed items + comparison angle |
| S3c: Repeat Visitor | Viewed same product 2+ times | 7 days | Social proof + urgency ("X people viewing now") |

### Time-Decay Segmentation

Within each segment, create sub-audiences based on recency:

**Cart Abandoners example:**
- S4-Fresh: Abandoned 0-24 hours ago (highest urgency, highest conversion probability)
- S4-Warm: Abandoned 1-3 days ago (reminder with social proof)
- S4-Cooling: Abandoned 3-7 days ago (last-chance messaging, consider incentive)

**Implementation:** Create three separate audiences with different retention windows and apply the same exclusion hierarchy. S4-Fresh excludes S5-S6. S4-Warm excludes S4-Fresh and S5-S6.

### Traffic Source Segmentation

Separate retargeting audiences by how they originally arrived:

| Source | Behavior Pattern | Retargeting Implication |
|---|---|---|
| Paid search | High intent — came via keyword search | Show product-specific ads, mirror search intent |
| Paid social | Discovery-driven — clicked an ad | Remind them of the ad angle that brought them |
| Organic search | Research mode — comparing options | Differentiation messaging, review-focused creative |
| Direct / email | Brand-familiar — typed URL or clicked newsletter | Loyalty-oriented, new arrivals, exclusive access |
| Referral | Trust-transferred from referring site | Lean into the referrer's endorsement if possible |

## Audience Size Management

### Minimum Viable Audience Sizes

Each platform has practical minimum audience sizes for effective delivery:

| Platform | Minimum for Delivery | Recommended Minimum | Below Minimum Action |
|---|---|---|---|
| Meta | 100 users | 1,000+ users | Widen lookback window or merge with adjacent segment |
| Google Display | 100 users | 1,000+ users | Use broader audience signals in PMax |
| Google Search RLSA | 1,000 users | 5,000+ users | Cannot run RLSA — use display only |
| TikTok | 1,000 users | 5,000+ users | Merge segments or skip platform |

### When Segments Are Too Small

For smaller ecommerce sites (under 50K monthly visitors), full six-segment funnels may produce audiences too small for effective delivery. Consolidation options:

**Three-segment model:**
- Top: All visitors who did not add to cart (combines S1, S2, S3)
- Mid: Cart + checkout abandoners (combines S4, S5)
- Bottom: Purchasers (S6 — suppress or cross-sell)

**Four-segment model:**
- S1+S2: All non-product-page visitors
- S3: Product viewers
- S4+S5: All abandoners
- S6: Purchasers

Scale up to the full six-segment model as traffic grows and individual segments exceed 1,000 users per platform.

## Audience Hygiene and Maintenance

### Rolling Exclusions

Audiences are dynamic — users enter and exit based on their latest actions. Ensure your platform settings use rolling windows (not fixed dates) so audiences refresh automatically.

### Purchaser Suppression Timing

| Product Type | Suppression Window | Rationale |
|---|---|---|
| Consumables (skincare, supplements) | 14-21 days | Replenishment cycle — switch to replenishment ads after suppression |
| Fashion / apparel | 14-30 days | Short consideration, but give post-purchase satisfaction time |
| Electronics / high-AOV | 30-90 days | Long purchase cycle, unlikely to rebuy immediately |
| Subscription products | Ongoing | Suppress acquisition ads entirely for active subscribers |

### Weekly Audience Health Checks

- Verify audience sizes are not shrinking unexpectedly (may indicate pixel issues)
- Confirm exclusion audiences are populating correctly
- Check for audience overlap using Meta's Audience Overlap tool or Google's audience insights
- Review segment migration rates — if very few S1 visitors ever become S3, your top-funnel creative may not be working


path: platform-setup-guide.md
content: # Platform Setup Guide: Meta, Google, and TikTok Retargeting

Step-by-step configuration for retargeting pixels, events, product catalogs, and campaign structures across the three major advertising platforms.

## Meta (Facebook / Instagram)

### Pixel and Conversions API Setup

**Browser Pixel Installation:**

1. Go to Meta Events Manager > Data Sources > Add New Data Source > Web
2. Name your pixel and enter your website URL
3. Choose installation method:
   - **Shopify/WooCommerce:** Use the native integration (Settings > Sales Channels > Facebook & Instagram for Shopify)
   - **Manual:** Add the base pixel code to the `<head>` of every page
   - **Google Tag Manager:** Use the Meta Pixel template in GTM

**Required Event Configuration:**

```
Event: ViewContent
Trigger: Product detail page load
Parameters: content_ids, content_type, value, currency

Event: AddToCart
Trigger: Add-to-cart button click or AJAX cart update
Parameters: content_ids, content_type, value, currency

Event: InitiateCheckout
Trigger: Checkout page load or checkout button click
Parameters: content_ids, value, currency, num_items

Event: Purchase
Trigger: Order confirmation / thank-you page
Parameters: content_ids, value, currency, order_id
```

**Conversions API (CAPI):**
- Purpose: Server-side event tracking that supplements browser pixel data, compensating for ad blockers and iOS privacy restrictions
- Setup via: Shopify native CAPI integration, or server-side GTM with Meta's API endpoint
- Deduplication: Use `event_id` parameter on both browser pixel and CAPI events to prevent double-counting
- Target Event Match Quality score: 6.0+ (check in Events Manager > Data Sources > [Pixel] > Overview)

### Product Catalog Setup

1. Go to Commerce Manager > Catalogs > Create Catalog
2. Choose "Ecommerce" catalog type
3. Connect product feed:
   - **Shopify:** Automatic sync via Facebook & Instagram sales channel
   - **Manual feed:** Upload CSV/XML or provide a hosted feed URL
   - **Feed schedule:** Set to refresh every 4-6 hours for price/stock accuracy

**Feed quality checklist:**
- All products have unique `id` values matching ViewContent `content_ids`
- Images meet minimum 500x500px resolution
- Prices and availability are current (stale data causes ad disapprovals)
- Product titles are under 150 characters
- GTIN/MPN fields populated where applicable (improves matching)

### Campaign Structure for Retargeting

**Recommended campaign hierarchy:**

```
Campaign: [Brand] Retargeting - Top Funnel
  Objective: Traffic or Engagement
  Budget: CBO at campaign level
  Ad Set: S1 - Homepage Bouncers (30-day window)
    Audience: Custom Audience, exclusions applied
    Placements: Advantage+ (review weekly)
  Ad Set: S2 - Category Browsers (21-day window)
    Audience: Custom Audience, exclusions applied

Campaign: [Brand] Retargeting - Mid Funnel
  Objective: Sales (Advantage+ Catalog Sales)
  Budget: CBO at campaign level
  Ad Set: S3 - Product Viewers (14-day window)
    Audience: Custom Audience from ViewContent, exclusions applied
    Creative: Dynamic product ads from catalog

Campaign: [Brand] Retargeting - Bottom Funnel
  Objective: Sales (Advantage+ Catalog Sales)
  Budget: CBO at campaign level
  Ad Set: S4 - Cart Abandoners (7-day window)
    Audience: Custom Audience from AddToCart, exclusions applied
    Creative: Dynamic product ads with urgency overlay
  Ad Set: S5 - Checkout Abandoners (3-day window)
    Audience: Custom Audience from InitiateCheckout, exclusions applied
    Creative: Dynamic product ads with incentive overlay
```

**Key settings:**
- Attribution window: 7-day click, 1-day view (standard)
- Optimization: Purchase event for bottom funnel, Landing Page Views for top funnel
- Frequency cap: Set at ad set level using delivery optimization settings

## Google Ads

### Google Tag and Enhanced Conversions

**Google Tag Installation:**

1. Go to Google Ads > Tools & Settings > Conversions > New Conversion Action > Website
2. Install the Google tag (gtag.js) in the `<head>` of every page, or use GTM with the Google Ads Conversion Tracking tag

**Event configuration with gtag.js:**

```
// Product page view
gtag('event', 'view_item', {
  currency: 'USD',
  value: 29.99,
  items: [{ item_id: 'SKU123', item_name: 'Product Name' }]
});

// Add to cart
gtag('event', 'add_to_cart', {
  currency: 'USD',
  value: 29.99,
  items: [{ item_id: 'SKU123', item_name: 'Product Name', quantity: 1 }]
});

// Purchase
gtag('event', 'purchase', {
  transaction_id: 'ORDER-789',
  currency: 'USD',
  value: 59.98,
  items: [{ item_id: 'SKU123', quantity: 1 }, { item_id: 'SKU456', quantity: 1 }]
});
```

**Enhanced Conversions:**
1. Go to Tools & Settings > Conversions > Settings > Enhanced Conversions
2. Enable and choose implementation method (gtag.js, GTM, or API)
3. Pass hashed customer data (email, phone, address) with conversion events
4. This improves match rates by 5-15%, critical for retargeting audience accuracy

### Google Merchant Center and Product Feed

1. Create a Merchant Center account and link it to Google Ads
2. Upload product feed via:
   - Shopify: Google & YouTube sales channel (automatic sync)
   - Manual: Supplemental feed via Google Sheets, scheduled fetch URL, or direct upload
3. Feed must include: id, title, description, link, image_link, price, availability, brand, gtin

**Feed optimization:**
- Product titles should lead with the most searched terms
- Use `custom_label` fields (0-4) for segmenting products by margin, season, or promotion status
- Set `ads_redirect` to deep-link users back to the exact product page with UTM parameters

### Campaign Structure for Retargeting

**Performance Max (Bottom Funnel — S3, S4, S5):**

```
Campaign: [Brand] PMax Retargeting
  Goal: Sales
  Bid strategy: Target ROAS (start at current ROAS, tighten over 2 weeks)
  Audience signals:
    - Custom segment: Website visitors who added to cart (7 days)
    - Custom segment: Website visitors who viewed products (14 days)
  Asset groups:
    - Group 1: Cart/checkout abandoners (urgency-focused headlines and images)
    - Group 2: Product viewers (benefit-focused, ratings-included)
  Listing groups: All products (or filter by custom_label for high-margin items)
```

**Standard Display (Top Funnel — S1, S2):**

```
Campaign: [Brand] Display Retargeting - Awareness
  Goal: Website traffic
  Bid strategy: Maximize clicks (with CPC cap)
  Audiences:
    - Remarketing segment: All visitors, exclude product viewers and below
  Ads: Responsive display ads with brand lifestyle images
  Placements: Review and exclude low-quality placements weekly
```

**YouTube (Top Funnel — S1):**

```
Campaign: [Brand] YouTube Retargeting
  Goal: Brand awareness and reach
  Bid strategy: Target CPM
  Ad format: 15-second non-skippable bumper ads or 6-second bumpers
  Audiences: All site visitors (30 days), exclude purchasers
  Frequency cap: 3 per week per user
```

## TikTok Ads

### TikTok Pixel and Events API

**Pixel Installation:**

1. Go to TikTok Ads Manager > Assets > Events > Web Events > Set Up Web Events
2. Choose "TikTok Pixel" and select installation method:
   - **Shopify:** TikTok sales channel app (automatic)
   - **Manual:** Add pixel base code to `<head>`, then configure events
   - **GTM:** Use TikTok's GTM template

**Required events:**

```
ttq.track('ViewContent', {
  content_id: 'SKU123',
  content_type: 'product',
  value: 29.99,
  currency: 'USD'
});

ttq.track('AddToCart', {
  content_id: 'SKU123',
  content_type: 'product',
  value: 29.99,
  currency: 'USD'
});

ttq.track('InitiateCheckout', {
  value: 59.98,
  currency: 'USD'
});

ttq.track('CompletePayment', {
  content_id: 'SKU123',
  value: 59.98,
  currency: 'USD'
});
```

**Events API (Server-Side):**
- Supplement browser pixel for improved match rates
- Configure via TikTok's server-to-server integration or partner connectors
- Use the same `event_id` for deduplication between pixel and Events API

### TikTok Product Catalog

1. Go to Assets > Catalog > Create Catalog
2. Upload product feed via scheduled URL fetch or manual CSV
3. Feed requirements mirror Meta's format: id, title, description, availability, condition, price, link, image_link

### Campaign Structure for Retargeting

**Spark Ads for Top Funnel (S1, S2):**

```
Campaign: [Brand] TikTok Retargeting - Top Funnel
  Objective: Traffic
  Ad Group: S1+S2 Combined (minimum audience size consideration)
    Audience: Custom Audience from website traffic, exclude AddToCart+
    Placement: TikTok feed
    Bid: Lowest cost (auto-bid)
    Budget: Daily budget with scheduled delivery
  Ads: Spark Ads boosting organic creator content
    - Use brand's own TikTok posts or licensed creator UGC
    - Spark Ads outperform standard in-feed ads by 30-50% on engagement
```

**Collection Ads for Mid Funnel (S3):**

```
Campaign: [Brand] TikTok Retargeting - Mid Funnel
  Objective: Website conversions (ViewContent optimization)
  Ad Group: S3 - Product Viewers
    Audience: Custom Audience from ViewContent, exclude AddToCart+
  Ads: Collection Ads linking to instant gallery page
    - Hero video at top, product tiles below
    - Products pulled from catalog matching viewed categories
```

**Conversion Ads for Bottom Funnel (S4, S5):**

```
Campaign: [Brand] TikTok Retargeting - Bottom Funnel
  Objective: Website conversions (CompletePayment optimization)
  Ad Group: S4+S5 Combined
    Audience: Custom Audience from AddToCart, exclude CompletePayment
    Optimization: Value optimization (if sufficient conversion volume)
  Ads: Standard in-feed video ads
    - Show the carted product in use
    - Include price and urgency messaging in text overlay
    - CTA button: "Shop Now" linking directly to cart
```

## Cross-Platform Coordination

### Unified Audience Definitions

Maintain a master spreadsheet mapping each segment to its platform-specific audience ID:

| Segment | Meta Audience ID | Google Segment ID | TikTok Audience ID | Size | Last Updated |
|---|---|---|---|---|---|
| S1 | [ID] | [ID] | [ID] | [Size] | [Date] |
| S2 | [ID] | [ID] | [ID] | [Size] | [Date] |
| S3 | [ID] | [ID] | [ID] | [Size] | [Date] |
| S4 | [ID] | [ID] | [ID] | [Size] | [Date] |
| S5 | [ID] | [ID] | [ID] | [Size] | [Date] |

### Platform Role Assignment

Assign primary roles to avoid over-saturating users across platforms:

| Platform | Primary Role | Best Segments | Rationale |
|---|---|---|---|
| Meta | Full-funnel workhorse | S1-S5 | Largest retargeting reach, strongest DPA capabilities |
| Google | Intent capture and display reach | S3-S5 (PMax), S1 (Display/YouTube) | Search remarketing captures active shoppers; Display extends reach |
| TikTok | Social proof and discovery | S1-S3 | Strongest for video-first brand engagement; weaker for bottom-funnel conversion |

### Frequency Management Across Platforms

When running retargeting on multiple platforms, total frequency across all platforms matters:

- Target total cross-platform frequency: 8-12 impressions per day for bottom funnel, 4-6 for top funnel
- Use platform-level frequency caps that assume 40-60% audience overlap between Meta and Google
- Monitor reach vs. frequency reports weekly on each platform to detect over-saturation
- If a user is in your S4 segment on all three platforms, they could see 15+ ads per day without cross-platform caps — adjust individual platform caps accordingly


path: quality-checklist.md
content: # Retargeting Funnel Quality Checklist

Use this checklist before launching a retargeting funnel and during weekly optimization reviews. Every item should be verified or intentionally marked as not applicable.

## Tracking and Pixel Health (8 items)

- [ ] Meta Pixel fires on all site pages including dynamically loaded content
- [ ] Google Ads tag fires on all site pages with correct conversion actions
- [ ] TikTok Pixel fires on all site pages (if TikTok is in the media plan)
- [ ] ViewContent/view_item event fires on every product detail page with correct product ID, value, and currency
- [ ] AddToCart event fires on all cart addition methods (button click, AJAX cart, quick-add)
- [ ] InitiateCheckout and Purchase events fire with accurate order value and transaction ID
- [ ] Server-side tracking is active (Meta CAPI, Google Enhanced Conversions, TikTok Events API) with deduplication configured
- [ ] Event Match Quality score is 6.0+ on Meta (checked in Events Manager)

## Product Feed and Catalog (7 items)

- [ ] Product feed syncs automatically at least every 6 hours
- [ ] All active products have unique IDs that match pixel event content_ids/item_ids
- [ ] Product images meet minimum resolution requirements (500x500px for Meta, 100x100px for Google)
- [ ] Prices in the feed match live website prices (no stale pricing)
- [ ] Out-of-stock products are marked unavailable or excluded from the feed
- [ ] Product titles are descriptive and under 150 characters
- [ ] Feed has zero disapproved items in catalog diagnostics (Meta Commerce Manager, Google Merchant Center)

## Audience Segmentation (8 items)

- [ ] All funnel segments (S1 through S6) are created on each active platform
- [ ] Exclusion logic is applied: each segment excludes all higher-intent segments
- [ ] Lookback windows are appropriate per segment (shorter for higher intent)
- [ ] Recent purchasers (S6) are excluded from all acquisition retargeting campaigns
- [ ] Audience sizes meet platform minimums for delivery (1,000+ for Meta/Google, 1,000+ for TikTok)
- [ ] No unintentional audience overlap exists between segments (verified with Meta Audience Overlap tool or equivalent)
- [ ] Sub-segments are created where audience size allows (e.g., cart value splits, engagement depth splits)
- [ ] Audiences use rolling windows, not fixed date ranges

## Creative and Messaging (8 items)

- [ ] Each funnel segment has dedicated creative matching its intent level
- [ ] Dynamic product ads are active for S3 (product viewers) and S4-S5 (abandoners)
- [ ] Top-funnel creative (S1-S2) uses brand storytelling or value proposition, not product-specific hard sells
- [ ] Bottom-funnel creative (S4-S5) includes urgency elements and clear CTAs
- [ ] Ad copy does not make the viewer feel surveilled ("We saw you looking at..." is acceptable; "We tracked your every click" is not)
- [ ] All ad formats are tested across placements (feed, stories, reels for Meta; responsive display for Google)
- [ ] Creative refresh schedule is established (new variations every 2-3 weeks)
- [ ] Landing page URLs are correct and lead to relevant pages (product page for DPA, category for S2, homepage for S1)

## Campaign Configuration (7 items)

- [ ] Campaign objectives match funnel stage (traffic/engagement for top, conversions/sales for bottom)
- [ ] Bid strategies are appropriate per stage (target ROAS for bottom funnel, maximize clicks for top funnel)
- [ ] Budget allocation weights bottom-funnel segments (50-60% of retargeting spend)
- [ ] Campaign budget optimization (CBO) is set within each funnel stage, not across stages
- [ ] Frequency caps are configured per segment (lower caps for low-intent, higher for high-intent)
- [ ] Attribution windows are consistent across campaigns for comparable reporting
- [ ] Campaigns are separated by platform role (Meta full-funnel, Google intent capture, TikTok social proof)

## Measurement and Optimization (6 items)

- [ ] KPIs are defined for each funnel segment with specific targets
- [ ] Incrementality holdout groups are configured (10-15% of each segment withheld from retargeting)
- [ ] Cross-platform frequency is monitored to prevent over-saturation (target 8-12 daily for bottom funnel)
- [ ] Weekly performance review cadence is scheduled with clear owners
- [ ] Low-quality placements are reviewed and excluded weekly (Google Display Network especially)
- [ ] Creative fatigue is monitored via CTR trend analysis with rotation triggered at 20% CTR decline

## Post-Launch Validation (6 items)

- [ ] Ads are delivering to the correct audiences (spot-check with delivery insights)
- [ ] No audience segments show zero delivery after 48 hours (investigate if so)
- [ ] Dynamic product ads are pulling correct products from the catalog (preview ads in each platform)
- [ ] Landing page links from ads load correctly and match the advertised product
- [ ] Conversion tracking is recording purchases accurately (cross-reference ad platform data with ecommerce backend)
- [ ] Budget pacing is on track (no campaigns exhausting budget by midday or underspending significantly)


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)