- 28 Nov 2022
- 13 Minutes to read
- Updated on 28 Nov 2022
- 13 Minutes to read
SKAdnetwork is the new way of attribution introduced by Apple for iOS 14. This is the official documentation provided by Apple.
When using SKAdnetwork, a signature is attached to each ad click. When the user opens your app for the first time, Apple will be able to verify if they are coming from a specific ad with this signature. Then, a postback is sent back to the ad network to attribute a new install.
updatePostbackConversionValue(_:): This method should be called every time you want to update the conversion value attached to this specific user. You can call this method as many times as you want, but the conversion value will only be updated if it is higher than the previous one.
Please check with your ad-networks if they are ready to run SKAdnetwork campaigns.
We've also created a short video to help you familiarize yourself with SKAdNetwork Reporting in Tenjin. In the video we cover what SKAdNetwork is and how Tenjin is thinking about it, what SKAdNetwork metrics you can access through Tenjin and where you can see them, and what networks or channels Tenjin supports for SKAdNetwork.
Watch the full video:
Conversion value is a numeric value between 0 and 63 which you can assign to a specific install. It's a "signal" that will help you understand how valuable a specific user is without giving you a way to identify them. Ad networks can use this information to understand how valuable each install is for your business. This signal can help ad networks identify better audiences to serve your ads and improve your campaign performances.
Below are some important characteristics you need to remember for conversion values:
- You can only update the conversion value with a value higher than your previous call (1-> 2 but not 3->2).
- A limited value between 0-63.
- You can measure conversion values for any time frame within the user's life time, but the longer you wait, the later the ad-networks will get the postback from Apple. In Tenjin, we recommend using 24 hours time window for this reason.
- The conversion value only appears if there are enough installs from the publisher according to Apple’s privacy thresholds.
In Tenjin, we give developers full flexibility to choose whatever conversion values you want to map to a specific user event. Tenjin's Customer Success team is happy to work with you to figure out the best implementation for your app. Please contact email@example.com. Below are a couple of basic recommendations for apps that are mainly monetized through in-app ads.
1. Map ad revenue to conversion values
Figure out the conversion value buckets for each accumulated ad revenue calculated on the device for 24 hours since the install using historical data.
Implement the conversion value buckets in the SDK: map accumulated ad revenue to conversion values.
Send the corresponding conversion value to Tenjin (and Apple) using
updatePostbackConversionValue(_:)method in the Tenjin SDK when the ad impression happens every time until 24 hours of install.
Note: The mapping of ad revenue to conversion values may change over time and require an updates in the app. You also need to integrate Impression Level Revenue Data(ILRD) in the mediation SDK.
2. Map ad impressions to conversion values
Figure out the conversion value buckets for each accumulated ad impressions calculated on the device for 24 hours since the install using historical data.
Implement the conversion value buckets in the SDK: map accumulated ad impressions to conversion values.
Send the conversion value (impression counts) to Tenjin (and Apple) using
updatePostbackConversionValue(_:)method in the Tenjin SDK every time the impression happens until the first 24 hours of install.
Note: The mapping of ad impressions to conversion values may change over time and require updates in the app.
- Count the sessions as they are accumulated over a 24 hour period since the install.
- Send the CV (accumulated session count) to Tenjin (and Apple) using
updatePostbackConversionValue(_:)method in Tenjin SDK every time the session occurs until the first 24 hours of install.
Here are some examples of conversion value implementation shared by other customers:
In the postback sent from Apple to ad-network, there are two different types of timers:
- 24 hours timer: can be reset multiple times and has a defined duration of 24 hours
- Random timer: once it starts, it can't reset. The duration is random, between 0-24hours
When you fire
updatePostbackConversionValue(), the 24 hours timer starts. If you decide to fire
updatePostbackConversionValue(_:) again, the 24 hours timer is reset to zero and starts again. Every time you fire
updatePostbackConversionValue(_:), the 24 hours timer will reset.
Suppose you don't fire
updatePostbackConversionValue(_:) before the 24 hours timer expires, a random timer will start. Once the random timer starts, you can't update the conversion value anymore. At the end of the random timer, the postback is sent to the ad network. This postback may or may not include a conversion value (it will be the latest value you set for this specific user)
Feel free to email to firstname.lastname@example.org if you have any questions.
Here is the current list of the networks that support SKAdnetwork.
|Network||Status||Postback or reporting API*||Definition of
|Supported||Reporting API||SKAdnetwork installs|
|Google Ads||Supported||Reporting API||** (see below)|
|Snap||Supported||Postback||*** (see below)|
|Unity Ads||Supported||Postback||MMP installs|
*: Does the network pass us SKAdnetwork conversions via postback or reporting API?
**: Conversions from dual opt-in users and Google's modeling conversions (https://support.google.com/google-ads/answer/10081327)
***: Conversions from dual opt-in users and Snap's proprietary attribution method, Advanced Conversions
We created a short video to help you familiarize yourself with the SKAdNetwork Report in Tenjin. In the video, we cover what SKAdNetwork is, and how Tenjin is thinking about it, what SKAdNetwork metrics you can access through Tenjin and where you can see them, and what Networks Tenjin supports for SKAdNetwork.
Watch the full video here. https://www.youtube.com/watch?v=k4mMY2WK_RE&t=1s
I was told by Attribution partner A that they are a certified SKAdNetwork. Are you a certified SKAdNetwork?
- There is no such thing as certification by SKAdNetwork. In Apple's documentation, attribution partners are not mentioned as part of SKAdNetwork.
What do I, as an app developer, need to do to run iOS 14 compatible campaigns?
- First, you need to release an update of your iOS app compatible with iOS 14 using the latest Tenjin SDK, and make sure you are sending us your conversion value. App developers have the flexibility to decide the Conversion Values. If you need ideas on what to map to conversion value, Tenjin can provide you with trainings.
- Next, you need to make sure your apps are linked to the SK Apps in order for us to correctly process and assign their SK Ad Network data. To do this, on your Tenjin dashboard go to Configure -> Apps -> Your app, and click on "Verify Ownership" under SK Ad Network Status (screenshot below). You will get a confirmation from Tenjin once the request is reviewed.
Will I still be able to see all my metrics on app + country level on the Tenjin dashboard?
- Yes, app + country data will still be available during the phases of our Attribution Modeling solution.
With iOS 14, as you are not FB MMP, will it become completely impossible for you to attribute FB installs?
- It's the opposite; under iOS 14 there is no exclusivity of data access for FB MMPs. The Facebook API with SKAN is open to everyone. The only benefit for a FB MMP is to sync the conversion value mapping between FB and MMP dashboard. However, you can do this manually and Tenjin can provide you with specific documentation. Please contact email@example.com for these instructions.
Can the ATT consent popup be preceded by the custom popup by the app developer (to encourage the user to accept the consent)?
- Yes, you can decide on the timing to show the popup, but in the context of attribution we will collect the IDFA at the first app open so the popup should be at that moment to increase the rate of attribution based on IDFA.
Do I need to do anything on the monetization side for SkAdnetwork to work?
- Yes, if you monetize via ads, your app will be a "source-app" as per Apple language, and you need to add to the list file the SKADnetwork ID of each monetization channel you are working with. See this page for further details.
Why are there some SKAdnetwork postbacks with conversion value NULL?
registerAppForAdNetworkAttribution(): (This method is already deprecated, so it only applies if you use the old version of SDKs). This method should be called at first launch and register the user for attribution. If the user is from a signed ad, a postback will be fired in the following hours notifying the ad network of this app install.
(2) "meets Apple’s privacy threshold" - Irrespective of what happens in condition (1) above, Apple can decide to set CV=NULL in the postback. Initially, a single campaign for an app will have ALL postbacks with CV=null. After about 50-100 postbacks for that app+campaign, the CV can be non-NULL. At this point the privacy threshold is met, and condition (1) is the only reason future CVs for this campaign may remain NULL.
How does the count of conversion value that I see in Tenjin SK Ad Network tab(Data Exporter) relate to reported and/or tracked installs from Tenjin User Acquisition tab? Which data should I use for my daily operations?
The count of conversion value from the SK Ad Network tab in Data Exporter will reflect the number of installs attributed by SK Adnetwork. This number of SKAd installs is not directly comparable to tracked or reported installs because:
- Not all network are using SKAd attribution in parallel with traditional attribution.
- SKAd installs are reported with a delay due to Apple timer, so the date in Tenjin SK Ad Network tab(data exporter) is the date when the SK postback from Apple was received, not the date of the install. In Tenjin User Acquisition tab, the date is the date of install.
The only comparison you can conduct would be by ad network, for a network that you know is running both SKAd and URL attribution in parallel and measure the discrepancy of installs. Some level of discrepancy would be normal:
- If you are running UA on 10 different channels but only 3 of them run SKAd campaigns, SKAd installs tends to attribute more installs to the 3 channels due to less competition.
- Aligning the date of SK postback receipt with the install date will always be approximative.
So what are the common causes of discrepancy between tracked_installs and SKAd installs?
Tenjin's tracked_installs and SKAd installs are not based on the same attribution methodology, so those two numbers won't be always aligned. In our experience, SKAd installs is usually higher than tracked_installs by 20-30%. Here are the common causes:
- SKAdnetwork counts re-installs(Users install the app, deletes it and re-install later) as well. For iOS, we use
developer_device_idas an unique device identifier, so unless
developer_device_idis reset, we don't count re-installs as new installs.
developer_device_idis reset only when ALL apps developed by the same vendor are deleted from the phone. You can see the breakdown of first installs and re-installs in SKAdNetwork dashboard as below. If you see a large percentage of installs coming from re-installs, it is likely the cause of the discrepancy.
- SKAdnetwork counts re-installs(Users install the app, deletes it and re-install later) as well. For iOS, we use
Networks not adapting SKAd Network:
- Not all networks adapts SKAd Network. If you run campaigns with two ad-networks at the same time for the same app, and one network doesn't adapt SKAd Network, you will see more SKAd installs attributed to another network since there is less competition.
Can I show the ATT Popup at a later time in the App?
Tenjin will receive IDFA only if the user opts-in after the ATT popup. So if the ATT popup is not shown right after the app install, Tenjin will not be able to attribute the install and it will register as an organic install. In the event the ATT popup is shown at a later stage, even if the user opts in, the install would already have been attributed to organic and that won’t change.
For tracking, tenjin connect() can be called at the app install, which would allow Tenjin to track the app events. However, the events will be tracked without an IDFA.
In either case, we will register a user using IDFV. So if a user opts in at a later point and now we are receiving the IDFA as well, the user will not be registered as a new user as we have seen the IDFV before.
What are the different attribution systems that Tenjin uses after iOS 14.5?
Deterministic Attribution is the best case scenario in which ATT popup is shown right after the install and user opts in. We know the IDFA immediately. We can attribute the user right away to an Ad Network.
If not, we will default to the SKADNetwork Attribution. As long as the Ad Networks have SKADNetwork integrated on their side, we will receive the Attribution data through the SKADNetwork postbacks (SKPB) from the Ad Network. This data will be available in the Tenjin Dashboard. In all cases where the user opts out or the ATT popup is shown at any time other than right after the App Install, SKADNetwork Attribution will take effect. So even if the IDFA is known at a later point, the user is already attributed as organic using the IDFV. We will get the SKPB even if the user opts in, meaning that both the Deterministic Attribution and SKADNetwork Attribution are happening in parallel, provided we have enough data to make a deterministic attribution, i.e. user opts in right after the the install. It is important here to understand that the data received from SKPB is aggregate data and does not have user-level granularity. Therefore, all the user level cohort metric are also unavailable in case of the SKADNetwork Attribution. You can see a list of metrics available on the SKAd Network dashboard here.
What are Apple SKAN metrics?
Apple SKAN metrics are winning install postbacks that a developer can receive directly from Apple for iOS 15 users which Tenjin ingests and reports on the SKAdnetwork report on the behalf of the Advertiser. For you to see Apple SKAN metrics on the dashboard, make sure your app has been claimed. With this new feature launch, you can now see various Apple SKAN metrics on the dashboard such as installs, redownloads, and total conversions to name a few. You can compare SKAN metrics reported by Ad Network vs SKAN metrics reported by Apple. With this launch, you own your data and get more information to make informed advertising decisions.
Why should Advertisers use Apple SKAN metrics?
- Validate Ad Network SKAN metrics using Apple SKAN metrics
- Identify fraud if discrepancies exist
- Apple always sends source app ids. So if ad network postbacks don't contain the source app id, you can always rely on the Apple SKAN postbacks.
SKAdnetwork data is available in Data Exporter tab. Go to ANALYZE -> Data Exporter on the dashboard, and select "SK Ad Network" as RERORT TYPE. You can apply app and channel filters for your data.
You can choose multiple group-by options from this list:
- Required dimensions
- Tenjin dimensions
- SK Adnetwork dimensions
- Conversion Value
- Fidelity Type
- SK Channel
- SK Campaign
- SK Source app
You can also select multiple metrics from this list:
- Conversion Value Count (Default)
- Conversion Value Average (Default)
- Conversion Value Total
- First Download Count
- First Download Conversion Value Average
- First Download Conversion Value Total
- Redownload Count
- Redownload Conversion Value Average
- Redownload Conversion Value Total
- Redownload Assists
- First Download Assists
You can see the definition of those metrics here.