Home / Symptoms / iOS SKAN

SKAN postbacks with a null conversion value

Null SKAN conversion values usually come from non-winning postbacks, low privacy tiers or missing update calls. Learn how to tell them apart and what to change.

SymptomSKAdNetwork postbacks arrive, but many have no conversion value at all.
Most likely causeThe postback is non-winning, falls into a low crowd anonymity tier, or the app never set a value.
First checkCheck the did-win field and the number of digits in the source identifier of the null postbacks.

Short answer: a SKAN postback carries a conversion value only if the app set one and Apple's privacy tier allows it. Non-winning postbacks never carry one, tier 0 postbacks carry none and tier 1 carries only a coarse value. Check did-win and the source identifier length first.

What a null conversion value means

Conversion value: the number an app sets after install to describe what the user did, sent back to the ad network in the SKAN postback. The fine value is a 6-bit integer from 0 to 63; the coarse value is low, medium or high.

A null value means Apple sent the postback without either. That can be correct behaviour, so the job is to find out which nulls are expected.

Which null values are expected?

Nulls on non-winning postbacks and on tier 0 postbacks are expected and cannot be fixed by code. Nulls on winning postbacks with 3 or 4 digit source identifiers usually mean the app did not set a valid value.

Likely causes

  • Non-winning postback. Apple says non-winning postbacks (did-win false) never contain a conversion value.
  • Crowd anonymity tier 0. The first postback at tier 0 carries only a 2-digit source identifier. Tier 0 gets no second or third postback.
  • Tier 1. The first postback carries a 2-digit source identifier and a coarse value only.
  • No update call. Apple only includes a value "if the app provides one".
  • Out-of-range fine value. Values outside 0 to 63 return an invalid conversion value error and are ignored.
  • Update after the window closed or was locked. Updates in a locked window are ignored.

How to confirm it

  1. Filter your SKAN data to did-win true. Ignore the rest for conversion value analysis.
  2. Group winning postbacks by source identifier length. Two digits means tier 0 or 1.
  3. For tier 1, check that a coarse value is present.
  4. For 3 or 4 digit postbacks with nulls, check that the app calls the update method on first launch.
  5. Install with an Apple testing profile, which shortens the delay to about 5 to 10 minutes, and inspect a postback.

MMPs such as Linkrunner, Tenjin or Kochava manage the conversion value schema for you, so check that the schema is switched on in your MMP before changing app code.

How to fix it

  1. Call updatePostbackConversionValue on first launch and on each key event.
  2. Keep every fine value between 0 and 63.
  3. Map coarse values to meaningful events so tier 1 postbacks still carry signal.
  4. Consolidate very small campaigns so each has more installs per source (general practice).
  5. Lock a window only when the value is final.
Postback shapeMeaning
did-win false, no valueExpected: non-winning
2-digit source, no valueTier 0, or no update call
2-digit source, coarse onlyTier 1
3 or 4 digit source, no valueApp did not set a value

The SKAN null values troubleshooter asks these questions in order, and the SKAN 4 postbacks guide explains windows and tiers. If no postbacks arrive at all, see no SKAN postbacks.

FAQ

Common questions

Why are most of my SKAN conversion values null?

For small campaigns, low crowd anonymity tiers are the usual reason: Apple withholds the value to protect privacy. Non-winning postbacks also never carry values.

What is the difference between fine and coarse values?

The fine value is a number from 0 to 63 and only appears in the first postback at higher tiers. The coarse value is low, medium or high and appears at tier 1 and in later postbacks.

Can I raise my crowd anonymity tier?

Apple assigns tiers from crowd size, so more installs per app, source and country help. Consolidating campaigns is the usual approach, though it is general practice rather than an Apple rule.

Do I need ATT permission to set SKAN values?

No. Apple says apps do not need ATT permission to call the SKAN or AdAttributionKit APIs.

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.