← Files Ad SuperpowersARCHIVED FILE
skills/attribution-reconciler/SKILL.md
21.2 KB · Oct 2, 2026 · 00:21 UTC
---
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)."
---
# 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_data` and `ad_personalization` parameters)
**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 |
| LinkedIn | 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 |
| LinkedIn | 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 |
| Google | 15-25% | Enhanced Conversions, Consent Mode | ~85% with EC |
| TikTok | 20-35% | Events API, SKAN | ~75% with Events API |
| LinkedIn | 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)**
1. **Implement Consent Mode V2**
- Recovers 60-80% of lost signals via Google modeling
- Required for Google Ads in EEA since March 2024
2. **Deploy Server-Side Tracking (CAPI)**
- Meta CAPI: Recovers ~70% of ATT signal loss
- Google Enhanced Conversions: Recovers ~85%
- TikTok Events API: Recovers ~75%
3. **Configure Event ID Deduplication**
- Prevents double-counting between browser + server
**Tier 2: Advanced (Strong Signal Recovery)**
1. **First-Party Data Matching**
- Meta Advanced Matching (email, phone hashes)
- Google Customer Match
- LinkedIn Matched Audiences
2. **Zero-Party Data Collection**
- Progressive profiling in forms
- Quiz/survey data for segmentation
3. **Probabilistic Modeling**
- Meta Modeled Conversions
- Google Enhanced Attribution
**Tier 3: Strategic (Long-Term)**
1. **Marketing Mix Modeling (MMM)**
- Accounts for untracked conversions
- Best for budgets >€50K/month
2. **Incrementality Testing**
- Geo holdouts quarterly
- Ghost ads for validation
3. **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% |
| LinkedIn | +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)
1. **Accept discrepancies exist** - don't chase perfect attribution
2. **Use GA4 for unified reporting** - explain undercount to stakeholders
3. **Optimize within each platform** - use platform data for platform optimization
4. **Run simple holdout test** - turn off one channel for 2 weeks quarterly
### For Mid-Market ($50K-200K/month)
1. **Implement server-side tracking** - CAPI, Enhanced Conversions
2. **Build unified dashboard** - BigQuery/Looker with blended data
3. **Apply platform accuracy factors** - adjust based on CRM validation
4. **Consider lightweight MMM** - tools like Adinton, Marketing Evolution
### For Enterprise ($200K+/month)
1. **Full MMM implementation** - Meridian, Marketing Evolution, custom
2. **Regular incrementality testing** - quarterly geo holdouts
3. **Multi-touch attribution** - Northbeam, Triple Whale, Ruler
4. **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:**
1. Link Google My Business to Google Ads
2. Enable location extensions
3. Reach volume threshold (~30 days)
4. 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:**
1. Navigate to Events Manager > Offline Events
2. Create Offline Event Set
3. Upload CRM/POS data with event_time, email/phone hashes, value
4. 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:**
1. Campaign Manager > Account Assets > Offline Conversions
2. Connect CRM or upload CSV
3. Map fields (email required, company optional)
4. 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.*
SHA-256: fb54a23752902b67972b156dbb956c928e77d3e63fbbb925898c78eb774473fb