App Store vs Paid Social: Attribution Gaps That Distort Your ROAS

Your Meta dashboard says a campaign drove 800 installs last week. App Store Connect says 600. Your MMP says 650. Everyone's reporting a different number for the same week, and now your ROAS calculation is built on a foundation that shifts depending on who you ask.
This isn't a bug. It's a structural problem baked into how app marketing attribution works across walled gardens, probabilistic models, and Apple's privacy framework. Understanding the gap — and closing it enough to make confident spend decisions — is one of the most underrated skills in mobile growth.
Why the Numbers Never Match
Three completely separate systems are trying to claim credit for the same install, and none of them share data with each other.
Paid social platforms (Meta, TikTok, Google) use their own in-house attribution. Meta's default attribution window is 7-day click, 1-day view. That means if a user clicks your ad Monday, downloads your app Saturday, and Meta sees any downstream event, that install gets attributed to the campaign — even if the user also searched for your app directly in the App Store on Thursday.
App Store Connect reports organic and paid data separately, but its paid install numbers depend on Apple's SKAdNetwork (SKAN) framework. SKAN is privacy-preserving by design: it delays conversion reporting by 24–72 hours, applies crowd anonymity thresholds (data isn't reported if install volumes are too low), and gives you a single conversion value rather than a user-level event stream.
Mobile Measurement Partners (MMPs) like Adjust, AppsFlyer, and Branch sit in the middle, receiving postbacks from ad networks and device signals to stitch together a unified view. But with ATT (App Tracking Transparency) opt-in rates typically sitting somewhere below 50% on iOS, a significant share of installs are modeled probabilistically rather than deterministically matched.
The result: every system reports what it can see through its own lens. The overlap creates double-counting. The gaps create under-counting. Your ROAS figure reflects whichever lens you're using as the source of truth.
The Specific Gaps That Distort ROAS
Let's name the mechanics precisely.
View-through attribution inflation. Platforms attribute installs to impressions even when the user never clicked. A user sees your TikTok ad, ignores it, searches for your app two days later, and downloads it. TikTok counts it. So does Apple Search Ads if you were running it. That single install can appear in two or three reports simultaneously.
SKAN conversion value compression. SKAdNetwork gives you one conversion value (0–63) per install window. If you're trying to encode both revenue events and engagement signals in that single number, you're making tradeoffs. Many teams encode only the first event that fires, which means downstream purchase data is invisible to the SKAN pipeline. Your ROAS calculation for paid campaigns can't account for revenue that was never surfaced to the network.
Reattribution window mismatches. Most MMPs have a default reattribution window — typically 90 days. If a lapsed user comes back via a paid ad and reinstalls, the MMP may count it as a new acquisition. Apple's App Store won't. Your install counts diverge, and your cost-per-acquisition math is off.
Cross-device and cross-channel journeys. A user discovers your app on Instagram via mobile web, switches to desktop to read reviews, then later searches the App Store. That multi-touch journey is essentially invisible to any single attribution system. The App Store gets the last-touch credit. The Instagram campaign gets nothing, despite being top-of-funnel.
If your app marketing attribution is producing clean, consistent numbers across every platform, one of three things is true: your install volume is very low, you're running a single channel, or you're not looking closely enough. See how our mobile app marketing team approaches measurement for growth-stage apps.
How to Map the Gap: A Framework
Before you fix anything, you need to know how large your gap actually is. Run this reconciliation monthly.
| Metric | Source | What to Capture |
|---|---|---|
| Reported installs (paid) | Meta / TikTok / Google dashboards | Sum across all active campaigns |
| MMP-attributed installs | AppsFlyer / Adjust / Branch | Paid channels only, same date range |
| SKAN installs | App Store Connect → Metrics → Installs | Filter: paid sources |
| Organic installs | App Store Connect | Organic + Apple Search Ads separately |
| Total installs (ground truth) | App Store Connect total | All sources, same period |
Once you have these five numbers, calculate two ratios:
- Platform-to-MMP ratio: Divide your platform-reported installs by MMP-attributed installs. Ratios above 1.3 suggest significant view-through inflation or cross-channel double-counting.
- MMP-to-SKAN ratio: Divide MMP attributed iOS installs by SKAN-reported installs. If this ratio is consistently above 1.2, your MMP is picking up events that SKAN's anonymity thresholds are suppressing — you're working with partial data on both sides.
In our engagements with early-stage apps, a platform-to-MMP ratio of 1.2–1.5 is common and manageable. Ratios above 2.0 almost always indicate a view-through attribution setting that needs tightening, or an MMP configuration problem.
Practical Fixes That Don't Require a New Tool
You don't need another analytics subscription. The reconciliation problem is mostly a configuration and process problem.
Tighten attribution windows on paid platforms. Switch Meta campaigns from 7-day click / 1-day view to 7-day click only. You'll see reported installs drop — that drop represents installs that were previously being claimed by view-through. Your ROAS number will look worse initially, but it'll be more accurate.
Align your MMP reattribution window with your business logic. If your app's natural re-engagement cycle is 30 days, set your reattribution window to 30 days. A 90-day default is often too generous and inflates re-acquisition counts.
Use SKAN conversion values strategically. Work with a single priority event per conversion window — typically a first purchase or a strong engagement signal — rather than trying to encode a full funnel in 6 bits. Simpler SKAN schemas produce more reliable postbacks.
Build an incrementality test into your calendar. Once a quarter, run a geo holdout test on your highest-spend channel. Dark out a comparable market and compare install velocity. This gives you a ground-truth read on how much of your "attributed" volume is genuinely incremental. It's the only measurement approach that isn't vulnerable to attribution window manipulation.
Create a single internal ROAS definition and stick to it. Pick one data source as your north star for reporting — MMP-attributed installs is usually the most defensible — and report ROAS using only that number. Document the definition. When platform-reported ROAS diverges from your internal ROAS, note it but don't let it drive decisions.
For a broader look at how channel strategy feeds into measurement, the 2026 Mobile User Acquisition Strategy post covers channel selection and budget allocation in detail.
When You Do Need an MMP (and When You Don't)
For apps under approximately 1,000 installs per month on iOS, the complexity of a full MMP implementation often exceeds the value. App Store Connect's built-in analytics, combined with disciplined UTM tagging on any Android or web traffic, is usually sufficient.
At roughly 1,000–5,000 monthly installs, an MMP starts earning its cost. You're running enough volume to make SKAN postbacks meaningful, you likely have multiple paid channels running simultaneously, and the reconciliation work starts to take more time than the tool costs.
Above that threshold, the MMP isn't optional — it's load-bearing infrastructure for your growth decisions. The question shifts from "do we need it" to "are we configuring it correctly."
Also worth noting: Google Play attribution is materially less complicated than iOS. Google's install referrer passes campaign data directly without the SKAN framework, opt-in isn't required for attribution, and cross-network deduplication is simpler. If your app is Android-first and you're seeing large attribution gaps, the problem is more likely in your channel configuration than in platform architecture.
Related: Organic Attribution Is Undervalued
One number most teams consistently undercount is organic install volume influenced by paid activity. A user sees your Meta ad, doesn't click, searches your app name directly in the App Store two days later, and downloads. That install is logged as organic in every platform's report. But it was influenced by paid spend.
This "paid-influenced organic" volume is genuinely hard to quantify — but the gap between your pre-campaign organic baseline and your organic install rate during a paid campaign is a rough proxy. In our experience, this halo effect is real and often accounts for 10–20% of incremental install volume during active paid campaigns. If you're only measuring direct attributed installs, you're underselling the return on your paid budget.
For more on organic growth levers, 12 Ways Mobile App Marketing Agencies Use to Give an Impetus to New Apps covers the organic and paid interplay in more depth.
FAQ
Why does Meta always report more installs than my MMP?
Meta's attribution model counts clicks and views as qualifying touchpoints. If a user is exposed to your ad without clicking — even briefly — and later installs your app, Meta claims that install. Most MMPs require a click-through to attribute an install, so the view-through installs counted by Meta simply don't appear in your MMP. This is the most common source of the discrepancy.
Should I use Apple's SKAN data or my MMP as the source of truth for iOS campaigns?
Use your MMP as the primary source for day-to-day decisions, but validate it against SKAN directionally. SKAN data arrives with a delay and is subject to anonymity thresholds, making it unreliable for granular optimization. Your MMP blends deterministic matches (where available) with probabilistic modeling, giving you faster and more complete data — at the cost of some accuracy. Neither is perfect; the goal is consistency, not perfection.
What's a reasonable attribution window for a mobile game vs. a utility app?
For mobile games, a 1–3 day click window is often sufficient — users who are going to install generally do so quickly. For utility or B2B apps where research cycles are longer, a 7-day click window is more appropriate. View-through attribution is rarely worth enabling for utility apps; the signal-to-noise ratio is poor.
Does Android have the same attribution problems as iOS?
Not to the same degree. Android uses the Google Play Install Referrer API, which passes campaign parameters through the install without requiring user opt-in. Attribution on Android is significantly more reliable. That said, cross-network deduplication and view-through inflation are still live issues regardless of platform.
Is incrementality testing only for large apps with big budgets?
No. A simple geo holdout test — pausing one campaign in one city or state for two weeks while keeping it live elsewhere — costs nothing to run. It requires only that you have enough install volume in each region to see a statistically meaningful difference, which is roughly 200+ installs per region per week. Many mid-size apps can run meaningful incrementality tests without enterprise tooling.
When should I stop trying to reconcile attribution data and just pick a number?
When the reconciliation effort takes more time than it changes your decisions. If you've defined your internal ROAS metric, documented the methodology, and the platform-reported numbers are within 20–30% of your internal figure, you're probably in a workable range. Attribution reconciliation is a tool for making better spend decisions, not an end in itself.
Attribution gaps are a structural feature of the mobile ecosystem, not something you'll solve by buying a more expensive tool. The teams that make good decisions in spite of it are the ones who pick a measurement methodology, apply it consistently, and test incrementally to validate what they can't measure directly.
If you want a second set of eyes on your current attribution setup — or you're building a growth model for a new app and want to get the measurement architecture right from the start — book a 30-minute call or see how our mobile app marketing team approaches this for the apps we grow.