SKAdNetwork Explained: What iOS Attribution Actually Measures

SKAdNetwork (SKAN) is Apple's privacy-preserving way to attribute an iOS app install to the ad campaign that drove it — without ever identifying the user. It trades the user-level detail marketers had before 2021 for data that is aggregated, deliberately delayed, and sometimes withheld entirely. If your iOS install reports look coarse, late, and full of gaps, SKAdNetwork is usually why.

Why SKAdNetwork exists

Apple introduced SKAdNetwork in its current form alongside App Tracking Transparency (ATT) in iOS 14.5, released in April 2021 (Apple Developer). ATT requires apps to ask permission before tracking a user across other companies' apps and sites, and most people decline: industry benchmarks put average opt-in at roughly a third of users, with wide variation by vertical and country (eMarketer ATT benchmarks, AppsFlyer).

Without that permission there's no shared device identifier (IDFA) to match an ad click to an install. SKAdNetwork is Apple's answer: the ad network, the App Store, and the developer cooperate to confirm an install happened and which campaign won the credit — and Apple returns the result in a way that can't be traced back to an individual.

What a SKAdNetwork postback actually contains

When an install is attributed, Apple sends a signed postback to the ad network with a small, fixed payload rather than user-level events:

  • Campaign / source identifier: which campaign won, at limited granularity.
  • Conversion value: a single value summarizing early in-app behavior. In SKAN 4 this is either a fine value from 0–63 (a 6-bit number) or a coarse value of low, medium, or high (Apple Developer).
  • No user or device ID: nothing that ties the install to a person.

The catch is the crowd anonymity threshold. If a campaign doesn't have enough installs to keep an individual unidentifiable, Apple downgrades the fine value to a coarse one, or strips the conversion value to null altogether. Small campaigns routinely get null values — the privacy model is working as designed, but it means low-volume tests come back nearly blind.

SKAN 4 spreads measurement across three windows

Earlier SKAN versions sent a single postback shortly after install, which told you almost nothing about whether those users stuck around. SKAN 4 changed that by delivering up to three postbacks across staggered windows (Adjust):

  • Window 1: days 0–2 after install.
  • Window 2: days 3–7.
  • Window 3: days 8–35.

Each window carries its own conversion value, so you can see early signal (did they finish onboarding?) separately from later signal (did they subscribe in week two?). Apple also randomizes the timing of each postback, which is why SKAN data always arrives a day or more late and can never be reconciled in real time.

It's also winner-take-all: for a given install, Apple attributes the single ad with the highest priority, not every touch the user saw. A multi-touch journey across several networks collapses to one credited source, which is part of why SKAN totals and a multi-touch tool like Firebase rarely line up.

Mapping conversion values to revenue

Because a fine conversion value is just a number from 0 to 63, it carries no revenue, currency, or event name on its own — your team decides what each value means before campaigns run. A subscription app might encode behavior into the 6-bit space like this:

  • 0: install only, no further action.
  • 1–9: completed onboarding or a key first action.
  • 10–30: started a free trial, bucketed by source or plan.
  • 31–63: converted to paid, bucketed into revenue tiers (for example, $0–5, $5–20, $20+).

You then read revenue back from the bucket rather than from an exact figure. Get the encoding wrong and you can't re-run history, since Apple only ever sends the value you defined — which is why most teams lean on an attribution provider to manage the schema and infer revenue and lifetime value from these coarse signals.

What this means for your ROAS

Put together, SKAdNetwork reshapes how mobile ROAS can be measured:

  • It's delayed. Randomized timers mean you optimize on data that's already a few days old.
  • It's coarse. A 6-bit conversion value can't carry exact revenue, so teams map purchase tiers onto the 0–63 range and infer revenue from the bucket.
  • It's incomplete. Null values below the anonymity threshold leave low-volume campaigns underreported.

This is also why SKAN numbers rarely match a tool like Firebase. Firebase measures what consenting users do inside your app; SKAN measures privacy-limited install attribution from Apple. The practical pattern is to keep first-party, owned events as your source of truth for product behavior and revenue, and treat SKAN as the campaign-attribution layer on top — never expecting the two to reconcile to the same number.

What comes after SKAdNetwork

At WWDC 2024 Apple introduced AdAttributionKit (AAK), built on the same privacy model and designed to interoperate with SKAdNetwork while adding re-engagement attribution, configurable conversion windows, and support for alternative app marketplaces (Apple Developer). Apple has not announced a deprecation date for SKAdNetwork, and because the two frameworks interoperate, SKAN remains what most iOS campaigns still run on today. The honest takeaway: iOS attribution is permanently aggregate and privacy-first now, and the winning setup is one that treats coarse, delayed campaign data as a signal to combine with owned data — not a ledger to trust on its own.

FAQ

Frequently asked questions

What is SKAdNetwork?

SKAdNetwork (SKAN) is Apple's privacy-preserving framework for attributing an iOS app install to the ad campaign that drove it, without identifying the user. The ad network, the App Store, and the app cooperate so Apple can confirm an install and credit a campaign while returning only aggregated, non-personal data.

What is the difference between SKAdNetwork and ATT?

App Tracking Transparency (ATT) is the prompt that asks users for permission to track them across other apps and sites; SKAdNetwork is the attribution mechanism that still works when permission is denied. ATT governs consent for user-level tracking; SKAN provides privacy-safe, aggregated install attribution regardless of that choice.

What is a conversion value in SKAN 4?

A conversion value is a small number summarizing a user's early in-app behavior. SKAN 4 supports a fine value from 0–63 (six bits) or a coarse value of low, medium, or high, and Apple sends null when a campaign has too few installs to keep the user anonymous.

Is SKAdNetwork being replaced by AdAttributionKit?

AdAttributionKit, introduced at WWDC 2024, is positioned as SKAdNetwork's successor and adds re-engagement attribution and configurable windows. However, Apple has not announced a deprecation date for SKAdNetwork, and the two frameworks interoperate, so SKAN remains the framework most iOS campaigns use today.