At a glance: Attributing app installs using SKAN.
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.
Tip
- 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.
- Want to understand more about the AppsFlyer SKAN solution? Check out this short, informative course on the AppsFlyer Learning Portal.
Definitions
- SDK: Current version of the AppsFlyer iOS SDK integrated in an app.
-
SKAN measurement window: Relevant for SKAN 4+. There are 3 time periods (windows) during which user post-install activity is measured:
- Window 1: 1-2 days
- Window 2: 3-7 days
- Window 3: 8-35 days
-
Conversion Value (CV): The measure of user quality reported in the postbacks sent by iOS at the end of the SKAN 4 measurement windows or, for SKAN 3 and below, at the end of the Activity Window. The AppsFlyer SDK sets the CVs for you. However, if you want to set the CV use Decode to upload your CV mapping file.
- For SKAN 4+, there are both fine and coarse conversion values.
- Conversion Studio: AppsFlyer solution for mapping infrastructure Conversion Values (CV) to events
- Solution: SDK, Infrastructure, Conversion Studio, and AppsFlyer platform working together. The AppsFlyer SKAN solution provides advertisers and ad networks with LTV data via dashboard analytics, reports, and postbacks.
- Activity Window: Relevant for SKAN 3 and below. Has a set duration, default of 24 hours, starting with the first app open. If you're using SKAN 4+, but user devices or ad networks don't support SKAN 4 yet, the Activity Window is 48 hours.
This article describes the relevant characteristics of the infrastructure and the solution. To set up measurement see SKAN Conversion Studio.
About Apple SKAN
Characteristic | Description |
---|---|
Prerequisites |
To enable the use of SKAN in the app:
*Note: Make sure you don't have another SDK that sets conversion values integrated into your app. |
Supported |
|
Limitations |
|
SKAN Attribution principles |
|
Crowd anonymity |
Apple sends some postbacks with limited data to protect user privacy in the eve. According to Apple, the postback won't include the fine or coarse CVs, nor the source app ID or complete source identifier if doing so contravenes Apple privacy tier limits. Learn more |
AppsFlyer SKAN solution
AppsFlyer provides aggregated iOS attribution results using SKAN postbacks from iOS. These postbacks are sent by iOS to ad networks who then forward them to AppsFlyer. The postbacks contain anonymized attribution records enriched with a conversion value (CV) set by the advertiser. The CV is a measure of user quality during an initial post-install window.
The AppsFlyer SKAN solution provides advertisers with:
- SKAN data in dashboards and reports derived by aggregating postbacks from all ad networks enriched with other data points like cost.
- The ability to control, via the AppsFlyer Conversion Studio, what the CV measures without the need to make changes to the app code. The CV can be used to measure revenue, engagements, or conversion events.
Note: Only the AppsFlyer SDK should have the ability to set conversion values. Make sure you don't have another SDK that sets conversion values integrated into your app.
Principles and flow
SKAN attribution flow
- Advertiser sets SKAN measurement settings in the AppsFlyer Conversion Studio.
- The user opens the app for the first time.
- During each window, AppsFlyer sets the CV based on user actions and the defined CV schema.
-
After the window closes, iOS sends the postback to the ad network and a postback copy to AppsFlyer. The postback arrives with some delay:
- For SKAN 4 measurement window 1: 24-48 hours
- For SKAN 4 measurement windows 2-3: 24-144 hours
- For SKAN 3: 24-48 hours after the most recent increase in the CV value.
- Postback copies sent directly from the iOS device to AppsFlyer are forwarded to the advertiser's defined endpoint. See send SKAN postback copies to AppsFlyer.
- Ad network forwards enriched postback to AppsFlyer or SRN communicates postback data by API.
- AppsFlyer validates and decodes the CV. Decoded data is recorded and attributed before being made available in AppsFlyer via dashboards, reports, and APIs.
To overcome the functional and structural limitations of the SKAdNetwork infrastructure, the AppsFlyer SKAN solution takes into consideration the characteristics in the table that follows.
Characteristic | Description |
---|---|
Data collection |
|
Data validation |
|
Data enrichment |
|
Data delivery |
Enriched SKAdNetwork data is available using the following: |
Seamless integration |
|
Agility |
Advertisers can change measurement configurations as needed in the dashboard. |
Conversion Studio
The AppsFlyer Conversion Studio is at the heart of the SKAN solution. It provides you with maximum flexibility to make every bit of a conversion value 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. There are several measurement modes you can use to configure your CV settings.
Type | Measurement mode | Description | Activity window |
---|---|---|---|
Flexible |
SKAN 4.0 [Best practice] |
Set a combination of revenue, conversion (in-app events), and engagement measurements during 3 configurable measurement windows. |
|
Flexible |
Set a combination of revenue, conversion (in-app events), and engagement measurements during a configurable activity window. | 12h-63 days | |
Fixed |
Revenue [Default] [Legacy] |
Measure revenue using one of the following ranges:
|
24h |
Fixed |
Conversion [Legacy] |
Select 1-6 in-app events. | 24h |
Fixed |
Engagement [Legacy] |
Number of times a user performs an event | 24h |
Flexible |
|
12-1512h (63 days) |
Additional SKAdNetwork information
Reporting options
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 |
Yes |
API |
No |
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 | Data Locker |
Yes. Raw data required. Data Locker subscription isn't required. |
|
SKAN data via Push API |
Yes | Push API |
Yes |
SKAdNetwork solution implementation checklist
No. | Action | Description | Responsibility |
---|---|---|---|
1 | Prepare |
|
Marketer, Developer |
2 | Configure |
In AppsFlyer, configure the SKAdNetwork solution in the SKAN Conversion Studio. |
Marketer |
3 | Prepare the app |
Migrate the app to AppsFlyer V6 SDK
|
Developer |
4 | Partner integrations |
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: Non-SRNs:
Meta ads: |
Marketer |
Troubleshooting guide
Symptom |
Description |
---|---|
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 and reports update
Key | Element name | Description | Example A | Example B | Example C | Example D | Example E |
---|---|---|---|---|---|---|---|
A | SKAN 4 measurement window 1 |
|
- |
- |
2 days |
- |
- |
B | SKAN 4 measurement window 2 |
|
- |
- |
- |
7 days |
- |
C | SKAN 4 measurement window 3 |
|
- |
- |
|
- |
35 days |
D | SKAN 4 measurement window 1 postback delay |
24-48 hours |
- |
- |
24-48h |
- |
- |
E | SKAN 4 measurement window 2-3 delay |
24-144 hours |
- |
- |
- |
24-144h |
24-144h |
F |
Activity Window (Not relevant for SKAN 4) |
|
24h |
72h |
- |
- |
- |
G |
SKAdNetwork timer (Not relevant for SKAN 4) |
|
0-24h | 0-24h | - | - | - |
H |
SKAdNetwork random delay (Not relevant for SKAN 4) |
Random postback delay time. The countdown starts at the end of the period defined by F+G. |
0-24h | 0-24h | - | - | - |
I | AppsFlyer processing | Postbacks received on a given day are processed at the end of the day UTC starting at 00:01 on the following day. The data is available 8 hours later. Meaning processing takes 8-32 hours. Average delay of 20 hours. For example, a postback received on Monday is processed on Tuesday. The dashboard updates by 08:00 UTC. | 8-32h | 8-32h | 8-32h | 8-32h | 8-32h |
J | Summary | The total time that can elapse | 32 hours-104h | 80-152h | 80-128 hours | 200-344h | 872-1016h |
Organic metrics in the context of SKAdNetwork
Organic metrics in the SKAdNetwork dashboard are calculated using the following mechanism:
- Organic metrics for in-app events aren't available if your selected measurement mode is SKAN 4, Custom, or Decode.
- Apple SKAdNetwork sends postbacks relating to users who install after engaging with a media source. This provides the non-organic metrics.
- AppsFlyer attribution dashboards contain metrics of all installs irrespective of source. See view AppsFlyer attribution side-by-side with SKAN attribution.
- 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
Trait | Remarks |
---|---|
Ad network access | Ad networks are provided with postbacks |
Agencies |
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. |
Agency transparency | N/A |
Timezone | UTC |
Currency | USD |
Organic data | Based on SDK event data. For example, organic install metrics are calculated as follows: Data of all installs reported by the SDK minus non-organic installs reported by SKAdNetworks. |
Non-organic data | Based on SKAdNetwork postbacks |
Data freshness |
Daily |
Historical data |
Earliest date, availability of iOS 14 (September 16, 2020) |
User access | Account users must have the necessary permissions |
App clips | App clips are attributed to organic in the SKAdNetwork dashboard. Use the Overview dashboard to view invocation media sources. |
SKAN integrated partners
Recording ad revenue
Attribute ad revenue generated during the SKAdNetwork measurement windows to the campaign bringing the user. Currently, this is limited to advertisers integrated with generic impression-level ad revenue via SDK.
To record ad revenue in your SKAN dashboard:
- Integrate the generic impression-level ad revenue SDK into your app.
- If you use a SKAN Conversion Studio fixed mode [legacy], turn on SKAdNetwork server-to-server support.
Note: See generic SDK connector documentation for information on ad sources available for mediation.
Sending postbacks to integrated partners
AppsFlyer sends integrated partners postbacks relating to SKAN attribution (for SKAN 4, postbacks are sent only for window 1).
Take note of the various options and requirements in the table that follows
Subject | Description |
---|---|
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 Collaborate > Active Integrations > select a partner > Integration tab > Data sharing. |
In-app event mapping verification |
|
See also
- Quickstart guide & FAQ to iOS 14, ATT, and SKAN
- Set up measurement using SKAN Conversion Studio (SKAdNetwork settings)
- AppsFlyer SKAN dashboard
- SKAN integrated partners list
- SKAN partner interoperation requiring set up in AppsFlyer: