ReflectDocs
Browse docsOverview
Unity SDK

SKAN conversion values

Update SKAdNetwork / AdAttributionKit conversion values from your game. iOS-only — no-op on Android and Editor.

What is SKAN?

SKAdNetwork (SKAN) is Apple's privacy-preserving install attribution framework. Ad networks receive postbacks from iOS with a conversion value (0-63) that encodes post-install behavior (revenue tier, level reached, etc.). Reflect handles postback receipt and decoding server-side — the SDK's job is to update the conversion value at the right moments in your app.

API

// Simple — just a fine value (0-63)
ReflectSDK.UpdateConversionValue(12);

// Full — fine value + coarse + lock window + callback
ReflectSDK.UpdateConversionValue(
    fineValue:   42,
    coarseValue: "high",        // "low", "medium", "high", or null
    lockWindow:  false,         // true = lock the current postback window
    onComplete:  (ok, err) => {
        if (!ok) Debug.LogWarning("SKAN update failed: " + err);
    }
);

Platform behavior

PlatformBehavior
iOS 17.4+Uses AdAttributionKit (Apple's successor to SKAN)
iOS 16.1+Uses SKAdNetwork 4.0 — supports fine value, coarse value, and lock window
iOS 15.xLegacy SKAN — fine value only, coarse value ignored
Android / EditorNo-op (Editor logs the call for debugging)

When to call it

Call UpdateConversionValue whenever the user crosses a meaningful threshold:

// Example: encode revenue tiers
void OnPurchase(double revenueUsd) {
    int cv = revenueUsd >= 50 ? 63
           : revenueUsd >= 20 ? 48
           : revenueUsd >= 10 ? 32
           : revenueUsd >= 5  ? 16
           : revenueUsd >= 1  ? 8
           : 4;
    ReflectSDK.UpdateConversionValue(cv, coarseValue: cv >= 32 ? "high" : "medium");
}

// Example: encode level progress
void OnLevelComplete(int level) {
    int cv = Math.Min(level, 63);
    ReflectSDK.UpdateConversionValue(cv);
}

Conversion value schema (admin)

In the admin panel, go to SKAN → CV Schema to define how Reflect decodes the 0-63 value back into human-readable metrics (revenue ranges, engagement tiers). This mapping is used when displaying SKAN reports and doesn't affect the SDK.

SKAN is complementary to Reflect's own attribution
Reflect attributes installs using deterministic (Play Referrer / AdServices) and fingerprint methods. SKAN postbacks provide an independent, Apple-verified signal. Use both: Reflect for real-time granular data, SKAN for privacy-safe validation and networks that only support SKAN.