If Android is a country with a census, iOS is a country with surveys: you know what is happening, but in aggregate, delayed and without names. This lesson explains the mechanism so you stop fighting reports that are never going to match.
What changed
Apple requires explicit permission to track across apps. Most users don't grant it, so the identifier that used to allow user-level attribution disappears for almost everyone. In its place, Apple offers SKAdNetwork: an aggregated attribution system managed by the operating system itself.
How SKAdNetwork works, briefly
- The user sees or taps an ad; the operating system records it.
- If they install, the app can update a conversion value (a small number encoding what they did: sign-up, purchase, revenue band…).
- After a while, the device sends the ad network a postback: campaign, conversion value and little else — with no user identifier.
- If a segment's volume is low, Apple trims the detail for privacy: you get less information, or none.
Consequences to accept as design, not as a fault:
- Delay: data arrives hours or days later. Judging "yesterday" on iOS makes no sense.
- Less granularity: there is no user, and per-creative or per-segment detail may arrive aggregated or incomplete.
- Privacy thresholds: small campaigns get degraded data — another reason not to atomise campaigns on iOS.
- Its own windows: different from Google Ads', which is why the numbers don't match across systems, and it is nobody's fault.
The conversion value schema: your key decision
The conversion value is the only channel through which iOS tells you what the user did. Designing it well is measurement architecture: deciding which events or revenue bands you encode and in which time window. Attribution providers offer visual editors for this; if you measure with Firebase, its SDK also supports the conversion value setting. The rule: encode a few well-chosen milestones (say: sign-up, first purchase, revenue band), not twenty nuances you won't be able to interpret later.
How to run iOS without going mad
- Separate campaigns from Android, always. Different measurement, different costs, different patience.
- Fewer, bigger campaigns: privacy punishes small ones.
- Longer judgement windows: look at weeks, not days.
- One official source: pick one (MMP or Google Ads) and decide with it; the rest is cross-check.
- Modelling and estimates: part of what you see is modelled data, not exact counts. Use it for direction, not for accounting.
- Combine signals: SKAdNetwork complements — it doesn't replace — what you measure inside the app from users who do consent.
💡 Ninja trick: if your app lives on both systems, don't compare iOS CPI with Android CPI to decide where to invest: compare each against its own history and against the value each platform generates. They are two markets with two ways of counting; budget is split by profitability, not by direct comparison.
⚠️ Pitfall: demanding Android's traceability from iOS and concluding that "iOS doesn't work". What doesn't work is the expectation. With long windows, broad campaigns and a well-designed conversion value schema, iOS remains an excellent market — usually the one with the highest-value users.
What you should remember
- iOS measures in aggregate, delayed and with privacy thresholds.
- The conversion value is your only channel for nuance: few, well chosen milestones.
- Separate, larger campaigns judged over long windows.
- The reports will never match: pick an official source and move on.