FAQ: Working with iOS 14, ATT, and SKAdNetwork

Update (April 26, 2021): Following the release of iOS 14.5, Singular strongly recommends implementing SKAdNetwork as soon as possible, as well as reviewing and implementing ATT if relevant for your app.

Since probabilistic attribution is now disabled by default, be sure to review attribution workflow controls to enable probabilistic attribution for use cases that comply with Apple's limitations.



What is new in iOS 14? What is App Tracking Transparency (ATT)?

Apple introduced several new privacy-centered features with iOS 14, including:

  • App Tracking Transparency (ATT): A new framework that prevents app developers from accessing the iOS advertising ID (IDFA) without an explicit opt-in. To be able to access the IDFA, the app has to ask for the end-user's consent.
  • SKAdNetwork v. 2: An updated version of SKAdNetwork, a privacy-safe mobile app attribution framework that app developers can use to measure app marketing efforts when they don't have access to the IDFA or to probabilistic attribution.

App Tracking Transparency is enforced starting with iOS 14.5, which was released on April 26, 2021. Advertisers also need to comply with the updated User Privacy and Data Use policies.

What should I consider before adding the App Tracking Transparency prompt to my apps?

Following the release of iOS 14.5, access to the IDFA is dependent on showing the App Tracking Transparency (ATT) prompt and receiving the end-user's consent.

While Singular cannot recommend an ATT strategy for your specific app, we can offer a few questions to help your teams to approach the decision:

App development team:

  • Is having the IDFA important for my app's business model?
  • Will asking for consent alienate my users?  Would it alienate different personas of my users? Is there a way I can mitigate alienating my users?
  • Does having the IDFA impact the app user experience I can deliver?  If so, is there another way I can persist or sustain that user experience without an IDFA?  

