
Table of Contents
ToggleIf your MMP dashboard numbers don’t match your ad platform numbers — you have an attribution problem. If your iOS installs dropped after ATT — you have an attribution problem. If your purchase events show iapinvalid errors — you have an attribution problem.
Most mobile app teams don’t realize their attribution is broken until they’ve already wasted thousands of dollars in ad spend on unreliable data.
This guide walks you through a complete mobile attribution audit — step by step — so you can find exactly what’s broken and fix it.
In this guide:
A mobile attribution audit is a systematic review of your entire app tracking setup — from SDK installation to MMP configuration to ad platform connections — to identify gaps, misconfigurations, and data discrepancies.
Think of it like a financial audit, but for your tracking data. You’re verifying that every install, event, and revenue data point is being captured accurately and attributed to the right source.
Why attribution audits matter:
Before running a full audit, check for these warning signs:
1. MMP numbers don’t match ad platform numbers Your AppsFlyer dashboard shows 500 installs from Facebook, but Facebook Ads Manager shows 800. This discrepancy is normal to some extent, but large gaps signal a problem.
2. iOS installs dropped significantly after ATT If your iOS attribution dropped after Apple’s App Tracking Transparency update and never recovered, your SKAN setup is likely misconfigured.
3. High percentage of “organic” installs If 60-70% of your installs are showing as organic when you’re running paid campaigns, your MMP isn’t receiving attribution data from your ad networks.
4. Revenue events not appearing in MMP Purchase events firing in your app but not showing in your MMP dashboard — or showing as iapinvalid — means your revenue tracking is broken.
5. Duplicate events in your dashboard The same event firing 2-3 times per user action means your SDK is initialized multiple times or events are being sent from both client-side and server-side.
6. Last-click attribution showing impossible numbers CVR of 50%+ or install numbers that don’t match app store data are red flags for attribution fraud or misconfiguration.
7. Ad platform MMP mismatch Your Snapchat or TikTok campaign has the wrong MMP configured — meaning attribution data is being sent to AppsFlyer when you’re using Adjust, or vice versa.
Run through this checklist systematically. Each section covers a different layer of your attribution stack.
iOS SDK:
AppDelegate or App struct — not in a viewAndroid SDK:
Application class — not in ActivityBoth platforms:
iapinvalid errors in MMP dashboardKey events every app should track:
| Event | Required Parameters |
|---|---|
| Install | Automatic |
| Registration | method |
| Login | method |
| Purchase | revenue, currency, transaction_id |
| Subscription Start | plan_type, revenue, currency |
| Level Complete (gaming) | level_number, score |
| Tutorial Complete | Automatic |
This is the most critical section for iOS apps post-ATT.
Info.plist for all active ad networksSKAN conversion value audit:
Check your MMP dashboard → SKAdNetwork section:
For each active ad platform, verify:
Common ad platform issues:
| Platform | Common Issue |
|---|---|
| Facebook/Meta | ATT opt-outs causing data gaps — enable AEM |
| TikTok | MMP not set or wrong MMP configured |
| Google Ads | Parallel tracking not enabled |
| Apple Search Ads | Attribution API not connected to MMP |
| Snapchat | Wrong MMP configured as measurement partner |
iapinvalid errorsRevenue discrepancy check:
Compare these numbers monthly:
A 10-15% discrepancy is normal. Above 20% means you have a tracking problem.
Cause: Using deprecated revenue methods or incorrect parameters.
Fix:
// iOS — Wrong
tracker.trackRevenue(29.99, transactionId: "txn_123")
// iOS — Correct (AppsFlyer example)
let values: [String: Any] = [
AFEventParamRevenue: 29.99,
AFEventParamCurrency: "USD",
AFEventParamOrderId: "txn_123"
]
AppsFlyerLib.shared().logEvent(AFEventPurchase, withValues: values)// Flutter/Singular — Wrong
Singular.logCustomRevenue("purchase", "USD", 29.99)
// Flutter/Singular — Correct
Singular.logEventWithArgs("purchase", {
"revenue": 29.99,
"currency": "USD",
"transaction_id": "txn_123"
})Cause: Ad network MMP not configured, or click attribution window too short.
Fix:
Cause: Missing SKAdNetwork IDs, wrong conversion value schema, or SKAN not configured.
Fix:
Info.plistCause: Different attribution windows, view-through attribution counting, or time zone differences.
Fix:
Cause: SDK initialized in multiple places, or both client-side and server-side firing.
Fix:
Application class (Android) or AppDelegate (iOS)| Tool | Purpose |
|---|---|
| MMP DebugView | Real-time event verification |
| Charles Proxy | Intercept and inspect SDK calls |
| Android Debug Bridge (ADB) | Debug Android attribution |
| Xcode Instruments | Debug iOS attribution |
| Google Rich Results Test | Verify schema markup |
| MMP Export Logs | Raw attribution data export |
| Ad Platform Dashboards | Compare against MMP numbers |
A DIY audit works for straightforward setups. But if you have:
A professional mobile attribution audit saves time and prevents costly mistakes.
Book a Free Attribution Audit →
What is a mobile attribution audit? A mobile attribution audit is a systematic review of your entire app tracking setup — SDK integration, event tracking, MMP configuration, and ad platform connections — to identify and fix data gaps and discrepancies.
How long does a mobile attribution audit take? A basic self-audit takes 2-4 hours using a checklist. A professional audit typically takes 1-3 days depending on the complexity of your tracking stack.
How much does a mobile attribution audit cost? DIY audits are free but require technical knowledge. Professional audits typically range from $200-$1,500 depending on scope, number of platforms, and complexity.
What is the most common mobile attribution issue? The most common issues are incorrect SKAdNetwork setup on iOS after ATT, wrong MMP configured on ad platforms, and revenue events showing iapinvalid errors due to deprecated SDK methods.
How do I know if my iOS attribution is broken? Signs include a sudden drop in iOS attributed installs after ATT, high organic percentage, missing SKAN postbacks in your MMP dashboard, or conversion values not updating within the first 24 hours post-install.
Can I fix broken attribution without a developer? Some fixes — like configuring MMP settings or fixing ad platform connections — don’t require a developer. But SDK-level fixes like updating event methods or adding SKAdNetwork IDs require code changes.
How often should I audit my mobile attribution? Run a full audit quarterly, and a quick check after any major SDK update, iOS release, or when you notice data discrepancies.