What’s new in Apphud: SplitMetrics Acquire Integration, Experiments Improvements, SDK UpdatesLet’s see
Why Apphud?PricingContact
March 05, 2021
7 min read

How Did iOS 14.5 Change Attribution?

iOS 14.5 is in public beta. Since this update, access to IDFA will require user consent. In other words, method "advertisingIdentifier" of "ASIdentifierManager" returns zeroes to developers unless the user consented.

How Did iOS 14.5 Change Attribution?

App tracking attribution is of great help to advertisers who want to know where their customers came from before signing up, making a purchase, or installing an app. iOS 14.5 is currently in public beta. After this update, access to IDFA will require user consent. In other words, it will negatively affect app attribution tracking, as the method advertisingIdentifier of ASIdentifierManager will return zeroes to developers unless the user has explicitly consented. Some estimates show that only about 20% of all users will consent to provide in-app attribution data. What will happen to major SAN publishers, like Facebook or Snapchat, and how can you properly analyze data?

User Consent alertUser Consent alert

The future is on predictive models

The greatest difficulties will fall on mobile measurement partners (MMPs), like Adjust, AppsFlyer, Branch. All of them are preparing own solutions that will use both SKAdNetwork data and usual tracking data.

Predictive models are based on consensual user data, which is around 10-20%. For example, after iOS 14 was released, IDFA attribution practically ceased to work.  It’s a real challenge to rely only on this data, so it is critically important to gain users’ tracking approval. The more users who give consent, the more accurate predictive modeling will be. The server API won’t be shut down, and they will all accept IDFV and internal IDs as a fallback identifier.


In the absence of IDFA tracking, Apple introduced its own app install attribution system without access to user-level data. Apple will send postbacks to relevant ad networks randomly withing 24-48 hours after app install.

Apple's own app install attribution systemApple's own app install attribution system

Here is an example of attribution JSON that Apple will post-back to ad networks:

  "version" : "2.2",  
  "ad-network-id" : "com.example",  
  "campaign-id" : 42,  
  "transaction-id" : "6aafb7a5-0170-41b5-bbe4-fe71dedf1e28",  
  "app-id" : 525463029,  
  "attribution-signature" : "MEYCIQDTuQ1...5J5iKiTuAoquHXJffcV9/sY",  
  "redownload": true,  
  "source-app-id": 1234567891,  
  "fidelity-type": 1,  
  "conversion-value": 20  

As you can see in the example, attribution postback doesn't contain installation date, country or ad group id. The most important parameter here is the conversion value. It's an integer number between 0 and 63. Apple added them to identify in-app events triggered by users, such as starting a subscription. Using SKAdNetwork for conversion value tracking is essential. Maximizing SKAdNetwork and the conversion model, which is a way to encode as much data as possible about the user and their post-install activity into the limited space, is the key to your success.

Currently, a conversion value must be updated from the device within 24 hours after app install. To do this, just call updateConversionValue(_:) method of SKAdNetwork framework.

After calling updateConversionValue(_:) method, the timer resets for 24 hours until being saved by Apple. When timer ends, the latest value will be post-backed to a relevant ad network. However, if a user triggers another event and calls the update conversion value method again with a greater number, the timer will reset for another 24 hours. In a theory, a device can reset the timer as many times as needed. So it's possible to trigger a 3 days trial conversion event if a timer was reset three times in a row – once per 24 hours. However, it's almost unachievable since the app must be opened every day to reset a timer.

Unfortunately, SKAdNetwork doesn't support sending additional conversion values, so subscription renewals can not be attributed. We don't know whether Apple will add support for reporting conversion values from the server or not.

Since conversion value is limited to 64, you have to map revenue to conversion value. Here is an example of the mapping conversion value to purchase revenue in Facebook Ads Manager.

Example of the mapping conversion value Example of the mapping conversion value 

SKAdNetwork Pros

  • Data is anonymized. Saves user privacy.
  • 100% of installs are attributed.

SKAdNetwork Cons

  • Impossible to track campaign effectiveness within the first 72 hours. You will just have no data in your Ad Network Dashboard.
  • Limitations in conversion value reporting. Revenue mapping is just estimated.
  • Impossible to track events that occurred after 24 hours after app install.
  • You will be able to analyze ad campaigns in a very limited way. It's impossible to properly analyze ROI or LTV.

How you can deal with SKAdNetwork?

  • Try not to use too many creatives in one campaign. Rely on CTR and CPM to measure creatives efficiency.
  • Since campaign data is delayed for 72 hours, it will be almost impossible to properly analyze newly created campaigns. So concentrate on common data. In Apphud you can use revenue and ARPU charts across different countries and analyze conversion charts. Treat organic proceeds as non-organic.
  • Rely on multiple sources – Apphud charts as well as data from your MMPs.
  • Apphud team keeps improving charts and dashboard for better revenue analysis in real-time. You can read more about our charts here.

How to avoid SKAdNetwork?

You can use Apple Search Ads with their real-time attribution for iOS 14.3+ devices.

Or if you want to advertise in Facebook or TikTok, you could try to advertise through a webpage redirect, oe in other words, a Web2App advertising campaign.

What you should do now?

  • Update Apphud SDK to the latest version. This is always a good idea 😊
  • Add NSUserTrackingUsageDescription to your app's Info.plist
  •  The more users will consent to IDFA tracking, the more accurate data will be in your MMP dashboards. Use the following code to request IDFA consent within your app:
#if canImport(AppTrackingTransparency)  
    import AppTrackingTransparency  
func requestIDFA() {  
    guard #available(iOS 14.5, \*) else {  
        // do nothing, Apphud will fetch IDFA automatically on lower iOS versions  
    ATTrackingManager.requestTrackingAuthorization { status in  
        guard status == .authorized else {return}  
        let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString  

Usually, it's a great idea to ask for consent at onboarding. Adjust has recently published a great article describing the best practices and ideas how to ask users for tracking.

  • Regularly update analytics SDKs: Facebook, AppsFlyer, etc.
  • Set up conversion value mapping in one place. Do not allow conflicts! Conversion value should be reported only once by one of your SDKs.
  • Keep in touch and read our articles! Keep safe and have a great day!

To get more insights regarding subscription app revenue growth read the Apphud Blog.

Co-founder at Apphud
Ex iOS app and game developer. 11 years in the industry since iOS 3. More than 50 apps are in the background with 4 exits. Entrepreneur and traveler.

Related Posts