If your iOS app install numbers look wrong, or your tracking numbers don’t match across platforms, you are not alone. Since Apple introduced its App Tracking Transparency framework with iOS 14, accurate attribution has become significantly harder to achieve. The result is that many app marketers find their ROAS doesn’t match reality, see attribution data mismatches between their MMP and ad networks, or suddenly notice app installs dropped without any clear cause. In most cases, the problem comes down to one of four recurring issues in how iOS tracking is set up and maintained.
How iOS privacy changes reshaped app tracking
Before iOS 14, mobile attribution worked through device-level identifiers that gave ad networks and measurement partners near-complete visibility into the user journey from ad click to in-app event. That changed when Apple made its ATT prompt mandatory, requiring users to actively opt in before their IDFA could be shared. Opt-in rates across most app categories settled well below 50%, which means a large portion of installs now arrive without a device identifier attached.
To fill that gap, Apple introduced SKAdNetwork, a privacy-preserving attribution framework that reports installs and conversion values at a campaign level without exposing individual users. Ad networks also began using probabilistic matching and aggregated modelling to estimate attribution where direct signals are missing. The result is a fundamentally different measurement environment, one where inaccurate iOS install tracking results are not a sign of a broken tool, but a sign that the setup needs to account for these new constraints deliberately.
Understanding which specific configuration issue is causing your numbers to drift is the starting point for fixing them. The four causes below cover the most common sources of inaccuracy in iOS attribution today.
1: Incomplete ATT consent implementation
The ATT prompt is the first point of failure for many apps. If the prompt is not implemented correctly, or is triggered at the wrong moment in the user journey, you lose consent you could have captured, and that directly reduces the share of installs that can be attributed at the device level.
A common mistake is showing the ATT prompt immediately on first launch, before the user has experienced any value from the app. At that point, users have little reason to grant permission and are more likely to decline. Delaying the prompt until after a meaningful in-app moment, such as completing onboarding or reaching a key feature, tends to improve opt-in rates noticeably. The prompt itself also needs to include a clear, benefit-oriented usage description explaining why tracking helps the user, not just the advertiser.
Beyond timing, the technical implementation matters. If the ATT request is not properly integrated with your Mobile Measurement Partner (MMP), the consent status may not be passed through correctly, which causes installs to be logged as unattributed even when users have opted in. Unattributed installs, meaning installs your MMP cannot connect to a specific campaign or source, are a direct signal that consent data is not flowing through the measurement stack as intended.
2: Misconfigured SKAdNetwork postbacks
SKAdNetwork is the mechanism Apple uses to deliver attribution data for users who have not consented to tracking. When it is misconfigured, app install numbers go wrong in ways that are difficult to diagnose because the errors are silent. Postbacks simply fail to arrive, arrive incomplete, or carry conversion values that do not map to anything meaningful.
The most frequent configuration issue involves the conversion value schema. SKAdNetwork uses a 6-bit value to encode post-install behaviour within a measurement window. If you have not defined what each conversion value represents, or if the schema is not aligned between your MMP and your ad networks, the data that comes back is either unreadable or misinterpreted. This is a leading cause of attribution data mismatch between what your MMP reports and what your ad network dashboard shows.
Another common problem is failing to register all active ad networks in your app’s Info.plist file. If a network is not listed, Apple will not send it SKAdNetwork postbacks, and that network’s installs will appear unattributed. As you add new acquisition channels, keeping this list current is an ongoing maintenance task that is easy to overlook.
3: MMP and ad network discrepancies
Even when ATT consent and SKAdNetwork are correctly configured, tracking numbers don’t match between your MMP and your ad network dashboards. This is one of the most common frustrations for app marketers, and it rarely points to a single cause.
MMPs and ad networks use different attribution logic. Ad networks typically apply last-click attribution and count an install the moment it occurs. MMPs apply their own attribution windows, de-duplication rules, and may use view-through or probabilistic models differently. When both systems are counting the same install using different rules, discrepancies are expected rather than exceptional. The goal is not to eliminate the gap entirely, but to understand it well enough that it does not distort your decision-making.
Timezone misalignment is another underappreciated source of discrepancy. If your MMP is set to a different timezone than your ad network, installs that occur near midnight can appear in different reporting days, making day-level comparisons unreliable. Similarly, install deduplication settings, re-engagement attribution windows, and how each platform handles redownloads can all create systematic differences that make your marketing numbers not add up even when nothing is technically broken.
4: What causes in-app event tracking to break?
Inaccurate iOS tracking does not stop at the install. In-app event tracking breaks for its own set of reasons, and when it does, the downstream impact on ROAS reporting and campaign optimisation is significant. If your ad network is optimising toward purchase events but only a fraction of those events are being reported, the algorithm is working with incomplete data and your actual ROAS doesn’t match reality.
The most common cause is incorrect MMP SDK integration. Events that fire correctly in your analytics tool may not be mapped to the equivalent MMP event names, or the SDK may not be initialised before the event fires, causing it to be dropped. This is especially common after app updates, when development changes inadvertently affect the SDK initialisation order.
Privacy thresholds in SKAdNetwork also affect event reporting. Apple only sends a postback when a minimum number of installs has been recorded for a given campaign, which means low-volume campaigns may never return event data at all. For apps running many small test campaigns, this threshold behaviour can make it look like events are not tracking when they are simply below the reporting minimum. Platforms like Adjust, AppsFlyer, and Branch each handle these thresholds differently, and understanding how your specific MMP interprets and reports this data is important for reading your numbers accurately.
Fix iOS tracking before it costs you budget
Each of the four issues above leads to the same outcome: you are making budget and optimisation decisions based on incomplete or inaccurate data. Fixing iOS tracking is not a one-time task. It requires an audit of your ATT implementation, your SKAdNetwork configuration, your MMP settings, and your event mapping, followed by ongoing monitoring as platforms update their frameworks and your app evolves.
If you are seeing unexplained drops in attributed installs, persistent gaps between MMP and ad network numbers, or in-app events that are not feeding back into your campaign optimisation correctly, the issues described above are the right starting point for your investigation.
At Wuzzon, we work with apps across iOS and Android to identify and resolve exactly these kinds of measurement gaps. Our app growth stack services cover the full measurement and attribution setup alongside paid acquisition and ASO, so your tracking works in support of your growth strategy rather than against it. If you want a clear picture of where your iOS tracking is breaking down, get a free consultation and we will take a look together.
Frequently Asked Questions
How do I know if my ATT opt-in rate is good enough, and what's a realistic benchmark to aim for?
Opt-in rates vary significantly by app category, but most apps see rates between 25% and 45% across their full user base. Games and utility apps tend to sit at the lower end, while apps where users clearly benefit from personalisation — such as fitness or finance apps — can reach higher. Rather than chasing an industry benchmark, focus on improving your own baseline by testing prompt timing and refining your usage description copy. Even a 10-percentage-point improvement in opt-in rate can meaningfully increase the share of installs you can attribute at the device level.
What's the best way to set up a SKAdNetwork conversion value schema if I'm starting from scratch?
Start by identifying the two or three post-install events that most strongly predict long-term user value for your app — typically something like registration completion, a first purchase, or reaching a key engagement milestone. Map your 6-bit conversion values (0–63) to encode both the event type and a rough value tier where possible, prioritising the actions that happen within the first 24 hours since that is when most SKAdNetwork measurement windows are active. Align this schema with your MMP before going live, and document it clearly so that ad network optimisation algorithms are reading the same signal your MMP is reporting. Most MMPs including Adjust, AppsFlyer, and Branch offer schema configuration tools that simplify this process.
How much of a discrepancy between my MMP and ad network numbers is considered normal?
A variance of 10–20% between MMP and ad network install counts is generally considered within the expected range and is largely a product of differing attribution logic, click-through windows, and deduplication rules. Discrepancies above 20–30% consistently, or sudden spikes in the gap, are a signal worth investigating — common culprits include timezone misalignment, a recently added network missing from your Info.plist, or a change in attribution window settings on either platform. The most productive approach is to document your expected variance as a baseline, then treat significant deviations from that baseline as the trigger for an audit rather than treating any gap as automatically problematic.
My in-app events are firing in my analytics tool but not showing up in my MMP — where should I start troubleshooting?
The most likely cause is a disconnect between your analytics event names and the event names your MMP SDK is expecting, or an initialisation order issue where the SDK is not ready when the event fires. Start by checking your MMP’s SDK integration logs or debug console to confirm whether events are being received at all — most MMPs offer a testing mode or live event viewer for this purpose. If events are arriving but not matching, review your event mapping configuration inside the MMP dashboard. If events are not arriving at all, check that the MMP SDK is initialised early in the app launch sequence and that no recent app update has altered the initialisation order.
Can probabilistic attribution be relied on as a replacement for IDFA-based tracking?
Probabilistic attribution can be a useful complement to SKAdNetwork data, but it should not be treated as a direct replacement for device-level attribution. It works by matching installs to ad exposures using aggregated signals like IP address, device type, and OS version, which means it is inherently an estimate rather than a deterministic match. Its reliability degrades in markets with high VPN usage, shared IP environments, or where multiple users share similar device profiles. Use it to fill gaps in your attribution picture and improve campaign-level understanding, but weight your optimisation decisions toward SKAdNetwork postback data and consented IDFA signals where available.
Do these iOS tracking issues also affect Android campaigns, or is this purely an Apple ecosystem problem?
The specific issues around ATT prompts and SKAdNetwork are unique to iOS, but Android attribution has its own evolving challenges. Google’s Privacy Sandbox for Android is gradually replacing the Google Advertising ID (GAID) with a new attribution framework that follows a similar privacy-preserving direction to SKAdNetwork. MMP and ad network discrepancies, event mapping errors, and SDK integration issues are platform-agnostic problems that affect Android measurement equally. If you are auditing your iOS tracking, it is worth running a parallel review of your Android setup, particularly your event mapping and SDK initialisation logic, since the same configuration mistakes tend to appear on both platforms.
How often should I audit my iOS attribution setup, and what should that audit include?
A full attribution audit is worth scheduling at least once per quarter, and also triggered any time you release a major app update, add a new acquisition channel, or notice an unexplained shift in your attributed install volume or ROAS. At minimum, the audit should cover four areas: confirming your ATT prompt is displaying correctly and consent status is passing through to your MMP; verifying all active ad networks are registered in your Info.plist; checking that your SKAdNetwork conversion value schema is still aligned with your MMP and reflects your current campaign goals; and validating that key in-app events are firing and being received correctly by running a test install through your MMP’s debug mode.
Related Articles
- 6 reasons every ad channel claims credit for the same app install
- Branch vs AppsFlyer: app deep linking compared
- What is IDFA and how does it affect app tracking?
- How much does it cost to advertise your app effectively?
- How do you advertise an app and prevent ad fraud?
- 6 key metrics to track when you advertise your app successfully
- How does A/B testing work in the app store?
- What is promotional text on iOS and how does it work?
- 5 app store description templates for brand apps
- What is the difference between app store optimization and SEO?