SKAdNetwork Conversion Value Builder
A postback carries six bits — 64 slots, and nothing else, to describe what an install did. Map revenue or funnel steps into them, set the SKAN 4 coarse fallback, and export Swift for SKAdNetwork and AdAttributionKit.
Revenue buckets
Six bits per postback. 59 slots still free.
| Value | Meaning | Coarse |
|---|---|---|
| 0 | Install, no measured activity | low |
| 1 | Revenue $0.01 – $1.99 | low |
| 2 | Revenue $2 – $9.99 | low |
| 3 | Revenue $10 – $49.99 | medium |
| 4 | Revenue $50 or more | high |
Send the highest value the user has reached — postbacks overwrite, they do not accumulate, so a later lower value erases a higher one. Deeplinkly receives SKAdNetwork and AdAttributionKit postbacks and decodes them against this schema; see the iOS SDK docs.
The three mistakes this prevents
Spending all 64 values on revenue nobody reads
A schema with 40 revenue buckets at $0.50 granularity leaves nothing for the behavioural signal that actually predicts retention. The budget meter makes the trade-off visible while you are still deciding.
Shipping without a coarse mapping
SKAN 4 downgrades low-volume campaigns to low/medium/high. Teams that never assigned coarse tiers get a useless constant for exactly the campaigns they are testing. This tool warns when a tier is unreachable.
Configuring SKAdNetwork and forgetting AdAttributionKit
The two frameworks run in parallel and share the same value space, but they are separate calls. Exporting only the SKAdNetwork snippet leaves the newer framework silent on devices that use it.
Frequently asked questions
- What is a SKAdNetwork conversion value?
- It is a six-bit number — 0 to 63 — that your app sets after install and Apple returns in the attribution postback. It is the only channel through which post-install behaviour reaches your measurement stack on iOS, because SKAdNetwork deliberately withholds user-level data. Whatever you encode in those 64 slots is all you will ever know about what that install did.
- How many conversion values do I get?
- Exactly 64, numbered 0 through 63. That is a hard limit set by the six bits in the postback and cannot be raised. This tool shows the budget as you build so you find out before you ship, not after.
- What is a coarse conversion value in SKAN 4?
- When a campaign has too few installs to meet Apple's crowd-anonymity threshold, the fine 0–63 value is withheld and you receive a coarse value instead — low, medium, or high — or nothing at all. If you have not decided which fine values map to which coarse tier, your smallest campaigns report nothing useful. Those are usually the campaigns you are testing, so the coarse mapping matters more than it looks.
- Should I map revenue or funnel events to conversion values?
- Revenue buckets suit apps monetising immediately — commerce, subscriptions with a short trial. Funnel steps suit apps where the predictive signal is behavioural, such as completing onboarding or connecting an account, and revenue arrives too late for the measurement window. A funnel schema is cumulative: each value means the furthest step reached, so one slot per step is enough.
- Why is conversion value 0 reserved?
- Apple treats 0 as the default for an install with no update. If you assign meaning to 0, you cannot distinguish an install that reached that state from one that never sent anything at all. This tool always reserves 0 for 'install, no measured activity' and starts your schema at 1.
- Do I need AdAttributionKit as well as SKAdNetwork?
- AdAttributionKit is Apple's successor to SKAdNetwork and the two run in parallel. They share the same 0–63 fine value and the same low/medium/high coarse tiers, so one schema drives both — but they are separate API calls, and shipping only the SKAdNetwork call leaves the newer framework unconfigured on devices that use it. This tool exports both.
- Can I change my conversion value schema later?
- You can change the code any time, but you cannot re-decode installs already measured under the old mapping. A postback carries the number, not its meaning, so historical data is interpreted with whatever schema was live at the time. That is why it is worth using more of the 64 slots than you need on day one — unused granularity costs nothing and cannot be added retroactively.
- Is my schema sent to your servers?
- No. Everything runs in your browser. A conversion schema encodes what you consider valuable about a user, which is competitive information, so it never leaves your device and there is no account.