iOS measurement that respects ATT — and still tells you what works
Design your conversion values in the dashboard; the iOS SDK applies them on device. Postback copies from SKAdNetwork 4 and AdAttributionKit are verified against Apple’s signatures and decoded with the schema that was active at install.

iOS privacy: what’s included
Verified postback copies
SKAdNetwork and AdAttributionKit copies are checked against Apple’s signatures and de-duplicated.
Schema editor
Up to three flag events, revenue buckets, coarse-value rules and an optional lock window.
Applied on device
The SDK computes fine and coarse values on every event — no extra code in your app.
Decoded reporting
Postbacks by fidelity, null rate, decoded events and revenue ranges.
Apple Ads
AdServices attribution for Apple Ads, click and view-through.
No guessing
Without ATT consent, paid-media installs are restricted and measured in aggregate — not fingerprinted.
Six bits, designed on purpose
The fine value is (bucket << n) | flags: each of up to three events sets a flag bit, and the remaining bits encode the revenue bucket. The bit-layout preview shows all 64 values as you edit, and you can simulate an install before you save.
The first schema an install receives is pinned for its lifetime, so postbacks are always decoded with the right version.
- Up to 3 flag events + revenue buckets (≤ 2^(6−n))
- Coarse values: high, medium, low rules
- Window 1 updates fine + coarse; windows 2–3 coarse only

The schema the SDK receives
Revenue is converted to the schema currency with the daily FX rates in the SDK config before bucketing.
{
"schema_version": 3,
"currency": "USD",
"events": ["av_registration", "av_add_to_cart"],
"revenue_events": ["av_purchase"],
"revenue_buckets": [0, 0.99, 4.99, 9.99, 19.99, 49.99, 99.99, 199.99],
"coarse": {
"medium": { "events": ["av_registration"], "min_revenue": null },
"high": { "events": [], "min_revenue": 0.99 }
},
"lock_on_event": null
}Consent-first, by construction
The SDK never shows the prompt
It only reads the ATT status. Set attWaitSeconds if your onboarding asks for consent, so an authorised install carries the IDFA.
IDFA only when authorised
Device-ID matching on iOS uses the IDFA only with ATT consent; otherwise paid installs are restricted.
Privacy manifest included
PrivacyInfo.xcprivacy ships with the SDK, declaring collected data types and purposes.
SKAN and AAK together
On iOS 17.4+ the SDK updates both AdAttributionKit and SKAdNetwork, as Apple recommends for apps measured through both.
Two Info.plist keys
Send copies of winning postbacks to AppVero. Apple uses the registrable domain and posts to its well-known paths.
<key>NSAdvertisingAttributionReportEndpoint</key>
<string>https://skan.appvero.ai</string>
<key>AttributionCopyEndpoint</key>
<string>https://skan.appvero.ai</string>Which iOS versions are supported?
The SDK supports iOS 13+. Newer APIs are used where available: AdServices (14.3), ATT (14), SKAN 4 (16.1), AdAttributionKit (17.4) and StoreKit 2 (15).
Can I change the schema later?
Yes. Schemas are versioned; existing installs keep the schema they received and are decoded with it.
More of the platform
- AttributionInstalls and revenue credited to the right touchpoint.
- Deep linkingShort links, QR and deferred deep links that survive in-app browsers.
- Web-to-appSmart banners and a smart script that carry ad clicks into the app.
- Fraud protectionSigned SDK traffic and public reason codes. Included.
- Raw data & APIsHourly Parquet to your warehouse, webhooks and APIs.
See your own data in AppVero
Bring a campaign, a link or an app build. We’ll walk through attribution, deep links and raw data with your team, on data that looks like yours.