iOS 14 guidelines for advertisers

Apple’s iOS 14 release introduced key changes to the advertising ecosystem. This article details the responses Unity has implemented, along with the steps to ensure sustained campaign performance.

Integrate and test your app with SKAdNetwork

Apple’s StoreKit Ad Network, or SKAdNetwork, is a privacy API framework that helps ad networks and advertisers measure their ad activity on an aggregated level.

Unity recommends that all advertisers configure their apps for SKAdNetwork install attribution by calling one of the following methods:

  • registerAppForAdNetworkAttribution()
  • updateConversionValue(_:)

Note: For more information, refer to the section below on setting the SKAdNetwork conversion value.

Unity supports SKAdNetwork attribution install postbacks by receiving data from Apple and sharing it with participating mobile measurement partners (MMPs). For more information, refer to the documentation on SKAdNetwork postback integration.

Optimize performance with post-install event data

Implement the Unity SDK or a server-to-server integration to pass post-install event data to Unity and help User Acquisition continue to optimize your campaigns. If you use the Unity Ads SDK, enable the Acquire optimization setting in the Unity Ads Monetization dashboard so Unity can collect information for postbacks not attributed to the Unity network.

Cost Per Impression (CPM) billing

In many cases, the ATT framework removes non-aggregated postback data. This means that Unity may be unable to collect certain data that enables install-based billing.

To ensure a smooth transition for affected campaigns, Unity introduced cost per impression (CPM) billing for all iOS campaigns. This billing model charges advertisers based on the number of impressions their campaigns receive, meaning Unity only bills you for events that can be attributed.

Note: While CPM campaigns bill for impressions, they still optimize towards installs using target CPI bids. For more information, learn about the differences between CPI and tCPI bidding.

Set SKAdNetwork conversion values

Conversion value (CV) is the primary performance metric for campaigns using SKAdNetwork postbacks.

An SKAdNetwork conversion value is a 6-bit binary value, each representing a post-install event or action defined by the advertiser or publisher. It has 64 possible configurations, measured as an integer between 0 and 63. The 0 is reserved for the install itself.

When a user clicks on your ad and installs your app, they initiate a 24-hour postback timer. The install represents the first conversion value action. Each time the user completes an in-app action with a higher conversion value, the timer resets to 24 hours. When the timer expires, Apple sends a postback that contains the install and the user’s final conversion value to Unity’s ad network.

Most MMPs provide templates and tools for mapping in-game events or revenue to conversion values. Unity does not require you to adhere to a specific conversion model, and the best model may differ for each advertiser. However, Unity does recommend the following best practices.

Conversion values should be incremental

Assign events in ascending order of value according to some key metric. For example, if you’re tracking player value, then users that make an in-app purchase are usually associated with a higher average value than users who watch a rewarded ad.

Limit conversion value updates to the 48-hour period after install

While there’s no limit to how many times you can reset the conversion window, the measurement period should be fairly brief. The last update should occur within 48 hours of install. By this time, the typical retention curve is already flattening, and 50-70% of your paying users have made their first purchase. This should be enough time for you to rank ad network and campaign performance, and to identify the most valuable sources.

Simplify

More granular measurement is not necessarily better. The SKAdNetwork framework provides source app IDs and conversion values instead of identifying individuals, which makes it difficult to track events that your users are unlikely to perform unless you have very high install volume. Unity recommends mapping your conversion values to relatively common events that split your user base into approximate groupings of the top 10-20%, the next 20-40%, and so on.

Experiment

While the industry is still in a transition and learning phase, Unity believes that the best way forward is to start with something simple and follow an experimental, iterative approach along the following steps:

  1. Start using conversion values for reporting, alongside more traditional, granular metrics.
  2. Users who give their permission for tracking will provide a reliable benchmark for your conversion value-based reporting.
  3. Experiment to find the best way to set the conversion value to optimize your user acquisition budgets based on user value and return on investment.

Over time, ad networks will build on these initial learnings and start using conversion values to encode source app quality into their optimization algorithms.

Baseline recommendation

If you’re unsure about where to start with conversion values, Unity recommends the following baseline setup using the conversion value to track the number of sessions within the first 48 hours of install:

EventConversion valueSession numberShare of installs
Install0133%
Second Session1223%
Third Session1313%
Fourth and fifth session34 and 515%
Sixth-plus session4616%

Note: At Install, the app calls registerApforAdNetworkAttribution. For the second and additional sessions, the app calls updateConversionValue. Higher numbers of sessions in the first 48 hours correlate with higher retention and LTV, so this is a good starting point for you to track the quality of installs you're receiving. You can continue to experiment and build on this to find a conversion value setup that is optimal for you.

SKAdNetwork campaign limits

Due to the new limitations introduced by SKAdNetwork, Unity limits you to 50 or fewer iOS campaigns running simultaneously for any app. This will help you obtain more accurate SKAdNetwork reporting by supporting the correct association of installs to campaigns and creative packs.

If you run more than 50 combined iOS campaigns and creative packs live at any time:

  • The reporting based on SKAdNetwork postbacks becomes less accurate.
  • The predicted conversion rates for all campaigns in Unity’s network becomes less accurate.

It's recommended best practice that you also consolidate the Organizations that manage campaigns for a given app. Ideally, all campaigns for a given app should be in one Organization, so that you can apply the recommended limit of 50 campaigns per app and country.

If agencies or other third parties manage campaigns for your app using separate Organization accounts, make sure to inform them that there are only 50 total Campaign IDs available per app.

Reporting and Stats API

Unity’s Report Builder supports reporting data for SKAdNetwork postback information such as Installs, CPI, and CV coming from the SKAdNetwork.

If you use the Advertising Stats API, refer to the documentation to check which fields you might need to update to gather additional SKAdNetwork postback data.

Support for Appsflyer Aggregated Advanced Privacy

Aggregated Advanced Privacy (AAP) is Appsflyer’s solution to provide end-user privacy and to help advertisers comply with iOS 14 updated privacy controls. Enabling AAP in Appsflyer’s settings strips identifiers out of attribution data, and only provides postbacks at an aggregated level.

To support this feature, Unity is updating all Unity Ads campaigns (both iOS and Android) that use Appsflyer as an attribution provider to append the following new mandatory parameters to attribution tracking URLs:

Parameter nameMacro requiredDescription
af_siteid{source_app_id}The source app or game identifier.
af_ad_id{creative_pack_id}The Unity User Acquisition creative pack identifier.
af_ad_orientation{video_orientation}The orientation of the creative ("landscape" or "portrait").
af_channel{exchange}The ad exchange ("unity" or "others").

All campaigns will continue to run, uninterrupted, and automatically support AAP if you choose to enable it. All Appsflyer attribution URLs will be updated, whether AAP is currently enabled or not.

Learn more about Apple privacy initiatives