Quickstart guide & FAQ to iOS 14, ATT, and SKAN

At a glance: Starting iOS 14.5, Apple requires that you implement and comply with the terms of AppTrackingTransparency (ATT). ATT means that if your app collects data about end-users and shares it with other companies for purposes of tracking across apps and websites, you must use the ATT consent prompt and get user consent in both the publisher and advertiser app. If you don't track, there is no need to display the prompt. 


Attribution measurement in an ATT environment

AppsFlyer provides you with multiple attribution methods giving you a complete range of attribution solutions. The ATT consent requirement impacts attribution in the context of paid app-to-app campaigns. As such, advertisers need to use a mix of attribution and reporting solutions. 

In the case of paid app-to-app campaigns, SKAN provides deterministic attribution results. Other campaign types like owned media, web-to-app and Apple Search Ads use AppsFlyer traditional attribution tools. The traditional tools provide long-term LTV measurement, whereas SKAN measures user performance during a short post-install post. 

In summary, to obtain a complete picture, use both SKAN and AppsFlyer traditional solutions because they complement one another.

This article provides advertisers with an introduction to SKAN and ATT. It is intended for advertisers familiar with the AppsFlyer platform.

SKAN Solution principles

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. 

SKAN limitations

  • Campaigns: Doesn't support, Apple Search Ads, cross-promotion campaigns, and mobile web-assisted installs. 
  • Measurement period: The effective measurement period is limited to a few days.

SKAN flow


  1. Advertiser sets SKAN measurement settings in the AppsFlyer Conversion Studio.
  2. The user opens the app for the first time. 
  3. During each window, AppsFlyer sets the CV based on user actions and the defined CV schema. 
  4. 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.
  5. 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.
  6. Ad network forwards enriched postback to AppsFlyer or SRN communicates postback data by API. 
  7. AppsFlyer validates and decodes the CV. Decoded data is recorded and attributed before being made available in AppsFlyer via dashboards, reports, and APIs.

ATT principles

The ATT prompt provides advertisers with a way to get explicit user consent allowing the advertisers to collect and share their data. Starting iOS 14.5 IDFA is available only if the user consent via the prompt.

Both publisher and advertiser apps display the prompt. If the user provides consent in both apps, it means that the user agrees to be tracked, and advertisers are permitted by Apple to track the user between apps owned by different companies. 

Setting ATT

ATT is set to one of the values listed in the table that follows. Initially, iOS sets ATT to not determined or restricted.

Consider that use of the consent prompt to convert a user from not determined to authorized is optional. But, if you don't display the prompt, you can't get authorization. 

ATT value Consent
(IDFA available) 
Restricted No
  • Determined by Apple based on user age and other criteria. Can't be changed by the device user. 
  • The prompt can't be displayed to these users.
Not determined (until iOS 14.4)  Yes

Default value

Not determined

(starting iOS 14.5)

No Default value 
Denied No

Occurs if any of the following are true:

  • Set after displaying the prompt
  • The user turned off Allow Apps to Request to Track (master switch at the device level)
  • Before installing iOS 14 on the device, LAT was on
Authorized Yes Set after displaying the prompt

ATT implications

Due to ATT, many users won't consent, IDFA won't be available, and tracking not permitted. As a result, advertisers who until iOS 14.5 relied on user-level attribution reports must shift some analysis to aggregated attribution methods and reporting. AppsFlyer attribution models

Attribution-related data for an app comes from a number of sources. The identifier available and used by each differ. Most data displays using the traditional attribution tools. However, for installs attributed using SKAN, reporting is via the SKAN dashboard.

Which dashboard has the install?

In iOS 14 an install can be attributed to both the traditional and SKAN dashboards. In addition, depending on the media source context it can be attributed as organic in one dashboard and as non-organic in the other.

iOS 14 important knowledge

iOS 14 and SKAN articles and links

Area Article Special interest: FAQ, discrepancies, comparisons 
SKAN SKAN raw data fields Additional raw data SKAN fields supporting did_win and SKAN 3.0
SKAN SKAN solution
SKAN SKAN partner interoperability (article section) SKAN integrated partners list

Meta ads and AppsFlyer SKAN integration 


