Cross-platform attribution health audit covering AdAttributionKit (iOS view-through 24h post-impression, WWDC 2025 configurable windows), GA4 attribution models (data-driven vs last-click), Consent Mode V2 enforcement, server-side attribution stitching, MMP integration health, and cross-device / cross-platform attribution. Use when user says attribution audit, attribution model, AdAttributionKit, AAK, view-through attribution, GA4 attribution, Consent Mode V2, conversion window, attribution window, MMP audit, AppsFlyer audit, Adjust audit, Branch audit, Singular audit, cross-device attribution, or cross-platform attribution.
---
name: ads-attribution
description: "Cross-platform attribution health audit covering AdAttributionKit (iOS view-through 24h post-impression, WWDC 2025 configurable windows), GA4 attribution models (data-driven vs last-click), Consent Mode V2 enforcement, server-side attribution stitching, MMP integration health, and cross-device / cross-platform attribution. Use when user says attribution audit, attribution model, AdAttributionKit, AAK, view-through attribution, GA4 attribution, Consent Mode V2, conversion window, attribution window, MMP audit, AppsFlyer audit, Adjust audit, Branch audit, Singular audit, cross-device attribution, or cross-platform attribution."
user-invokable: false
tested_date: 2026-05-17
tested_with: claude-code v2.x
---
# Cross-Platform Attribution Health Audit
Attribution decay is the silent revenue killer of 2026 — Consent Mode V2 EEA
enforcement (Jul 21, 2025), iOS ATT, SKAdNetwork → AdAttributionKit migration,
and the death of third-party cookies have moved every advertiser's
attribution signal toward modeled, server-side, first-party data. Misaligned
attribution windows or unverified Consent Mode setups will mis-attribute
15-40% of conversions and silently waste budget.
## Process
1. Collect current attribution stack: GA4 property ID, Google Ads conversion
actions, Meta CAPI config, Apple Ads / AdAttributionKit registration,
MMP dashboard (AppsFlyer / Adjust / Branch / Singular), any sGTM container
2. Read `ads/references/conversion-tracking.md` for the cross-platform
tracking baseline
3. Evaluate attribution health per surface (web, iOS app, Android app,
server-side)
4. Score each surface PASS / WARNING / FAIL
5. Generate findings report with cross-channel attribution map and remediation
plan
## What to Analyze
### iOS Attribution (AdAttributionKit + ATT)
- **AdAttributionKit registered** with Apple Ads (post-Apr 10, 2025 cutover);
registration creates dual attribution with SKAdNetwork (SKAN v1-3)
- **View-through attribution** active — 24h post-impression view window
configured on Apple Ads campaigns where applicable
- **Configurable attribution windows** (WWDC 2025): per-campaign window
customization audited; overlapping re-engagement windows used for
subscription / re-acquisition campaigns
- **Country code in postbacks** (WWDC 2025): enabled if you need geo
attribution detail
- **ATT (App Tracking Transparency) opt-in rate** monitored; <30% opt-in
means heavy reliance on SKAN/AAK + privacy threshold
- **Privacy threshold awareness** — low-volume campaigns may receive null
postbacks; campaign consolidation recommended below 1k installs/week
### Web Attribution (GA4 + Google Ads + Meta CAPI)
- **GA4 attribution model**: Data-Driven (default for properties with enough
data) vs Last-Click — confirm setting is intentional, not residue from a
pre-2026 migration
- **Google Ads attribution model**: Data-Driven default; per-conversion
override allowed but audit any Last-Click overrides for justification
- **Cross-channel attribution** in GA4: confirm Google Ads, Meta, LinkedIn,
TikTok, Microsoft are integrated as platforms with consent + auto-tagging
- **Conversion windows per channel** appropriate to sales cycle:
- E-commerce: 7-day click, 1-day view
- B2B / lead gen: 30-90 day click, no view
- SaaS subscription: 30 day click, 1-day view, plus offline conversion
import for the activation event
- **Conversion lag analysis** run quarterly to validate window choice
### Consent Mode V2 (EU/EEA + recommended globally)
- **Consent Mode V2 active** (enforcement began Jul 21, 2025 for EEA/UK)
- **Advanced Mode** (not Basic) — Basic loses ~25% of EEA conversion signal
- **700+ ad clicks/day over 7 days per country/domain** threshold met for
Advanced Mode behavioral modeling to activate
- **Signal recovery measured**: aim 15-25% conversion recovery vs pre-CMV2
baseline
- **Consent banner** correctly reads CMV2 signals (not just GDPR boilerplate)
### Server-Side Attribution Stitching
- **First-party server logs** stored with `user_id` + `event_id` + timestamp
+ platform tag for every conversion event
- **MMP + first-party stitching**: MMP (AppsFlyer / Adjust / Branch /
Singular) receives both client-side AND server-side events with shared
`event_id` for deduplication
- **Server-side conversion import** to Google Ads (offline conversion import)
and Meta (CAPI) within 72h of the conversion event
- **Hash quality**: email / phone fields SHA-256 hashed and lowercased
before send; cross-platform hashing convention consistent
- **Deduplication rate** ≥90% (matched event_id between client + server)
### MMP Health (Mobile Apps)
- **MMP integrated** — AppsFlyer / Adjust / Branch / Singular set up before
any paid campaigns launched
- **Apple Ads connected as a partner** in MMP dashboard
- **Post-install events sent back** to Apple Ads, Google UAC, Meta App
Campaigns, TikTok (enables Maximize Conversions and ROAS bidding)
- **Event quality**: purchase, subscription_start, trial_start, or other
revenue events tracked (not just install → registration)
- **Postback configuration**: SKAN/AAK conversion values map to meaningful
user actions
### Cross-Device & Cross-Platform Attribution
- **Customer Match** lists synced to Google Ads, Meta (Customer File CA),
LinkedIn Matched Audiences, TikTok Customer File for cross-device stitching
- **Enhanced Conversions** active for Google Ads (hashed first-party data,
~10% uplift on properly-implemented setups)
- **CAPI customer_information parameters** (`em`, `ph`, `fn`, `ln`, `ct`,
`st`, `zp`, `external_id`) sent server-side to Meta
- **Privacy-safe identifiers** (Customer Match hashes, GAID/IDFA where
permitted) included in conversion exports
## Key Thresholds
| Metric | Pass | Warning | Fail |
|--------|------|---------|------|
| GA4 attribution model | Data-Driven | Last-Click (intentional) | Last-Click (residual) |
| Consent Mode V2 | Advanced + verified | Advanced (unverified) | Basic / Not implemented |
| EMQ (Meta Purchase) | ≥8.0 | 6.0-7.9 | <6.0 |
| Event dedup rate | ≥90% | 70-89% | <70% |
| Server-side / client-side hit ratio | ≥80% | 50-79% | <50% |
| ATT opt-in (iOS) | ≥30% | 15-29% | <15% (heavy SKAN reliance) |
| Offline conversion import latency | <24h | 24-72h | >72h |
| Customer Match list freshness | <7 days | 7-30 days | >30 days |
## Output
### Attribution Health Score
```
Attribution Health Score: XX/100 (Grade: X)
iOS (AdAttributionKit + ATT): XX/100 ████████░░ (20%)
Web (GA4 + Ads + CAPI): XX/100 ██████████ (30%)
Consent Mode V2: XX/100 █████████░ (15%)
Server-Side Stitching: XX/100 ████████░░ (20%)
MMP Health (mobile): XX/100 ███████░░░ (10%)
Cross-Device / Customer Match: XX/100 ██████░░░░ (5%)
```
### Deliverables
- `ATTRIBUTION-AUDIT.md`: Full surface-by-surface findings
- Cross-channel attribution map (which platform owns which conversion
windows + which events)
- Modeled vs reported conversion delta (estimated revenue under- or
over-attribution)
- Quick Wins sorted by signal-recovery $ impact
- Pre-launch checklist for any new platform (Amazon, Apple Ads, TikTok)
to ensure attribution is wired before spend begins
Creator's repository · agricidaniel/claude-ads