Marketing or growth team:

  • Who are the technology and marketing partners I depend on for growth?  Do they depend on the IDFA (don't forget your MMP)?
  • Can they support my marketing goals without an IDFA?  If not, what is the impact on my marketing goals?
  • Can they support SKAdNetwork as an alternative when IDFA is not available?

Data or BI team:

  • How heavily does my team depend on the IDFA?  Do my internal and external tools require the IDFA?
  • Can I retool my tools and processes to depend less on the IDFA?
How should I implement App Tracking Transparency?

If you have decided to ask your users for consent to share their data, you have to work with your team to implement the App Tracking Transparency consent dialog. To learn more, see Apple's documentation for the App Tracking Transparency framework.

Then, make sure your app communicates the result of the consent dialog to any SDK or technology that may be affected by it - including MMPs like Singular.

Singular supports your app whether or not you decide to implement the App Tracking Transparency prompt. However, if you do, be sure to update your Singular SDK and S2S integration accordingly, so Singular can take advantage of the IDFA if it is available.  

How do I update my Singular SDK/S2S integration to support App Tracking Transparency?

MMPs like Singular strongly benefit from having identifiers such as the IDFA to match devices and attribute installs to the correct advertising platform. Without the IDFA, Singular can sometimes use probabilistic attribution, but Apple has put strict limitations on this solution as well.

Therefore, we strongly recommend retrieving the IDFA whenever possible and having it ready for Singular before Singular starts the attribution process.

This means you need to display the ATT consent prompt, identify a positive answer from the user, and retrieve the IDFA before the Singular SDK (or your S2S integration) sends a user session to the Singular servers. A user session that's sent from a new device triggers Singular's install attribution process, which runs based only on the information available at that point in time.

To make sure the user session isn't sent before the IDFA is ready:

  • In the Singular iOS SDK: Initialize the Singular SDK with the waitForTrackingAuthorizationWithTimeoutInterval option, as in the example below. This delays the sending of a session for a specified number of seconds. Read more in our iOS SDK documentation.

    // Wait 5m for tracking authorization before sending any events
    config.waitForTrackingAuthorizationWithTimeoutInterval = 300
    // start
    [Singular start:config];
  • In the Singular S2S integration: We recommend adding a timeout or delay either in the client app or on the server-side to maximize the availability of the IDFA for install attributions. Make sure not to delay Singular tracking and attribution indefinitely!

    In addition, the AppTrackingTransparency authorization status value should be passed in the att_authorization_status= parameter on all sessions (/launch) and events (/evt) when available. You're required to pass the status with all events in case the consent status changes mid-session.

Can Singular measure app installs when the IDFA is not available?

When the IDFA is not available, Singular falls back to using the identifier for vendor (IDFV) to detect installs and measure app activity. IDFV-based measurement is reliable for measuring app activity but does not constitute deterministic attribution.

Therefore, when IDFA access is limited, Singular recommends using SKAdNetwork.

Is probabilistic matching going away? What attribution methods are supported in iOS 14?

Based on our conversations with Apple and reinforced by their latest updates on requirements, Apple has taken a stance prohibiting probabilistic attribution without consent.

The table below summarizes Singular's understanding of attribution methods that are compliant with Apple's privacy policies.


To protect advertisers and partners with the updated privacy policies, Singular has disabled probabilistic matching for iOS 14 and above. As a technology provider, Singular is committed to helping our advertisers and partners stay compliant with Apple policies.

However, there are still scenarios in which probabilistic attribution is allowed. Therefore Singular lets advertisers enable probabilistic attribution methods according to their interpretation of Apple's privacy policies.

Attribution Workflow Controls for Partner Sources

Apple's app tracking transparency and user privacy and data use guidelines are clear for app-to-app marketing and advertising. However, there are scenarios where probabilistic matching is still allowed by ATT and/or the only measurement option, for example, when SKAdNetwork is not available. Therefore, probabilistic attribution methods may still be used.    

To support these scenarios, we have implemented additional requirements to ensure probabilistic attribution is still supported in a privacy-safe manner to protect end-users, advertisers, and partners.  

Partners allow-listed for probabilistic attribution can utilize the source media type (_smtype) tracking link parameter.  This parameter allows Singular to identify whether this touchpoint is eligible for probabilistic attribution based on the media type. 

Partner Links - Source Media Type
_smtype=1 Indicates the partner link is attributing "paid, mobile web-to-app" media. This option allows probabilistic attribution for the partner link, but only if the installed user gave their consent at the ATT prompt.
_smtype=2 Indicates the partner link is attributing "paid, mobile app-to-app" media. Probabilistic attribution is never used for this source media type. This is the default if _smtype= is not present in the partner link.

Indicates the partner link is attributing "owned, mobile web-to-app" media. This option probabilistic attribution for the partner link regardless of the installed user's ATT consent.

Warning: Use this option only if you understand the implications and after working with your partner to make sure this scenario is compliant with Apple's ATT guidelines.

Indicates the partner link is attributing "owned, mobile app-to-app" media (cross-promotion). Probabilistic attribution is never used for this source media type.

If your marketing efforts include working with these partners, reach out to your partner account manager to confirm they can adhere to these requirements, or refer your partners to our partner-facing help center article on confirming support. 

Attribution Workflow Controls for Custom Sources

Under Apple's user privacy and data use guidelines, "owned" media is considered exempt from App Tracking Transparency, and as such, probabilistic attribution for this media can be supported in Singular. While custom source links are most commonly used to attribute "owned mobile web-to-app" media, they are oftentimes used in "paid mobile web-to-app" or "paid mobile app-to-app" scenarios such as social or influencer campaigns.  

By default, Singular assumes that custom source links may be used in "paid mobile app-to-app" media, where probabilistic attribution is not allowed without ATT consent. To enable probabilistic attribution custom source links for supported scenarios, a source media type (_smtype) parameter and value must be appended to these links to indicate the intended media the link is attributing.

Custom Source Links - Source Media Type
_smtype=1 Indicates the custom source link is attributing "paid, mobile web-to-app" media. This option allows probabilistic attribution for the partner link, but only if the installed user gave their consent at the ATT prompt.
_smtype=2 Indicates the partner link is attributing "paid, mobile app-to-app" media. Probabilistic attribution is never used for this source media type. This is the default if _smtype= is not present in the partner link.
_smtype=3 Indicates the partner link is attributing "owned, mobile web-to-app" media. This option probabilistic attribution for the partner link regardless of the installed user's ATT consent.
_smtype=4 Indicates the custom source link is attributing "owned, mobile app-to-app" media (cross-promotion).
What is Singular’s SKAdNetwork solution (SKAN)? How does it function as an alternative to IDFA-based attribution?

Singular's SKAN is a next-generation privacy-aware mobile install attribution solution built around Apple’s SKAdNetwork framework.

SKAdNetwork, which was introduced by Apple with iOS 11.3 but significantly updated for iOS 14, offers tools for tracking iOS app installs without compromising the end-user's privacy.

However, SKAdNetwork decentralizes key performance data between advertisers, publishers, ad networks, and mobile measurement providers, making it more difficult for advertisers to access the data they need to make marketing decisions.

Singular's solution gathers the data that advertisers need using an information exchange between the end-user's device, the ad network, and Singular (as the MMP).

  • The SKAdNetwork postback is sent from the device to the ad network and the MMP.
  • The conversion value and its meaning are sent from the MMP to the ad network.
  • The campaign ID and its meaning are sent from the ad network to the MMP.

By leveraging the Singular SDK, Singular’s expertise in data aggregation, and complex integration with top ad network partners, SKAN re-centralizes SKAdnetwork marketing performance data in the Singular platform, making it available to your business's critical BI and reporting systems.

Learn more in our Introduction to Singular's SKADNetwork Solution.

How do I enable SKAdNetwork with Singular?

To enable SKAdNetwork based on Singular's SKAN:

  1. Update your SDK/S2S integration to support managed SKAdnetwork mode. With managed mode, you don’t need to change how instrumented events are implemented. The only thing to ensure is that you’re using Singular’s latest SDK with iOS 14 support and setting config.skAdNetworkEnabled = YES before you initialize the Singular SDK:

    // instantiate SingularConfig
    SingularConfig* config = [[SingularConfig alloc] initWithApiKey:apiKey andSecret:secretKey]; // add the skAdNetworkEnabled option and set it to YES config.skAdNetworkEnabled = YES; // start [Singular start:config];

    If you're using Singular's S2S API to pass app events, you can enable SKAdNetwork tracking by following our guide here.

  2. Configure a conversion model for the app in your Singular dashboard by following our guide here.  
  3. Identify your ad network partners that support SKAdnetwork, and work with them to understand their requirements before launching SKAdnetwork campaigns. Singular is working with top partners, including all self-attributing partners who have confirmed support for SKAdNetwork.

    Note: SKAdnetwork is new and many partners are still working to implement it. If you’re not sure if your partner supports SKAdNetwork, we encourage you to check in with them and share Singular’s integration guide to expedite the process.
Which ad network partners support SKAdNetwork with Singular?

See Singular SKAdNetwork Integrated Partners.

Note: SKAdnetwork is still very new and partners are working to implement the technology. If you’re not sure if your partner is supporting SKAdNetwork, we encourage you to check with them (make sure they have Singular’s integration guide to expedite the process).

What is SKAdNetwork's "conversion value"? How do I configure conversion values for SKAdNetwork?

Apple's SKAdNetwork framework offers a single number, called a "conversion value," that an app can share with the advertising platform that is responsible for the app install.

There are various possible ways to encode multiple pieces of data that are relevant to performance measurement within this single value. The conversion value can be set when the app is first opened, and it can be updated later when certain events occur (e.g., to add information about user purchases), but there are limitations to how many times it can be updated.

When using Singular's "managed mode" for SKAdNetwork, Singular manages the conversion value updates automatically, based on two configuration options that you set up in Singular's dashboard:

  1. The conversion model: how many different pieces of information you want to include in the conversion value.
  2. The measurement period: how long you want your app to wait before it shares the conversion value (24 hours to 7 days). Choosing a longer measurement period gives you more options for conversion models but also means you will wait longer to receive any data about the app install at all.


How do I pick a conversion model and a measurement period for the SKAdNetwork conversion value?

Selecting the measurement period in SKAdNetwork is important because reported conversion values may be lost due to the randomness built into how often you can update conversion values passed into SKAdnetwork.

Singular reserves some of the bits in the conversion value as "keep-alives," used to update the conversion value just to reset the random timers that may end your measurement period earlier than expected. However, even with "keep-alives," measurement periods are not guaranteed, and their reliability depends on how active your users are in the days after they first open your app.

With Singular managing SKAdNetwork for you, the decision can be simplified as follows:

  1. First, think about the ideal (high-value) new users and what their first 7 days would look like. This should point you towards which conversion points are meaningful. Make sure these conversion points are reported as events in your Singular SDK implementation.
  2. Next, pick a conversion model that most closely represents this ideal user journey. You can start with revenue and retention models but experiment with other models by using simulated reports.
  3. Finally, think how quickly the user can complete this ideal journey. Select the shortest measurement period possible to maximize your ability to capture this activity.

After you make your selections, the Singular SDK takes care of the rest, automatically setting the appropriate conversion value when your users engage with your app.

How do I set up my campaign IDs for SKAdNetwork?

The Campaign ID is another dynamic value in SKAdnetwork that can encode additional information about your campaigns. However, unlike conversion values, campaign IDs are controlled by the entity that serves the ad (e.g., the ad network). The ad network may have a standard mapping of campaign ID to campaign name, or may explore other innovative ways to encapsulate more meaning into the ID. Reach out to your partners to understand the campaign ID mapping options for use in SKAdnetwork.

As part of Singular’s integration with partners, campaign IDs and their meanings are automatically pulled into Singular reporting for supported partners.

What has changed in my Singular reports after iOS 14?

There are no major changes in your regular reports, showing attribution stats based on identifiers or probabilistic matching. Singular has added two new reports for SKAdNetwork-based data. To learn about the new reports, see the SKAdNetwork Raw Data and Reports FAQ. The reports are also available through the new SKAdNetwork Reporting API.

Was this article helpful?