Home/iOS 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 rate hovers around 25%.

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.

0
fine 1
1
fine 2
2
fine 3
3
fine 4
4
coarse 1
5
coarse 2
6 bits = 64 values. Split into "coarse" (low/medium/high) and "fine" (specific event or revenue bucket).

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'd like to show you relevant ads — please tap Allow on the next screen." This pushes opt-in from 20% to 35–40%. 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.

Need help wiring up CAPI for Apps or conversion values? Get in touch.