SKAdNetwork (SKAN) — what you need to know
A practical primer on Apple's SKAdNetwork privacy framework — how postbacks work, what conversion values measure, why some CVs come back null, and what changed in SKAN 4.
SKAdNetwork (SKAN) is Apple's privacy-preserving attribution framework for iOS. It lets advertisers measure campaign performance — installs, conversion events, revenue — without ever seeing a device identifier or requiring user consent under ATT (App Tracking Transparency).
This article explains the mechanics before you touch any dashboard or configuration.
Why SKAN exists
Before iOS 14, mobile attribution relied on the IDFA (Identifier for Advertisers) — a persistent device-level identifier that made it straightforward to link a specific ad impression to a specific install. When Apple introduced ATT opt-in consent in 2021, the share of users sharing their IDFA dropped significantly.
SKAN fills the gap: it gives advertisers campaign-level attribution data for iOS users who never consented to tracking, while ensuring that Apple — not advertisers — controls what gets shared and when.
SKAN operates without any device identifier. It works regardless of whether the user accepted or declined ATT.
The four players
Every SKAN attribution involves four parties:
| Player | Role |
|---|---|
| Publishing app | Where the ad is shown |
| Ad network | Connects advertiser campaigns to publisher inventory |
| Advertiser app | The app being promoted |
| MMP (AdShift) | Collects, verifies, decodes, and aggregates postbacks from all networks |
How a postback is generated — step by step
1. Ad is displayed. The publishing app shows an ad and notifies Apple's SKAdNetwork framework.
2. User installs the app. If the user taps the ad and installs the advertised app within the attribution window, Apple begins measuring post-install activity.
3. iOS sets the conversion value. The AdShift SDK running inside the installed app updates the conversion value (CV) as the user takes actions — opening the app, making a purchase, completing a level. The CV encodes user quality into a small number.
4. iOS sends the postback. After the measurement window ends (with a built-in delay for privacy), iOS sends a signed postback to the ad network. Starting iOS 15, a copy is also sent directly to AdShift for independent verification.
5. AdShift decodes and aggregates. AdShift receives postbacks from every connected ad network, verifies Apple's signature, decodes the CV back into meaningful metrics (revenue ranges, event counts), and surfaces the results in the SKAN Overview dashboard.
Postbacks contain no device identifiers and no user data. The built-in delay (minimum 24 hours) further prevents any attempt to single out a specific user.
SKAN 4: three measurement windows
SKAN versions 1–3 sent a single postback per install. SKAN 4 (released October 2022) introduced up to three postbacks, each covering a different period:
| Window | Period after install | Postback sent after |
|---|---|---|
| Window 1 | Days 1–2 | 24–48 hours |
| Window 2 | Days 3–7 | 24–144 hours |
| Window 3 | Days 8–35 | 24–144 hours |
This lets advertisers track early engagement (W1), mid-funnel behaviour (W2), and longer-term value like renewals or repeat purchases (W3) — all without user-level data.
Conversion values: fine, coarse, and null
Each postback carries a conversion value (CV) that encodes user quality during the measurement window. SKAN 4 has two precision levels:
Fine (0–63) — Available only in Window 1 when a campaign has enough installs. Six bits encode up to 64 distinct combinations: revenue ranges, event counts, funnel steps, or any combination. You define the mapping in AdShift's SKAN Conversion Studio.
Coarse (low / medium / high) — Three buckets used in Windows 2 and 3, and in Window 1 when install volume is too low for a fine value. You assign conditions (e.g. "high = user made a purchase") in Conversion Studio.
Null — When a campaign's install volume falls below Apple's crowd anonymity threshold, the CV is withheld entirely and the postback arrives with no value. This is Apple's last line of privacy protection.
Crowd anonymity
Apple groups campaigns into privacy tiers based on install volume. The more installs a campaign generates, the more data Apple shares:
- Tier 0 — no CV, no source identifier
- Tier 1 — coarse CV only, 2-digit source identifier
- Tier 2 / 3 — fine CV available, up to 4-digit source identifier
A high share of null CVs in your SKAN Overview dashboard usually means your campaigns are below the threshold. The most effective fix is consolidating campaigns to increase per-campaign install volume.
LockWindow
By default, iOS waits until the end of the window period before sending each postback, in case the CV is still being updated. LockWindow lets you tell iOS that measurement for a given window is complete — iOS then sends the postback earlier, without waiting for the full window to expire.
Use LockWindow when your key conversion event happens reliably within the first day or two and you want faster data for optimisation. Configure it per window in SKAN Conversion Studio.
Challenges to keep in mind
Postback delay. Data arrives at minimum 24 hours after the install. You cannot optimise in real time based on SKAN postbacks.
No user-level data. SKAN is always aggregated. You cannot look up what a specific user did — only what a campaign drove in aggregate.
Null CVs. Low-volume campaigns receive no conversion value. Consolidate campaigns or focus on networks with high install volume to unlock fine values.
No re-engagement. SKAN only covers new installs. Re-attribution and re-engagement attribution remain the domain of device-level MMP attribution.
Postback copies needed for fraud protection. If iOS doesn't send a copy of the postback directly to AdShift (via NSAdvertisingAttributionReportEndpoint), AdShift relies on the ad network forwarding the postback — and cannot verify that the conversion value wasn't manipulated in transit.
SKAN in AdShift
AdShift handles the full SKAN stack:
- SDK — sets conversion values automatically based on your published Conversion Studio schema, no code changes needed when you update the schema.
- Postback collection — receives postbacks directly from iOS (copy) and from each ad network, verifies Apple's signature, and decodes the CV.
- SKAN Overview dashboard — aggregated postback metrics: installs, decoded revenue, win rate, coarse/window/CV-type distributions, breakdown by network and campaign.
- Single Source of Truth (SSOT) — deduplicated view combining SKAN postbacks with device-level attribution, removing double-counting for users attributed both ways.
See also
- SKAN: Overview — the SKAN dashboard and its metrics explained
- SKAN: Conversion Studio — configure what your conversion values measure
- Analyze: Overview — unified attribution including Single Source of Truth mode