← Ad SuperpowersCONTENT HISTORY

Update to Ad Superpowers

Snapshot Sep 30, 2026 · 23:07 UTC · version 2.3.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "attribution-reconciler",
  "description": "This skill should be used when the user asks to \"reconcile attribution data\", \"compare conversions across platforms\", \"fix attribution discrepancies\", mentions \"which conversion number should I believe\", \"why do Meta and GA4 show different numbers\", or \"GDPR impact on tracking\". Do NOT use for: single-platform optimization (use platform-specific skills), incrementality testing design (use incrementality-testing-guide), or first-party data / CAPI implementation details (use first-party-data-strategy).",
  "included_files": [],
  "skill_md_contents": "---\nname: attribution-reconciler\ndescription: \"This skill should be used when the user asks to \\\"reconcile attribution data\\\", \\\"compare conversions across platforms\\\", \\\"fix attribution discrepancies\\\", mentions \\\"which conversion number should I believe\\\", \\\"why do Meta and GA4 show different numbers\\\", or \\\"GDPR impact on tracking\\\". Do NOT use for: single-platform optimization (use platform-specific skills), incrementality testing design (use incrementality-testing-guide), or first-party data / CAPI implementation details (use first-party-data-strategy).\"\n---\n# Cross-Platform Attribution Reconciler\n\n## Purpose\n\nHelp advertisers understand and reconcile the conversion discrepancies they see between Meta, Google Ads, GA4, TikTok, and LinkedIn. This is the #1 pain point across all advertising platforms - different platforms report different numbers for the same conversions.\n\n## When to Use This Skill\n\nInvoke when user mentions:\n- **Discrepancies:** \"Why do Meta and GA4 show different numbers?\"\n- **Trust questions:** \"Which platform's data should I believe?\"\n- **Budget decisions:** \"How do I allocate budget across channels?\"\n- **Reconciliation:** \"How do I reconcile attribution across channels?\"\n- **Specific gaps:** \"What's causing the 30% discrepancy I'm seeing?\"\n\n## Required Tools\n\nUse these MCP tools to pull live data when diagnosing attribution discrepancies:\n\n| Tool | Purpose |\n|------|---------|\n| `ga4_run_report` | Pull GA4 Key Events (conversions) as neutral baseline |\n| `meta_query` | Pull Meta campaign conversions by attribution window |\n| `google_ads_run_gaql` | Pull Google Ads conversion data for comparison |\n| `tiktok_get_report` | Pull TikTok conversion data |\n| `linkedin_get_analytics` | Pull LinkedIn conversion data |\n\n**Recommended diagnostic sequence:**\n```\n1. ga4_run_report(property_id=\"...\", start_date=\"2026-03-08\", end_date=\"2026-04-05\", metrics=[\"keyEvents\"], dimensions=[\"date\"])\n2. meta_get_insights(account_id=\"act_...\", level=\"campaign\", date_preset=\"last_28d\", fields=[\"spend\",\"actions\",\"impressions\"])\n3. google_ads_run_gaql(customer_id=\"...\", query=\"SELECT campaign.name, metrics.conversions, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_28_DAYS\")\n```\n\n---\n\n## Quick Reference: Expected Discrepancies\n\nThese discrepancy ranges are **normal** and don't necessarily indicate a problem:\n\n| Platform Comparison | Expected Difference | Primary Cause |\n|--------------------|--------------------| --------------|\n| Meta vs GA4 | Meta +15-30% higher | View-through + modeled conversions |\n| Google Ads vs GA4 | Google +10-25% higher | Enhanced Conversions + modeling |\n| TikTok vs GA4 | TikTok +20-40% higher | VTA attribution (30% of conversions) |\n| LinkedIn vs GA4 | LinkedIn +15-35% higher | Long B2B cycles, cross-device |\n| GA4 vs All | GA4 -18-35% lower | Cookie blocking, consent mode |\n\n## Decision Framework: When to Investigate\n\n```\n                         What's the discrepancy level?\n                                    |\n        +---------------------------+---------------------------+\n        |                           |                           |\n        v                           v                           v\n     <15%                       15-35%                       >35%\n   ─────────                   ─────────                   ─────────\n        |                           |                           |\n        v                           v                           v\n   NORMAL                    EXPECTED                    INVESTIGATE\n   No action                 Check attribution           Check implementation\n   needed                    windows first               issues\n```\n\n### Investigation Checklist (>35% Discrepancy)\n\n**Step 1: Technical Implementation**\n- [ ] Is the pixel/tag firing correctly? (Test with browser dev tools)\n- [ ] Is server-side tracking (CAPI) set up?\n- [ ] Are event IDs deduplicated properly?\n- [ ] Are UTM parameters consistent across all ad URLs?\n- [ ] Is Consent Mode v2 implemented? (Required for EEA since March 2024 — includes `ad_user_data` and `ad_personalization` parameters)\n\n**Step 2: Attribution Settings**\n\n| Platform | Where to Check | Default Setting |\n|----------|---------------|-----------------|\n| Meta | Settings > Attribution | 7-day click, 1-day view |\n| Google Ads | Tools > Conversions > Settings | Last-click (or DDA) |\n| GA4 | Admin > Attribution Settings | Cross-channel DDA (reports Key Events, not \"Conversions\") |\n| TikTok | Assets > Events > Attribution | 7-day click, 1-day view |\n| LinkedIn | Account Settings > Attribution | 30-day click, 7-day view |\n\n**Step 3: Common Technical Issues**\n\n| Issue | Symptom | Fix |\n|-------|---------|-----|\n| Broken pixel | GA4 shows 0, platform shows conversions | Reinstall/verify pixel |\n| Missing UTM | Traffic shows as \"direct\" in GA4 | Add UTM parameters |\n| Event mismatch | Different event names across platforms | Standardize naming |\n| Time zone | Conversions on different days | Align time zones |\n| Currency | Revenue doesn't match | Use same currency code |\n\n## Which Number to Use: Decision Framework\n\n```\n                    What's your use case?\n                            |\n    +---------------+-------+-------+---------------+---------------+\n    |               |               |               |               |\n    v               v               v               v               v\nOPTIMIZING      CROSS-CHANNEL    REPORTING      STRATEGIC       TRUE\nSINGLE          BUDGET           TO             PLANNING        INCREMENTAL\nPLATFORM        ALLOCATION       STAKEHOLDERS                   VALUE\n    |               |               |               |               |\n    v               v               v               v               v\nUse             Use unified      Use GA4 as     Use MMM         Run\nplatform's      BI dashboard     source of      outputs         incrementality\nown data        or GA4           truth                          tests\n```\n\n### Detailed Guidance by Use Case\n\n#### 1. Optimizing a Single Platform\n**Use: Platform's own data**\n\nThe platform's algorithm optimizes based on its own signals. Optimizing Meta campaigns based on GA4 data means fighting the algorithm.\n\n*Example: Meta reports 100 conversions, GA4 shows 70. Optimize within Meta Ads Manager using Meta's 100.*\n\n#### 2. Cross-Channel Budget Allocation\n**Use: Unified BI or GA4 Key Events (with caveats)**\n\nNeed apples-to-apples comparison. GA4 uses consistent attribution across channels.\n\n> **Terminology note:** GA4 renamed \"Conversions\" to **Key Events** in 2024. In GA4 reports, look for \"Key events\" (formerly conversions). Google Ads still shows \"Conversions\" — those are imported from GA4 Key Events or set up via Google Ads conversion tracking. Don't confuse the two.\n\n**Caveats:**\n- GA4 underreports by 18-35%\n- Add modeling factor: multiply GA4 by 1.2-1.4\n- Or use MMM for strategic allocation\n\n#### 3. Reporting to Stakeholders\n**Use: GA4 Key Events as single source of truth + context**\n\nConsistency matters for trust. Explain discrepancies upfront.\n\n*Script: \"We use GA4 Key Events as our source of truth for cross-channel comparison. Note that GA4 captures ~70-80% of true conversions due to cookie restrictions. Platform dashboards show higher numbers due to view-through attribution and modeling.\"*\n\n#### 4. Strategic Planning\n**Use: Marketing Mix Modeling (MMM)**\n\nMMM accounts for upper-funnel impact, offline conversions, and cross-channel effects.\n\n*Best for: Budget >$50K/month, multiple channels, brand + performance mix.*\n\n#### 5. Understanding True Incremental Value\n**Use: Incrementality testing**\n\nOnly way to know what would be lost if a channel were turned off.\n\n**Methods:**\n- Geo holdouts (recommended)\n- Ghost ads\n- Pre/post analysis\n\n## Attribution Window Comparison\n\n### What Each Platform Captures\n\n```\nUser Journey: Ad View (Day 0) -> Website Visit (Day 3) -> Purchase (Day 5)\n\nPlatform Attribution:\n─────────────────────\n\nMETA (7-day click + 1-day view):\n├─ Day 0: View ──────────────────────────────► ✓ Counted (view-through)\n├─ Day 3: Click ─────────────────────────────► ✓ Counted (7-day click)\n└─ Day 5: Purchase\n\nGOOGLE ADS (Last-click):\n├─ Day 0: View ──────────────────────────────► ✗ Not counted\n├─ Day 3: Click (if Google was last) ────────► ✓ Counted\n└─ Day 5: Purchase\n\nGA4 (Cross-channel DDA):\n├─ Day 0: View ──────────────────────────────► Partial credit\n├─ Day 3: Click ─────────────────────────────► Partial credit\n└─ Day 5: Purchase (only if cookie persists) ─► May undercount\n\nTIKTOK (7-day click + optional VTA):\n├─ Day 0: View ──────────────────────────────► ✓ If VTA enabled (+30%)\n├─ Day 3: Click ─────────────────────────────► ✓ Counted\n└─ Day 5: Purchase\n```\n\n### Recommended Window Alignment\n\n| Platform | Recommended Setting | Notes |\n|----------|-------------------|-------|\n| Meta | 7-day click, 1-day view | Default is fine |\n| Google Ads | Data-driven attribution | Better than last-click |\n| GA4 | Cross-channel DDA | Default is fine |\n| TikTok | 7-day click, 1-day view | Match Meta |\n| LinkedIn | 30-day click (B2B needs longer) | Don't shorten |\n\n## Privacy Impact Assessment\n\n### iOS 14+ Impact by Platform\n\n| Platform | Data Loss | Mitigation | Recovery |\n|----------|-----------|------------|----------|\n| Meta | 30-50% | CAPI, AEM, broad targeting | ~70% with CAPI |\n| Google | 15-25% | Enhanced Conversions, Consent Mode | ~85% with EC |\n| TikTok | 20-35% | Events API, SKAN | ~75% with Events API |\n| LinkedIn | 10-20% | Insight Tag, CAPI (beta) | ~90% with proper setup |\n\n### Consent Mode Impact\n\nWith Consent Mode V2 properly implemented:\n- **Consented users:** Full tracking\n- **Non-consented users:** Modeled conversions (60-80% accuracy)\n- **Net effect:** ~10-15% undercount vs pre-privacy world\n\n### 🇪🇺 EU/GDPR-Specific Impact (DDMA 2025 Data)\n\nEuropean advertisers face additional signal loss due to GDPR compliance:\n\n| Metric | EU | US | Delta | Impact |\n|--------|----|----|-------|--------|\n| Cookie consent opt-in | ~50% | ~78% (Meta) | -28pp | Smaller addressable audiences |\n| CTR impact | -2.1% | Baseline | -2.1pp | Lower campaign efficiency |\n| Conversion rate | -5.4% | Baseline | -5.4pp | Higher CPAs |\n| Revenue per click | -5.7% | Baseline | -5.7pp | Reduced ROAS |\n| Acquisition costs | +25% | Baseline | +25% | SMB impact especially |\n\n#### EU Consent Rates by Country\n| Country | Consent Rate | Implication |\n|---------|--------------|-------------|\n| Germany | 62% | Best EU performance |\n| Netherlands | ~55% | Above EU average |\n| France | 38% | Lowest major market |\n| EU Average | ~50% | vs 32% US opt-in rate |\n\n**Critical Insight:** EU advertisers should expect:\n- +20-35% higher attribution discrepancies vs US benchmarks\n- Meta underreports by additional 10-15% in low-consent markets (France)\n- GA4 modeling less accurate (60-70% vs 80% in US)\n\n### Privacy Signal Loss Compensation Recommendations\n\n#### For EU Advertisers (High Privacy Impact)\n\n**Tier 1: Essential (Do First)**\n1. **Implement Consent Mode V2**\n   - Recovers 60-80% of lost signals via Google modeling\n   - Required for Google Ads in EEA since March 2024\n\n2. **Deploy Server-Side Tracking (CAPI)**\n   - Meta CAPI: Recovers ~70% of ATT signal loss\n   - Google Enhanced Conversions: Recovers ~85%\n   - TikTok Events API: Recovers ~75%\n\n3. **Configure Event ID Deduplication**\n   - Prevents double-counting between browser + server\n\n**Tier 2: Advanced (Strong Signal Recovery)**\n1. **First-Party Data Matching**\n   - Meta Advanced Matching (email, phone hashes)\n   - Google Customer Match\n   - LinkedIn Matched Audiences\n\n2. **Zero-Party Data Collection**\n   - Progressive profiling in forms\n   - Quiz/survey data for segmentation\n\n3. **Probabilistic Modeling**\n   - Meta Modeled Conversions\n   - Google Enhanced Attribution\n\n**Tier 3: Strategic (Long-Term)**\n1. **Marketing Mix Modeling (MMM)**\n   - Accounts for untracked conversions\n   - Best for budgets >€50K/month\n\n2. **Incrementality Testing**\n   - Geo holdouts quarterly\n   - Ghost ads for validation\n\n3. **CDP Implementation**\n   - Unified customer view\n   - Privacy-compliant audience building\n\n### EU Attribution Adjustment Factors\n\nApply these multipliers when comparing EU platforms to GA4:\n\n| Platform | Standard Adjustment | EU Adjustment (Low Consent) |\n|----------|--------------------|-----------------------------|\n| Meta | +15-30% | +25-40% |\n| Google Ads | +10-25% | +15-30% |\n| TikTok | +20-40% | +30-50% |\n| LinkedIn | +15-35% | +20-45% |\n\n*Example: If Meta reports 100 conversions and GA4 reports 60 in Germany (62% consent), the 67% difference is likely within normal range for EU.*\n\n## Validation Approaches\n\n### Method 1: Geo Holdout Test (Recommended)\n\n```\nSetup:\n1. Select 2-4 similar geographic regions\n2. Turn off ads in half (control)\n3. Run normally in others (test)\n4. Measure conversion difference\n\nAnalysis:\n- Incremental lift = Test conversions - Control conversions\n- True ROAS = Incremental revenue / Ad spend\n\nTimeline: 4-6 weeks minimum\nBudget: ~10% of total to holdout\n```\n\n### Method 2: Cross-Reference with Source of Truth\n\n```\nCompare platform conversions to:\n- CRM closed deals (ultimate truth)\n- E-commerce platform orders (Shopify, etc.)\n- Payment processor (Stripe, PayPal)\n\nCalculate platform accuracy:\nPlatform Accuracy = Platform Reported / Verified Conversions\n```\n\n### Method 3: Triangulation\n\n```\nExample:\n- Meta: 100 conversions\n- Google: 80 conversions\n- GA4: 60 conversions\n- CRM: 85 actual deals\n\nThen:\n- Meta overcounts by ~18%\n- Google undercounts by ~6%\n- GA4 undercounts by ~29%\n\nApply these factors to future reporting.\n```\n\n## Practical Recommendations by Budget\n\n### For Small Advertisers ($10K-50K/month)\n\n1. **Accept discrepancies exist** - don't chase perfect attribution\n2. **Use GA4 for unified reporting** - explain undercount to stakeholders\n3. **Optimize within each platform** - use platform data for platform optimization\n4. **Run simple holdout test** - turn off one channel for 2 weeks quarterly\n\n### For Mid-Market ($50K-200K/month)\n\n1. **Implement server-side tracking** - CAPI, Enhanced Conversions\n2. **Build unified dashboard** - BigQuery/Looker with blended data\n3. **Apply platform accuracy factors** - adjust based on CRM validation\n4. **Consider lightweight MMM** - tools like Adinton, Marketing Evolution\n\n### For Enterprise ($200K+/month)\n\n1. **Full MMM implementation** - Meridian, Marketing Evolution, custom\n2. **Regular incrementality testing** - quarterly geo holdouts\n3. **Multi-touch attribution** - Northbeam, Triple Whale, Ruler\n4. **Privacy-first infrastructure** - CDP, server-side, first-party data\n\n## Online-to-Offline (O2O) Attribution\n\nFor retail, hospitality, and service businesses with physical locations, online ads often drive offline conversions. This is a critical blind spot in digital attribution.\n\n### O2O Attribution Methods by Platform\n\n#### Google Ads Store Visits\n**Best for:** Retailers, restaurants, service providers with physical locations\n\n| Requirement | Details |\n|-------------|---------|\n| Minimum locations | 10+ in most countries |\n| Minimum conversions | ~100K ad clicks, ~thousands of store visits/month |\n| Location data | Google My Business linked |\n| Privacy | Based on aggregated, anonymized Location History |\n\n**How to Enable:**\n1. Link Google My Business to Google Ads\n2. Enable location extensions\n3. Reach volume threshold (~30 days)\n4. Store Visit conversions auto-populate\n\n**Accuracy:** ~70-80% (Google claim: 99% confidence)\n\n#### Meta Offline Conversions\n\n**Best for:** Any business with CRM/POS data\n\n| Method | Setup Complexity | Accuracy |\n|--------|-----------------|----------|\n| Offline Conversions API | Medium | High (hashed match) |\n| Partner Integrations (Square, Lightspeed) | Low | Medium |\n| Manual Upload | High | Variable |\n\n**How to Enable:**\n1. Navigate to Events Manager > Offline Events\n2. Create Offline Event Set\n3. Upload CRM/POS data with event_time, email/phone hashes, value\n4. Match window: 1-28 days (default: 7-day click)\n\n**Key Fields for Upload:**\n```\nevent_time, event_name, value, currency,\nmatch_keys: {email, phone, fn, ln, zip, country}\n```\n\n#### LinkedIn Offline Conversions\n\n**Best for:** B2B with long sales cycles\n\n| Feature | Details |\n|---------|---------|\n| Match rate | Email-based, typically 30-50% |\n| Sales cycle | Supports 90-day lookback |\n| CRM integration | Salesforce, HubSpot, Marketo native |\n\n**How to Enable:**\n1. Campaign Manager > Account Assets > Offline Conversions\n2. Connect CRM or upload CSV\n3. Map fields (email required, company optional)\n4. Set attribution window (default: 30-day)\n\n#### TikTok Offline Events\n\n**Status:** Limited availability (2025)\n\n| Capability | Status |\n|------------|--------|\n| Events API | Available (requires developer setup) |\n| Direct integrations | Shopify, Salesforce (beta) |\n| Store visits | Not available |\n\n### O2O Attribution Decision Framework\n\n```\n                Do you have physical locations?\n                            |\n              +-------------+-------------+\n              |                           |\n             YES                          NO\n              |                     Use online-only\n    +---------+---------+              attribution\n    |                   |\n  10+ locations?    <10 locations?\n    |                   |\n    v                   v\nGoogle Store        Use Offline\nVisits eligible     Conversions API\n    |               (Meta, LinkedIn)\n    v\nEnable Store\nVisits + Offline\nConversions for\ntriangulation\n```\n\n### O2O Reconciliation: Expected Discrepancies\n\n| Comparison | Expected Gap | Reason |\n|------------|-------------|--------|\n| Online Conv vs Store Visits | Store +20-50% | Many online-influenced visits untracked |\n| Platform O2O vs POS data | Platform -30-50% | Match rate limitations |\n| Google Store Visits vs Meta O2O | Variable | Different methodologies |\n\n### Geo Holdout for O2O Validation\n\nThe gold standard for O2O attribution validation:\n\n```\nSetup:\n1. Select matched metro areas (similar demographics, store density)\n2. Split: 50% test (ads on), 50% control (ads off)\n3. Run for 4-6 weeks minimum\n4. Measure: Store traffic + sales in both groups\n\nCalculation:\nIncremental Store Visits = Test Area Visits - Control Area Visits\nIncremental Revenue = Test Area Revenue - Control Area Revenue\nTrue O2O ROAS = Incremental Revenue / Ad Spend (Test Area)\n\nExample:\n- Test area: 10,000 store visits, €500K revenue, €50K ad spend\n- Control area: 7,500 store visits, €375K revenue, €0 ad spend\n- Incremental: 2,500 visits, €125K revenue\n- True O2O ROAS: €125K / €50K = 2.5x\n```\n\n### Retail-Specific Recommendations\n\n| Budget Level | O2O Attribution Approach |\n|--------------|-------------------------|\n| <€10K/month | Manual POS correlation (pre/post analysis) |\n| €10-50K/month | Meta/LinkedIn Offline Conversions |\n| €50-200K/month | + Google Store Visits + quarterly geo holdouts |\n| €200K+/month | Full MMM with O2O modeling |\n\n## Quick Reference Card\n\n### When Platforms Disagree\n\n| Scenario | Likely Cause | Action |\n|----------|-------------|--------|\n| Meta >> GA4 | View-through attribution | Normal if <30% gap |\n| Google >> GA4 | Enhanced Conversions modeling | Normal if <25% gap |\n| TikTok >> GA4 | VTA + in-app browser | Normal if <40% gap |\n| GA4 >> Platform | Unlikely (GA4 usually lower) | Check for tracking issue on platform |\n| All platforms way off | Technical issue | Audit tracking implementation |\n\n### Rule of Thumb\n\n**Trust overlap, not outliers.**\n\nIf three platforms agree on directional trends (up/down, better/worse), trust that signal even if absolute numbers differ.\n\n## Output Template\n\nWhen diagnosing attribution issues, provide:\n\n```\n## Attribution Diagnosis\n\n### Discrepancy Analysis\n- Platform A vs Platform B: X% difference\n- Expected range: Y-Z%\n- Status: Normal / Investigate\n- Region: [EU/US/Global] - affects expected ranges\n\n### 🇪🇺 EU Privacy Context (if applicable)\n- Consent rate estimate: [Country-specific %]\n- Additional signal loss: [+X% vs US baseline]\n- EU-adjusted expected range: [Y-Z%]\n\n### Likely Causes (Ranked)\n1. [Most likely cause]\n2. [Second most likely]\n3. [Third most likely]\n\n### O2O Attribution (if retail/offline)\n- Store Visits available: [Yes/No]\n- Offline Conversions setup: [Yes/No]\n- Estimated O2O contribution: [X% of total conversions]\n- Validation: [Geo holdout recommended / POS correlation]\n\n### Recommendations\n\n**Immediate Actions:**\n- [Action 1]\n- [Action 2]\n\n**Technical Improvements:**\n- [Improvement 1]\n- [Improvement 2]\n\n**Privacy Signal Recovery (Priority Order):**\n1. [Highest impact action - e.g., CAPI if not implemented]\n2. [Second priority]\n3. [Third priority]\n\n**Which Number to Use:**\n- For [use case]: Use [platform]\n- For [use case]: Use [platform]\n- For O2O: Use [triangulation method]\n\n### Validation Approach\n- [Recommended validation method]\n- For O2O: [Geo holdout / POS correlation recommended]\n```\n\n---\n\n*Based on 2025-2026 attribution research across Meta, Google, LinkedIn, TikTok, and GA4.*\n*EU benchmarks from DDMA Privacy Monitor 2025, IAB Europe 2026.*\n"
}

SHA-256: 1827973cf01adaeaf52d144c3e774f6d69cad860ec7330991da581762749928b