At a glance: Attributing app installs using SKAN.
SKAdNetwork (SKAN), part of Apple iOS, lets advertisers measure campaign performance while simultaneously preserving user privacy. SKAN operates without IDFA or other advertising ID. SKAN functions without the need for ATT consent.
iOS 15 news
Starting iOS 15 we recommend that you send SKAN postback copies to AppsFlyer. Doing so enables AppsFlyer to verify that Conversion Values in postbacks haven't been manipulated.
- Quickstart guide & FAQ to iOS 14, ATT, and SKAN
- AppsFlyer SKAN dashboard
- Set up measurement using SKAN Conversion Studio (SKAdNetwork settings)
- SKAN integrated partners list
- SKAN partner interoperation requiring set up in AppsFlyer:
- SDK: Current version of the AppsFlyer iOS SDK integrated in an app.
- Conversion Value (CV): The measure of user quality reported in the postback sent by iOS at the end of the Activity Window. The AppsFlyer SDK sets the CV for you. However, if you want to set the CV use Decode to upload your CV mapping file.
- Conversion Studio: AppsFlyer solution for mapping infrastructure Conversion Values (CV) to events
- Solution: SDK, Infrastructure, Conversion Studio, and AppsFlyer platform working together. The Solution provides advertisers and ad networks with LTV data via dashboard analytics, reports, and postbacks.
- Activity Window has a set duration, default of 24 hours, starting with the first app open.
This article describes the relevant characteristics of the infrastructure and the solution. To set up measurement see SKAN Conversion Studio.
About Apple SKAN
To enable the use of SKAN in the app:
|SKAN Attribution principles||
Apple sends some postbacks without a CV. According to Apple, the postback won't include the CV nor the source app ID if doing so contravenes Apple privacy threshold limits.
AppsFlyer SKAN solution
AppsFlyer Conversion Studio is at the heart of the SKAN solution. It provides you with maximum flexibility to make every bit count. You determine precisely what measurement data should be encoded within the CV—including what activity and for how long to measure during the post-install period.
|Description||Measurement duration range (hours)|
|1-6 in-app events as conversion events||24|
|Number of times a user performs an event||24|
|Set any combination of revenue, conversion, and engagement. Set the measurement duration. AppsFlyer assigns the necessary in-app events and values to the 63 CVs.||12-72|
|Associate CVs with your events and settings. In this mode, you set the CV in the app and provide AppsFlyer the CV to event mapping.||12-1512 (63 days)|
Solution principles and flow
To overcome the functional and structural limitations of the SKAdNetwork infrastructure, the Solution takes into consideration the characteristics in the table that follows.
Enriched SKAdNetwork data is available using the following:
Advertisers can change measurement configurations as needed in the dashboard.
SKAdNetwork attribution flow
- Advertiser sets SKAN measurement settings in the Platform.
- After the user opens the app for the first time, Platform instructs SDK how to calculate the CV using the current configuration set by Advertiser.
- During the Activity Window SDK updates the CV for each measurable user action.
- 24-48 hours after the most recent CV update, iOS sends the postback to ad network.
- Ad network forwards the postback to AppsFlyer.
- AppsFlyer validates and decodes the CV. Decoded data is:
- Recorded and attributed before being made available in AppsFlyer via dashboards, reports, and APIs.
- Sent via a postback to the Ad network to enable campaign optimization.
Additional SKAdNetwork information
SKAdNetwork reports don't contain user-level identifiers.
|Report name||Type||Enriched by AppsFlyer||Delivery method||Premium feature|
SKAN aggregated performance report. Aggregates of install, in-app events, and revenue. The data is similar to that found in the SKAN dashboard.
Aggregated using install or postback arrival date
|SKAN aggregated postback report. SKAN postbacks aggregated to the most granular level possible.||Postback aggregation using postback arrival date||No||API||No|
SKAN raw-data (row-level) reports via Data Locker (with examples). Reports available:
Yes. Raw data required. Data Locker subscription isn't required.
SKAN data via Push API
SKAdNetwork Solution implementation checklist
In AppsFlyer, configure the SKAdNetwork solution
|3||Prepare the app||
Migrate the app to AppsFlyer V6 SDK
Ad network partners must integrate with AppsFlyer using SKAdNetwork integration. Note! AppsFlyer SKAdNetwork simulation contains the data of all your partners irrespective of their current integration status. This won't be the case for the live data reported by SKAdNetwork postbacks.
In relation to partners running your campaigns complete the following as required:
|The dashboard doesn't contain any non-organic installs.||
|The dashboard contains non-organic installs but no in-app events at all.||
|The dashboard contains installs and some in-app events. Some in-app events are missing.||
|Geo (country) locations are misleading||
Geo data is derived as follows:
Timing from app install until dashboard update
|Timer element||Description||Range (hours)|
|SKAdNetwork random delay timer||Random postback delay time: 0–24 hours||0-24|
|AppsFlyer processing||Postbacks received on a given day are processed at the end of the day starting at 00:01 on the following day. The data is available 8 hours later on the next day. Average delay of 20 hours. For example, a postback received on Monday is processed on Tuesday. The dashboard updates by 08:00 UTC.||8-32|
|Summary||The average time elapsed from app open to data in the dashboard: 68 hours.||32–104|
Organic metrics in the context of SKAdNetwork
Organic metrics in the SKAdNetwork dashboard are calculated using the following mechanism:
- Apple SKAdNetwork sends postbacks relating to users who install after engaging with a media source. This provides the non-organic metrics.
- AppsFlyer traditional dashboard contains metrics of all installs irrespective of source.
- Using this data organic metrics are calculated as A-B where:
- A = Total of all users based on the traditional overview dashboard
- B = Non-organic users as reported by SKAdNetwork postbacks
Caveat relating to Apple Search Ads: Installs brought by Apple Search Ads in the traditional dashboard are non-organic. However, in the context of SKAdNetwork, they form part of the organic metric.
Traits and limitations
|Ad network access||Ad networks are provided with postbacks|
Not supported. This means that agencies mustn't enable ad networks running SKAdNetwork campaigns. Agency! Ask the advertiser to enable the Ad network don't do it yourself. Agencies can indicate that they brought the user by implementing SKAN agency recognition.
|Organic data||Based on SDK event data. For example, organic install metrics are calculated as follows: Data of all installs reported by the SDK less non-organic installs reported by SKAdNetworks.|
|Non-organic data||Based on SKAdNetwork postbacks|
Daily. Due to SKAdNetwork timing issues on average 68 hours (~3 days) after app open. Range: 32-104 hours.
Earliest date, availability of iOS 14 (September 16, 2020)
|Team member access||Available. According to account permissions|
|App clips||App clips are attributed to organic in the SKAdNetwork dashboard. Use the Overview dashboard to view invocation media sources.|
SKAdNetwork integrated partners
Recording ad revenue
Attribute ad revenue generated during the SKAdNetwork Activity Window to the campaign bringing the user. Currently, this is limited to advertisers integrated with MoPub impression-level ad revenue via SDK.
To record ad revenue in your SKAdNetwork dashboard:
- Integrate the MoPub impression-level ad revenue SDK into your app.
- Turn on SKAdNetwork sever-to-server support.
MoPub mediates the following ad networks:
- AdMob (Google)
- Google Ad Manager (Google)
- Facebook Audience Network
- Snap Audience Network
- Unity Ads
- Verizon Media
Sending postbacks to integrated partners
AppsFlyer sends integrated partners postbacks relating to SKAdNetwork attribution. Take note of the various options and requirements in the table that follows
Transaction ID sharing
Action required: Check with the integrated partner if they require the transaction ID and configure the setting accordingly.
AppsFlyer sends the attributed ad network partner postbacks. Meaning the decoded postbacks, not a copy of the SKAdNetwork postback received from iOS. These postbacks contain decoded CV data relating to the install and associated in-app event data of actions performed by the user during the Activity Window.
Because the transaction ID can be used to decode your CV, we don't share it without your permission.
Transaction ID sharing
Advertisers enable transaction ID sharing as follows: In AppsFlyer, go to Configuration > Integrated Partners > select a partner > Integration tab > Data sharing.
In-app event mapping verification