Agent skill
attribution-reconciler
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\".
Filed under Analytics and reporting.
From Ad-Superpowers/ad-superpowers-plugin · 120 skills · 5 · pushed 2026-09-10
What it does when it runs
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).
Read from the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/Ad-Superpowers/ad-superpowers-plugin.git /tmp/ad-superpowers-plugin git -C /tmp/ad-superpowers-plugin sparse-checkout set "plugin/skills/attribution-reconciler" mkdir -p ~/.claude/skills/attribution-reconciler cp -R "/tmp/ad-superpowers-plugin/plugin/skills/attribution-reconciler/." ~/.claude/skills/attribution-reconciler/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
Or take the whole library
This repo ships a .claude-plugin manifest, so Claude Code can install all 120 skills at once. Plugin skills are invoked as /<plugin>:<skill>, so they never collide with your own.
/plugin marketplace add Ad-Superpowers/ad-superpowers-plugin /plugin
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from Ad-Superpowers/ad-superpowers-plugin/blob/9b6385d2d2d228e4dac096a1d6bc5715c04fa736/plugin/skills/attribution-reconciler/SKILL.md, which is licensed MIT (repository). 2,899 words, 54 headings.
Cross-Platform Attribution Reconciler
Purpose
Help 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.
When to Use This Skill
Invoke when user mentions:
- Discrepancies: "Why do Meta and GA4 show different numbers?"
- Trust questions: "Which platform's data should I believe?"
- Budget decisions: "How do I allocate budget across channels?"
- Reconciliation: "How do I reconcile attribution across channels?"
- Specific gaps: "What's causing the 30% discrepancy I'm seeing?"
Required Tools
Use these MCP tools to pull live data when diagnosing attribution discrepancies:
| Tool | Purpose |
|---|---|
ga4_run_report | Pull GA4 Key Events (conversions) as neutral baseline |
meta_query | Pull Meta campaign conversions by attribution window |
google_ads_run_gaql | Pull Google Ads conversion data for comparison |
tiktok_get_report | Pull TikTok conversion data |
linkedin_get_analytics | Pull LinkedIn conversion data |
Recommended diagnostic sequence:
1. ga4_run_report(property_id="...", start_date="2026-03-08", end_date="2026-04-05", metrics=["keyEvents"], dimensions=["date"])
2. meta_get_insights(account_id="act_...", level="campaign", date_preset="last_28d", fields=["spend","actions","impressions"])
3. google_ads_run_gaql(customer_id="...", query="SELECT campaign.name, metrics.conversions, metrics.cost_micros FROM campaign WHERE segments.date DURING LAST_28_DAYS")
Quick Reference: Expected Discrepancies
These discrepancy ranges are normal and don't necessarily indicate a problem:
| Platform Comparison | Expected Difference | Primary Cause |
|---|---|---|
| Meta vs GA4 | Meta +15-30% higher | View-through + modeled conversions |
| Google Ads vs GA4 | Google +10-25% higher | Enhanced Conversions + modeling |
| TikTok vs GA4 | TikTok +20-40% higher | VTA attribution (30% of conversions) |
| LinkedIn vs GA4 | LinkedIn +15-35% higher | Long B2B cycles, cross-device |
| GA4 vs All | GA4 -18-35% lower | Cookie blocking, consent mode |
Decision Framework: When to Investigate
What's the discrepancy level?
|
+---------------------------+---------------------------+
| | |
v v v
<15% 15-35% >35%
───────── ───────── ─────────
| | |
v v v
NORMAL EXPECTED INVESTIGATE
No action Check attribution Check implementation
needed windows first issues
Investigation Checklist (>35% Discrepancy)
Step 1: Technical Implementation
- Is the pixel/tag firing correctly? (Test with browser dev tools)
- Is server-side tracking (CAPI) set up?
- Are event IDs deduplicated properly?
- Are UTM parameters consistent across all ad URLs?
- Is Consent Mode v2 implemented? (Required for EEA since March 2024 — includes
ad_user_dataandad_personalizationparameters)
Step 2: Attribution Settings
| Platform | Where to Check | Default Setting |
|---|---|---|
| Meta | Settings > Attribution | 7-day click, 1-day view |
| Google Ads | Tools > Conversions > Settings | Last-click (or DDA) |
| GA4 | Admin > Attribution Settings | Cross-channel DDA (reports Key Events, not "Conversions") |
| TikTok | Assets > Events > Attribution | 7-day click, 1-day view |
| Account Settings > Attribution | 30-day click, 7-day view |
Step 3: Common Technical Issues
| Issue | Symptom | Fix |
|---|---|---|
| Broken pixel | GA4 shows 0, platform shows conversions | Reinstall/verify pixel |
| Missing UTM | Traffic shows as "direct" in GA4 | Add UTM parameters |
| Event mismatch | Different event names across platforms | Standardize naming |
| Time zone | Conversions on different days | Align time zones |
| Currency | Revenue doesn't match | Use same currency code |
Which Number to Use: Decision Framework
What's your use case?
|
+---------------+-------+-------+---------------+---------------+
| | | | |
v v v v v
OPTIMIZING CROSS-CHANNEL REPORTING STRATEGIC TRUE
SINGLE BUDGET TO PLANNING INCREMENTAL
PLATFORM ALLOCATION STAKEHOLDERS VALUE
| | | | |
v v v v v
Use Use unified Use GA4 as Use MMM Run
platform's BI dashboard source of outputs incrementality
own data or GA4 truth tests
Detailed Guidance by Use Case
1. Optimizing a Single Platform
Use: Platform's own data
The platform's algorithm optimizes based on its own signals. Optimizing Meta campaigns based on GA4 data means fighting the algorithm.
Example: Meta reports 100 conversions, GA4 shows 70. Optimize within Meta Ads Manager using Meta's 100.
2. Cross-Channel Budget Allocation
Use: Unified BI or GA4 Key Events (with caveats)
Need apples-to-apples comparison. GA4 uses consistent attribution across channels.
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.
Caveats:
- GA4 underreports by 18-35%
- Add modeling factor: multiply GA4 by 1.2-1.4
- Or use MMM for strategic allocation
3. Reporting to Stakeholders
Use: GA4 Key Events as single source of truth + context
Consistency matters for trust. Explain discrepancies upfront.
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."
4. Strategic Planning
Use: Marketing Mix Modeling (MMM)
MMM accounts for upper-funnel impact, offline conversions, and cross-channel effects.
Best for: Budget >$50K/month, multiple channels, brand + performance mix.
5. Understanding True Incremental Value
Use: Incrementality testing
Only way to know what would be lost if a channel were turned off.
Methods:
- Geo holdouts (recommended)
- Ghost ads
- Pre/post analysis
Attribution Window Comparison
What Each Platform Captures
User Journey: Ad View (Day 0) -> Website Visit (Day 3) -> Purchase (Day 5)
Platform Attribution:
─────────────────────
META (7-day click + 1-day view):
├─ Day 0: View ──────────────────────────────► ✓ Counted (view-through)
├─ Day 3: Click ─────────────────────────────► ✓ Counted (7-day click)
└─ Day 5: Purchase
GOOGLE ADS (Last-click):
├─ Day 0: View ──────────────────────────────► ✗ Not counted
├─ Day 3: Click (if Google was last) ────────► ✓ Counted
└─ Day 5: Purchase
GA4 (Cross-channel DDA):
├─ Day 0: View ──────────────────────────────► Partial credit
├─ Day 3: Click ─────────────────────────────► Partial credit
└─ Day 5: Purchase (only if cookie persists) ─► May undercount
TIKTOK (7-day click + optional VTA):
├─ Day 0: View ──────────────────────────────► ✓ If VTA enabled (+30%)
├─ Day 3: Click ─────────────────────────────► ✓ Counted
└─ Day 5: Purchase
Recommended Window Alignment
| Platform | Recommended Setting | Notes |
|---|---|---|
| Meta | 7-day click, 1-day view | Default is fine |
| Google Ads | Data-driven attribution | Better than last-click |
| GA4 | Cross-channel DDA | Default is fine |
| TikTok | 7-day click, 1-day view | Match Meta |
| 30-day click (B2B needs longer) | Don't shorten |
Privacy Impact Assessment
iOS 14+ Impact by Platform
| Platform | Data Loss | Mitigation | Recovery |
|---|---|---|---|
| Meta | 30-50% | CAPI, AEM, broad targeting | ~70% with CAPI |
| 15-25% | Enhanced Conversions, Consent Mode | ~85% with EC | |
| TikTok | 20-35% | Events API, SKAN | ~75% with Events API |
| 10-20% | Insight Tag, CAPI (beta) | ~90% with proper setup |
Consent Mode Impact
With Consent Mode V2 properly implemented:
- Consented users: Full tracking
- Non-consented users: Modeled conversions (60-80% accuracy)
- Net effect: ~10-15% undercount vs pre-privacy world
🇪🇺 EU/GDPR-Specific Impact (DDMA 2025 Data)
European advertisers face additional signal loss due to GDPR compliance:
| Metric | EU | US | Delta | Impact |
|---|---|---|---|---|
| Cookie consent opt-in | ~50% | ~78% (Meta) | -28pp | Smaller addressable audiences |
| CTR impact | -2.1% | Baseline | -2.1pp | Lower campaign efficiency |
| Conversion rate | -5.4% | Baseline | -5.4pp | Higher CPAs |
| Revenue per click | -5.7% | Baseline | -5.7pp | Reduced ROAS |
| Acquisition costs | +25% | Baseline | +25% | SMB impact especially |
EU Consent Rates by Country
| Country | Consent Rate | Implication |
|---|---|---|
| Germany | 62% | Best EU performance |
| Netherlands | ~55% | Above EU average |
| France | 38% | Lowest major market |
| EU Average | ~50% | vs 32% US opt-in rate |
Critical Insight: EU advertisers should expect:
- +20-35% higher attribution discrepancies vs US benchmarks
- Meta underreports by additional 10-15% in low-consent markets (France)
- GA4 modeling less accurate (60-70% vs 80% in US)
Privacy Signal Loss Compensation Recommendations
For EU Advertisers (High Privacy Impact)
Tier 1: Essential (Do First)
-
Implement Consent Mode V2
- Recovers 60-80% of lost signals via Google modeling
- Required for Google Ads in EEA since March 2024
-
Deploy Server-Side Tracking (CAPI)
- Meta CAPI: Recovers ~70% of ATT signal loss
- Google Enhanced Conversions: Recovers ~85%
- TikTok Events API: Recovers ~75%
-
Configure Event ID Deduplication
- Prevents double-counting between browser + server
Tier 2: Advanced (Strong Signal Recovery)
-
First-Party Data Matching
- Meta Advanced Matching (email, phone hashes)
- Google Customer Match
- LinkedIn Matched Audiences
-
Zero-Party Data Collection
- Progressive profiling in forms
- Quiz/survey data for segmentation
-
Probabilistic Modeling
- Meta Modeled Conversions
- Google Enhanced Attribution
Tier 3: Strategic (Long-Term)
-
Marketing Mix Modeling (MMM)
- Accounts for untracked conversions
- Best for budgets >€50K/month
-
Incrementality Testing
- Geo holdouts quarterly
- Ghost ads for validation
-
CDP Implementation
- Unified customer view
- Privacy-compliant audience building
EU Attribution Adjustment Factors
Apply these multipliers when comparing EU platforms to GA4:
| Platform | Standard Adjustment | EU Adjustment (Low Consent) |
|---|---|---|
| Meta | +15-30% | +25-40% |
| Google Ads | +10-25% | +15-30% |
| TikTok | +20-40% | +30-50% |
| +15-35% | +20-45% |
Example: If Meta reports 100 conversions and GA4 reports 60 in Germany (62% consent), the 67% difference is likely within normal range for EU.
Validation Approaches
Method 1: Geo Holdout Test (Recommended)
Setup:
1. Select 2-4 similar geographic regions
2. Turn off ads in half (control)
3. Run normally in others (test)
4. Measure conversion difference
Analysis:
- Incremental lift = Test conversions - Control conversions
- True ROAS = Incremental revenue / Ad spend
Timeline: 4-6 weeks minimum
Budget: ~10% of total to holdout
Method 2: Cross-Reference with Source of Truth
Compare platform conversions to:
- CRM closed deals (ultimate truth)
- E-commerce platform orders (Shopify, etc.)
- Payment processor (Stripe, PayPal)
Calculate platform accuracy:
Platform Accuracy = Platform Reported / Verified Conversions
Method 3: Triangulation
Example:
- Meta: 100 conversions
- Google: 80 conversions
- GA4: 60 conversions
- CRM: 85 actual deals
Then:
- Meta overcounts by ~18%
- Google undercounts by ~6%
- GA4 undercounts by ~29%
Apply these factors to future reporting.
Practical Recommendations by Budget
For Small Advertisers ($10K-50K/month)
- Accept discrepancies exist - don't chase perfect attribution
- Use GA4 for unified reporting - explain undercount to stakeholders
- Optimize within each platform - use platform data for platform optimization
- Run simple holdout test - turn off one channel for 2 weeks quarterly
For Mid-Market ($50K-200K/month)
- Implement server-side tracking - CAPI, Enhanced Conversions
- Build unified dashboard - BigQuery/Looker with blended data
- Apply platform accuracy factors - adjust based on CRM validation
- Consider lightweight MMM - tools like Adinton, Marketing Evolution
For Enterprise ($200K+/month)
- Full MMM implementation - Meridian, Marketing Evolution, custom
- Regular incrementality testing - quarterly geo holdouts
- Multi-touch attribution - Northbeam, Triple Whale, Ruler
- Privacy-first infrastructure - CDP, server-side, first-party data
Online-to-Offline (O2O) Attribution
For retail, hospitality, and service businesses with physical locations, online ads often drive offline conversions. This is a critical blind spot in digital attribution.
O2O Attribution Methods by Platform
Google Ads Store Visits
Best for: Retailers, restaurants, service providers with physical locations
| Requirement | Details |
|---|---|
| Minimum locations | 10+ in most countries |
| Minimum conversions | ~100K ad clicks, ~thousands of store visits/month |
| Location data | Google My Business linked |
| Privacy | Based on aggregated, anonymized Location History |
How to Enable:
- Link Google My Business to Google Ads
- Enable location extensions
- Reach volume threshold (~30 days)
- Store Visit conversions auto-populate
Accuracy: ~70-80% (Google claim: 99% confidence)
Meta Offline Conversions
Best for: Any business with CRM/POS data
| Method | Setup Complexity | Accuracy |
|---|---|---|
| Offline Conversions API | Medium | High (hashed match) |
| Partner Integrations (Square, Lightspeed) | Low | Medium |
| Manual Upload | High | Variable |
How to Enable:
- Navigate to Events Manager > Offline Events
- Create Offline Event Set
- Upload CRM/POS data with event_time, email/phone hashes, value
- Match window: 1-28 days (default: 7-day click)
Key Fields for Upload:
event_time, event_name, value, currency,
match_keys: {email, phone, fn, ln, zip, country}
LinkedIn Offline Conversions
Best for: B2B with long sales cycles
| Feature | Details |
|---|---|
| Match rate | Email-based, typically 30-50% |
| Sales cycle | Supports 90-day lookback |
| CRM integration | Salesforce, HubSpot, Marketo native |
How to Enable:
- Campaign Manager > Account Assets > Offline Conversions
- Connect CRM or upload CSV
- Map fields (email required, company optional)
- Set attribution window (default: 30-day)
TikTok Offline Events
Status: Limited availability (2025)
| Capability | Status |
|---|---|
| Events API | Available (requires developer setup) |
| Direct integrations | Shopify, Salesforce (beta) |
| Store visits | Not available |
O2O Attribution Decision Framework
Do you have physical locations?
|
+-------------+-------------+
| |
YES NO
| Use online-only
+---------+---------+ attribution
| |
10+ locations? <10 locations?
| |
v v
Google Store Use Offline
Visits eligible Conversions API
| (Meta, LinkedIn)
v
Enable Store
Visits + Offline
Conversions for
triangulation
O2O Reconciliation: Expected Discrepancies
| Comparison | Expected Gap | Reason |
|---|---|---|
| Online Conv vs Store Visits | Store +20-50% | Many online-influenced visits untracked |
| Platform O2O vs POS data | Platform -30-50% | Match rate limitations |
| Google Store Visits vs Meta O2O | Variable | Different methodologies |
Geo Holdout for O2O Validation
The gold standard for O2O attribution validation:
Setup:
1. Select matched metro areas (similar demographics, store density)
2. Split: 50% test (ads on), 50% control (ads off)
3. Run for 4-6 weeks minimum
4. Measure: Store traffic + sales in both groups
Calculation:
Incremental Store Visits = Test Area Visits - Control Area Visits
Incremental Revenue = Test Area Revenue - Control Area Revenue
True O2O ROAS = Incremental Revenue / Ad Spend (Test Area)
Example:
- Test area: 10,000 store visits, €500K revenue, €50K ad spend
- Control area: 7,500 store visits, €375K revenue, €0 ad spend
- Incremental: 2,500 visits, €125K revenue
- True O2O ROAS: €125K / €50K = 2.5x
Retail-Specific Recommendations
| Budget Level | O2O Attribution Approach |
|---|---|
| <€10K/month | Manual POS correlation (pre/post analysis) |
| €10-50K/month | Meta/LinkedIn Offline Conversions |
| €50-200K/month | + Google Store Visits + quarterly geo holdouts |
| €200K+/month | Full MMM with O2O modeling |
Quick Reference Card
When Platforms Disagree
| Scenario | Likely Cause | Action |
|---|---|---|
| Meta >> GA4 | View-through attribution | Normal if <30% gap |
| Google >> GA4 | Enhanced Conversions modeling | Normal if <25% gap |
| TikTok >> GA4 | VTA + in-app browser | Normal if <40% gap |
| GA4 >> Platform | Unlikely (GA4 usually lower) | Check for tracking issue on platform |
| All platforms way off | Technical issue | Audit tracking implementation |
Rule of Thumb
Trust overlap, not outliers.
If three platforms agree on directional trends (up/down, better/worse), trust that signal even if absolute numbers differ.
Output Template
When diagnosing attribution issues, provide:
## Attribution Diagnosis
### Discrepancy Analysis
- Platform A vs Platform B: X% difference
- Expected range: Y-Z%
- Status: Normal / Investigate
- Region: [EU/US/Global] - affects expected ranges
### 🇪🇺 EU Privacy Context (if applicable)
- Consent rate estimate: [Country-specific %]
- Additional signal loss: [+X% vs US baseline]
- EU-adjusted expected range: [Y-Z%]
### Likely Causes (Ranked)
1. [Most likely cause]
2. [Second most likely]
3. [Third most likely]
### O2O Attribution (if retail/offline)
- Store Visits available: [Yes/No]
- Offline Conversions setup: [Yes/No]
- Estimated O2O contribution: [X% of total conversions]
- Validation: [Geo holdout recommended / POS correlation]
### Recommendations
**Immediate Actions:**
- [Action 1]
- [Action 2]
**Technical Improvements:**
- [Improvement 1]
- [Improvement 2]
**Privacy Signal Recovery (Priority Order):**
1. [Highest impact action - e.g., CAPI if not implemented]
2. [Second priority]
3. [Third priority]
**Which Number to Use:**
- For [use case]: Use [platform]
- For [use case]: Use [platform]
- For O2O: Use [triangulation method]
### Validation Approach
- [Recommended validation method]
- For O2O: [Geo holdout / POS correlation recommended]
Based on 2025-2026 attribution research across Meta, Google, LinkedIn, TikTok, and GA4. EU benchmarks from DDMA Privacy Monitor 2025, IAB Europe 2026.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- attribution by coreyhaines31 · 50,138
- utm-attribution-strategy by thatrebeccarae · 139
- suede-attribution by JasonColapietro · 135
- attribution-analyzer by ekatasingh1107 · 2
Need help setting it up?
This page tells you what attribution-reconciler does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.