SKAdNetwork iOS attribution explained: SKAN 4, AdAttributionKit and what to do now
SKAdNetwork is the one attribution signal that covers every iOS user. Here's how it works, what AdAttributionKit adds, and how to design a conversion schema that helps you bid.
- Without ATT consent, SKAdNetwork and AdAttributionKit are your main iOS attribution signal.
- SKAN 4 gives three postbacks; only the first can carry a fine 0–63 value.
- AdAttributionKit adds re-engagement, configurable windows, cooldowns and country codes.
- Consolidate campaigns so postbacks clear privacy thresholds.
- Design the conversion value schema around early predictors of revenue.
If you spend money on iOS user acquisition, SKAdNetwork iOS attribution is how most of that spend gets measured. Apple's privacy framework tells ad networks that an install or re-engagement happened, and passes back a limited, delayed signal about what the user did next. It's coarser than the user-level data marketers had before App Tracking Transparency, but it's the one signal that covers every iOS user, opted in or not. Apple's newer framework, AdAttributionKit, builds on it.
This guide explains how the system works in plain terms, what changed with SKAN 4 and AdAttributionKit, how to design a conversion value schema, and what a marketing team should actually do.
Why iOS attribution works differently
Since iOS 14.5, apps need the user's permission through the App Tracking Transparency (ATT) prompt to track them across other companies' apps and websites or to access the advertising identifier (IDFA). Without permission, the IDFA is all zeros. Apple defines tracking broadly, including linking data from your app with data from other companies for targeted advertising or advertising measurement, per Apple's user privacy guidance.
So for users who don't opt in, classic deterministic attribution (this ad click produced this user) isn't allowed. SKAdNetwork fills the gap by doing the attribution on the device and sending ad networks an anonymized, aggregated result.
Two other signals still exist alongside it. Users who accept the ATT prompt can be attributed at user level by your MMP as before. And Apple Search Ads, because it runs inside the App Store, has its own attribution through Apple's AdServices framework, which doesn't depend on ATT consent. A complete iOS measurement setup uses all three and understands where each one is blind.
How SKAdNetwork iOS attribution works
The flow, simplified:
- A signed ad is shown. The ad network signs the ad impression or click with its network ID and a campaign or source identifier.
- The user installs and opens the app. The device records which eligible ad gets credit.
- Your app updates a conversion value as the user does things: completes signup, starts a trial, purchases.
- A timer runs. After the measurement window closes, the device waits a random delay so the postback can't be tied to a specific moment.
- A postback is sent to the ad network (and optionally a copy to you or your MMP) with the source identifier, the conversion value and other fields, as long as privacy thresholds are met.
The key constraint is crowd anonymity. The more installs a campaign drives, the more detail Apple includes in the postback. Small campaigns get less: shorter source identifiers, coarse values instead of fine ones, or no conversion value at all.
SKAN 4 essentials
SKAdNetwork 4 introduced most of the structure marketers work with today:
| Feature | What it means in practice |
|---|---|
| Three postbacks | Measurement windows of roughly days 0–2, 3–7 and 8–35 after install, so you see early and later behavior |
| Fine conversion value | A value from 0 to 63 (6 bits), available only in the first postback and only when the crowd anonymity tier is high enough |
| Coarse conversion value | Low, medium or high. Used in the second and third postbacks, and in the first when volume is too low for a fine value |
| Hierarchical source identifier | Two to four digits for campaign or creative detail. Higher-volume campaigns get more digits |
| Lock window | Your app can end a window early once the outcome is known, so the postback arrives sooner |
| Web-to-app | Ads on web pages in Safari can be attributed as well as in-app ads |
Share your app and goals. We'll send a channel plan, starting budget and the first creatives we'd test — free, within 48 hours.
Get my free growth plan WhatsApp usAdAttributionKit: what's new and what's the same
AdAttributionKit (AAK) is Apple's successor framework. It launched with iOS 17.4, is interoperable with SKAdNetwork so existing campaigns keep working, and supports alternative app marketplaces in regions where Apple allows them. It keeps the SKAN 4 model of postbacks, fine and coarse values and crowd anonymity, and adds:
- Re-engagement attribution (iOS 18), so ads that bring existing users back can be measured, not just installs. From iOS 18.4, multiple re-engagement windows can be active at once, with conversion tags to update a specific one.
- Configurable attribution windows for installs, set globally, per ad network or per interaction type (click or view), with the option to ignore views entirely. The default remains 30 days for clicks and 1 day for views.
- Attribution cooldowns, which block later conversions from taking credit for a set number of hours after one is recorded.
- Country codes in postbacks, released only when volume clears a higher anonymity tier.
- Development postbacks (iOS 18.4) that you generate from the device's developer settings to test your server pipeline without running a live campaign.
Apple walks through these in its WWDC25 AdAttributionKit session. One caution: support across ad networks and MMPs has rolled out unevenly, and Singular has noted that adoption of newer versions has lagged. Check what each of your networks actually supports before relying on a feature.
Designing a conversion value schema
The conversion value is your only post-install signal for non-consenting users, so treat its design as a product decision, not a technical afterthought. A step-by-step approach:
- Pick the business outcome you optimize for. Revenue for commerce and games, trial-to-paid for subscriptions, a qualified action (such as KYC completion or first deposit) for fintech.
- Find early predictors. Using your own data, identify what users do in the first 48 hours that predicts that outcome: completed onboarding, trial start, first purchase amount, number of sessions.
- Map the fine value (0–63) to the first window. Common patterns are revenue buckets, a funnel ladder, or bits that combine flags (signed up, started trial, purchased).
- Map coarse values to clear tiers for all three windows. For example: low = installed and onboarded, medium = trial started, high = paid.
- Decide on locking. Lock the first window early if the key event usually happens in the first hours, so networks get faster feedback.
- Agree on decoding. Your MMP and ad networks must interpret the values the same way. Document the schema and version it.
- Review quarterly. Compare SKAN-reported results with your actual revenue by cohort, and adjust buckets that don't separate good users from bad.
A simple example for a subscription app:
| Window | Signal | Example mapping |
|---|---|---|
| 0–2 days (fine) | Funnel ladder | 1–10 onboarding steps, 20 paywall viewed, 30 trial started, 40+ paid by plan type |
| 0–2 days (coarse) | Fallback | Low = onboarded, medium = trial, high = paid |
| 3–7 days (coarse) | Trial health | Low = inactive, medium = active trial, high = converted |
| 8–35 days (coarse) | Retention and renewal | Low = churned, medium = active, high = renewed or upgraded |
What iOS marketers should do now
- Use an MMP that manages SKAN and AdAttributionKit schemas, decodes postbacks and combines them with opted-in data. Our MMP comparison covers the main options.
- Consolidate campaigns so each one clears privacy thresholds. Many small campaigns mean many null conversion values.
- Keep source identifiers meaningful, mapping digits to campaign, ad set and creative in a documented way.
- Ask for the ATT prompt at a sensible moment, after the user sees value, with a clear pre-prompt screen. More opt-ins means more user-level data alongside SKAN.
- Triangulate. Compare SKAN results with platform-modeled conversions, Apple Search Ads attribution and your own backend cohorts. No single source is complete.
- Test before launch using development postbacks or your MMP's test tools.
Common SKAN mistakes
- Optimizing networks for an event that doesn't predict revenue, such as "app open".
- Splitting budget across so many campaigns that most postbacks arrive without a conversion value.
- Changing the schema mid-test without telling the networks, so historical comparisons break.
- Reading SKAN numbers as exact counts. They are delayed, thresholded samples of what happened.
Need help with iOS measurement?
Appryze's founder has spent over 12 years running user acquisition for consumer and fintech apps on Google, Meta and Apple Search Ads, including iOS campaigns after ATT. We design the event plan and conversion schema during the build, so iOS campaigns have a usable signal from launch. See our Growth page, or read our Apple Search Ads guide.
Frequently asked questions
What is SKAdNetwork?
SKAdNetwork is Apple's privacy-preserving attribution framework for iOS. The device decides which ad gets credit for an install, then sends the ad network a delayed, anonymized postback with a campaign identifier and a conversion value set by the app. It works for all users, including those who decline tracking under App Tracking Transparency.
What is the difference between SKAdNetwork and AdAttributionKit?
AdAttributionKit is Apple's successor to SKAdNetwork, introduced with iOS 17.4 and interoperable with it. It keeps the same postback and privacy model, but adds re-engagement attribution, configurable attribution windows and cooldowns, country codes for high-volume campaigns, support for alternative marketplaces and development postbacks for testing.
How many postbacks does SKAN 4 send?
Up to three, one for each measurement window: roughly days 0 to 2, 3 to 7 and 8 to 35 after install. The first postback can carry a fine conversion value from 0 to 63 if the campaign has enough volume. The second and third carry only a coarse value of low, medium or high.
What should I put in my SKAN conversion values?
Encode the early user actions that best predict your real business outcome, such as onboarding completion, trial start or first purchase value, in the first window. Use coarse values for clear tiers like engaged, trial and paid. Document the schema, share it with your MMP and networks, and check it against actual cohort revenue regularly.
Why are my SKAdNetwork conversion values null?
Usually because the campaign didn't drive enough installs to clear Apple's crowd anonymity threshold, so the postback was sent without a conversion value. Consolidating campaigns and ad sets, reducing very granular targeting and increasing budget per campaign generally reduces nulls.
Share your app and goals. We'll send a channel plan, starting budget and the first creatives we'd test — free, within 48 hours.
Get my free growth plan WhatsApp usKeep reading
More in SKAdNetwork iOS Attribution · All app marketing guides