SKAN Snapchat and AppsFlyer SKAN interoperation Discrepancies guide
Privacy Aggregated Advanced Privacy (AAP)
Privacy Restricted media sources Restricted raw data fields
iOS 14 Nutrition labels—prepare for the App Store review  
iOS 14 Configuring ATT in the app (SDK guidance developers)  
iOS 14 About self-reporting networks (SRNs) like Google, Meta ads, and so on Where are SRN installs reported?
Billing Billing for iOS apps  

iOS 14 impact on attribution and measurement 


Consider that due to ATT, metrics relating to ATT non-consenting users can be affected as follows:

Metrics Increase Decrease Remarks
Non-organic vs. organic Organic Non-organic  
Reinstalls vs. installs Installs Reinstalls  
Retargeting Organic installs and in-app events Re-engagements, Re-attributions  
Apple Search Ads -- -- Unchanged. Both consenting and non-consenting users are attributed correctly. 

Deep linking

Deferred deep linking using the legacy method of onConversionDataSuccess may not work for iOS 14.5+ since it requires attribution data that may not be available due to privacy protection.

We recommend using unified deep linking (UDL). UDL conforms to the iOS 14.5+ privacy standards and only returns parameters relevant to deep linking and deferred deep linking: deep_link_value and deep_link_sub1. Attribution parameters such as media_source, campaign, and af_sub1-5 return null and can’t be used for deep linking purposes. Learn more

FAQ—iOS 14+

What happens to an app using an SDK version before V6+?

For apps using an SDK version earlier than V6.0:

  • SKAdNetwork and Apple Search ads won't work.
  • If you submit the app to the App Store, expect it to be rejected. 

For apps using an SDK earlier than V6.10: SKAN 4 won't work.

Is it mandatory to display the ATT prompt?

No. You only need to ask for ATT consent if you want to track a user, collect IDFA, or both. 


How do I know when I’ll receive postbacks and if they’ll be SKAN 3 or SKAN 4?

The type of SKAN postback you receive is determined by a variety of factors, including what mode you use in Conversion Studio, what ad network you use, and what iOS version your users have.

These factors impact:

  • Postback version: Either SKAN 3 or SKAN 4. Learn more
  • Window 1 (AW): For SKAN 4, this is 48 hours. For SKAN 3, this is based on the activity window. Note: If Conversion Studio isn’t SKAN 4, but the ad network signature is, the window is either based on the activity window or 48 hours, whichever is lower.
  • Postback delay: Hours after install when the SKAN postback arrives. This is dependent on when the window closes. Learn more
  • Rolling timer: For SKAN 3, the activity window can be extended up to 63 days; the postback only arrives after the window closes.

The following flowchart explains this in further detail.


In SKAN, am I limited to a certain number of source identifiers/campaign IDs per ad network?

Yes. Previously the limit was 100 campaign IDs. However, from SKAN 4, campaign IDs are called hierarchical source identifiers, and the limit is 10,000. The source identifier is a 4-digit integer. 

Ad networks map the SKAN source identifier to their campaign ID.

What is the use case for SKAN raw data?

  • Use raw data to aggregate dimensions that aren't available via aggregated APIs.
  • Easily adjust existing raw data import processes to consume SKAN raw data.

Why don't the conversion values I receive match my configuration in AppsFlyer Conversion Studio?

Usually, this is because of another SDK in your app that has the ability to set conversion values, and that conflicts with your AppsFlyer SDK and the conversion values you have configured in AppsFlyer. Make sure you don't have another SDK that sets conversion values integrated into your app.

Why doesn’t the aggregate data in my SKAN dashboard match the raw data numbers in my SKAN Data Locker reports?

Often, this discrepancy is due to looking at Data Locker reports in the wrong place. Data from Google can take up to 13 days to be received. And in raw data reports, data is written on the day it’s received, not cumulatively. Therefore, to get correct metrics for installs relating to a specific date, you need to look at all reports 13 days after that date, as well.

Example: In the June 12 report, it displays 100 installs from Google that occurred on June 11. In the June 24 report, it says 100 MORE installs occurred on June 11. You’ll need to look at all reports for the past 13 days (from June 12-June 24) and aggregate based on the install time or ad network timestamp to get an accurate reading of the 200 total installs that occurred on June 11.