Why are my SKAN conversion values null?
A SKAN postback only carries a conversion value if the app set one and Apple's privacy tier allows it. Check the postback fields first, then your update calls.
Your answers
All questions and diagnoses
The full decision tree, if you'd rather read it than click through.
- Does the postback have did-win set to false?
- Yes, did-win is false
- Diagnosis: Non-winning postback. Apple's documentation says non-winning postbacks never contain a conversion value, so a null value with did-win false is expected.
- No, it is a winning postback
- Which postback is missing its value?
- The first postback
- How many digits is the source identifier in that postback?
- 2 digits
- Does the postback carry a coarse value of low, medium or high?
- Yes, a coarse value only
- Diagnosis: Crowd anonymity tier 1: coarse value only. At tier 1 Apple sends a 2-digit source identifier and a coarse value instead of the fine value, because the campaign does not have enough installs for a higher tier.
- No value at all
- Diagnosis: Crowd anonymity tier 0, or no update call. At tier 0 Apple sends only a 2-digit source identifier with no conversion value, and the same postback shape appears if the app never set a value.
- Yes, a coarse value only
- Does the postback carry a coarse value of low, medium or high?
- 3 or 4 digits
- Does the app call updatePostbackConversionValue on first launch and when key events happen?
- No, or not sure
- Diagnosis: The app never sets a conversion value. Apple only includes a conversion value if the app provides one, so if the update method is not called, the postback arrives without it.
- Yes
- Is every fine value you send a whole number from 0 to 63?
- No, or not sure
- Diagnosis: Fine value out of range. Apple's fine value is a 6-bit number from 0 to 63, and any value outside that range returns an invalid conversion value error and is ignored.
- Yes
- Diagnosis: Updates arrive after the window closed or was locked. Each SKAN 4 window accepts updates only while it is open, and once you lock a window, further updates in that window are ignored.
- No, or not sure
- Is every fine value you send a whole number from 0 to 63?
- No, or not sure
- Does the app call updatePostbackConversionValue on first launch and when key events happen?
- 2 digits
- How many digits is the source identifier in that postback?
- The second or third postback
- Does the app update the coarse value during days 3 to 7 and 8 to 35, using the method that takes a coarse value?
- No, or we use the older method
- Diagnosis: No coarse updates in later windows. The second and third postbacks carry only coarse values, and the older update method works only in the first window, so later postbacks stay empty unless you call the newer method.
- Yes
- Diagnosis: Updates arrive after the window closed or was locked. Each SKAN 4 window accepts updates only while it is open, and once you lock a window, further updates in that window are ignored.
- No, or we use the older method
- Does the app update the coarse value during days 3 to 7 and 8 to 35, using the method that takes a coarse value?
- The first postback
- Which postback is missing its value?
- Yes, did-win is false
Related symptoms
Common questions
Why is my SKAN conversion value null?
Usually because the postback is non-winning, the campaign falls into a low crowd anonymity tier, or the app never set a value. Apple only includes a value when the app provides one and the tier allows it.
What is crowd anonymity in SKAN?
Crowd anonymity is how Apple decides how much detail a postback carries, based on how many installs share the same app, source and country. Lower tiers get shorter source identifiers and coarse or no conversion values.
Do second and third SKAN postbacks have fine values?
No. Apple ignores fine values after the first window, so the second and third postbacks carry only a coarse value of low, medium or high.
How can I test SKAN conversion values quickly?
Install an Apple testing profile on the device. Apple says it cuts the delay from install to postback from 24 to 48 hours down to about 5 to 10 minutes.
What is mobile attribution?
Mobile attribution is the process of crediting each app install or in-app event to the ad, link or channel that drove it. A mobile measurement partner (MMP) does this across all your channels so each install is counted once.
Why do ad networks report more installs than my MMP?
Each network counts every install it touched within its own windows, including views, while an MMP gives each install to a single source. Adding the networks' numbers together therefore overstates real installs.