HomeiOS tracking
Plain-language explainer

iOS tracking after ATT and SKAdNetwork

Apple changed the rules for tracking on iOS in 2021. Most marketers still don't understand what actually broke and how to live with it. Here it is in plain language, with diagrams.

What changed

Before 2021, every iPhone had a unique identifier called IDFA. Ad networks saw it in every request and could connect "saw an ad → installed → made a purchase" at the user level. In April 2021 Apple introduced App Tracking Transparency (ATT): apps now have to explicitly ask permission. Most users say no.

The famous prompt

Here is how the ATT prompt looks. Apple forbids changing the wording or hiding buttons. Adjust and Branch report industry-wide opt-in around 25–35%. Fintech is usually lower (18–25%), gaming is higher (40%+).

9:41
Goodlabs
Allow "Goodlabs" to track your activity across other companies' apps and websites?
Tracking helps us show you more relevant ads.
Every iOS user has seen this dialog since 2021. Opt-in runs 25–35% industry-wide.

What you had vs what you have now

Before 2021 (IDFA world)
  • Level: individual user
  • Speed: real-time
  • Coverage: ~100% of iOS devices
  • Attribution: exact ad → click → install → conversion chain
  • Optimization: ML algorithms can learn from every user
After 2021 (SKAN world)
  • Level: aggregated (cohort)
  • Speed: 0–35 day delay
  • Coverage: only above Apple's privacy threshold
  • Attribution: postback with coarse parameters
  • Optimization: ML learns from aggregates, slower

What SKAdNetwork actually is

SKAdNetwork (or SKAN) is Apple's API that replaces IDFA-based tracking. The principle: ad network and app don't talk to each other. When an install happens and the user does a target action, Apple itself sends a "postback" to the ad network with a very limited data payload, on a delay.

SKAN 4.0 (since 2023) added three postback windows instead of one. That gives more detail, but it's still nowhere near IDFA-level precision.

T0
Ad click
+minutes
App install
0–2 days
Postback 1: early signals (signup, first open)
3–7 days
Postback 2: mid signals (activation, first transaction)
8–35 days
Postback 3: late signals (revenue, retention)

Conversion values: telling a story in 6 bits

Apple lets you ship only 6 bits of data in a postback (64 possible values). You decide what those values mean. Common approaches: revenue buckets ($0–5, $5–20, $20+), funnel step (saw onboarding / completed onboarding / purchased), or a combination.

Fine — 6 bits, values 0–63
0
bit
1
bit
2
bit
3
bit
4
bit
5
bit
Coarse — a separate field, 3 states
low
medium
high
These are two different fields, not a split of one. Fine is the whole 6-bit value (64 possibilities) and arrives only in the first postback, and only when crowd anonymity is high. Coarse is a separate three-state field, sent when anonymity is lower and in the second and third postbacks.

If you map values poorly there is no quick fix. Conversion value config lives in your MMP (AppsFlyer, Adjust) or in the Xcode project. Change rarely and on purpose.

What to actually do as a marketer

1. Wire up Meta CAPI for Apps

Sending events server-side from your backend straight to Meta recovers some of the lost signal. Especially critical for fintech where the conversion (loan approval, account opened) happens days after install and SKAN won't catch it.

2. Configure conversion values by revenue bucket

The most universal mapping: bucket 1 = low value, bucket 2 = mid, bucket 3 = high. This lets the ad network ML find high-value users even without user-level data.

3. Accept the 0–35-day delay as normal

You will never see iOS campaign performance in real time. Don't panic if CPA looks terrible the first two days after launch — the final number lands two weeks later. Android (where the GAID still works) is faster.

4. Don't trust the Meta dashboard blindly

A 30–50% discrepancy between Meta's reported iOS conversions and your own data is normal after ATT. Cross-check against your MMP (AppsFlyer/Adjust) and your own backend — that's the source of truth.

5. Pre-prompt your ATT request

Show your own pre-prompt before the system one: "We would like to show you relevant ads — please tap Allow on the next screen." That typically adds 10–15 points to the 25–35% baseline. Apple allows it.

KZ context

iOS share in KZ is around 25–30% (higher among fintech audiences and premium-tier consumers). If you run fintech or premium e-commerce, the iOS signal loss hits harder than industry average. The fix is the same: CAPI for Apps + thoughtful conversion value mapping + patience with the delay.

FAQ

What is a normal ATT opt-in rate?

Adjust and Branch report industry-wide opt-in around 25–35%. Fintech is usually lower at 18–25%; gaming is higher at 40%+. A pre-prompt shown before the system dialog typically adds 10–15 points on top of that, and Apple allows it.

Why does my iOS campaign data arrive so late?

SKAdNetwork postbacks are delayed by 0 to 35 days by design, so iOS campaign performance is never visible in real time. Do not react to the first two days after launch — the final number lands about two weeks later.

Meta reports different iOS conversions than my backend. Is that a bug?

No. A 30–50% discrepancy between Meta's reported iOS conversions and your own data is normal after ATT. Cross-check against your MMP (AppsFlyer, Adjust) and your own backend and treat those as the source of truth.

How much does this matter in Kazakhstan?

iOS share in KZ is around 25–30%, and higher among fintech audiences and premium-tier consumers. If you run fintech or premium e-commerce, the iOS signal loss hits harder than the industry average.

When this isn't enough

Knowing how SKAN works doesn't make the numbers agree

Conversion values, CAPI for Apps and a 35-day delay are the theory. In practice three sources disagree by 30–50% — the MMP, the ad platform, and your own backend — and someone still has to decide which one the budget follows, then build a value model the campaign can actually optimise against.

Field notes: A SuperApp cannot be grown on KYC alone: Firebase events, a value model, and tROAS for product growth

Start with a two-week audit