iOS measurement

iOS after ATT: campaign-level truth when user-level attribution isn't on offer

Deterministic iOS attribution largely went away with App Tracking Transparency. SKAdNetwork and AdAttributionKit are what's left, and they need handling.

Updated Sep 3, 2026

Who runs this

  • Performance & paid
  • Engineers

What it uses

  • SKAdNetwork postback ingestion and conversion values
  • AdAttributionKit
  • Post-install events
  • Ad-network cost data (Meta, Google, TikTok, X)

On iOS, the click-to-install path that attribution was built on is mostly gone. There is no advertising identifier to join on unless the user opts in, and most don't. What Apple offers instead is a postback — a delayed, aggregated, privacy-thresholded signal from the store that says a campaign produced an install and, within limits, what the user did next.

What problem does this solve?

You still need to know which iOS campaigns are paying back. The postback can tell you, but only if something ingests it, maps its coarse conversion value back to events you understand, and lines it up against the spend. Left raw, it is a number in a network console with no context.

How do you set it up?

Postbacks arrive from Apple, not from a click, so there is no link to configure for the attribution itself. What you configure is the conversion value schema — which post-install events map to which value — and the campaign identifiers, so the postback's campaign field joins to the spend you imported. The deferred link still matters for the user's first screen; it just isn't the attribution source on iOS.

{
  "deepLinkPath": "/onboarding",
  "customData": {"cmp": "asa-brand-us", "step": "trial"}
}

What do the two Apple frameworks give you?

SKAdNetworkAdAttributionKit
AvailabilityiOS 14+iOS 17.4+, with re-engagement on 18.4+
GranularityCampaign-level, privacy-thresholdedCampaign-level, with more postback windows
Re-engagementNoYes, from 18.4
What you getA conversion value, delayedConversion values across up to three windows

Neither tells you which user installed. Both tell you which campaign did, at a delay, and both need the conversion value mapped to something you can reason about. Ingest both — networks are moving to AdAttributionKit at different speeds.

What's the catch?

Delay and thresholds. Postbacks arrive hours to days after the install, and a campaign below Apple's privacy threshold gets a null conversion value. Small campaigns therefore report late and vaguely. That is a property of the framework, not a bug in the ingestion, and any tool that claims to know the individual user behind an iOS postback is claiming something Apple does not provide.

Which metric should you watch?

Conversion-value distribution by campaign, not install count. Two iOS campaigns with equal postback volume can have completely different value distributions, and the distribution is the only signal about user quality the framework gives you.

Tagged#iOS#SKAdNetwork#AdAttributionKit