SKAN Install Analysis
Overview
The release of SKAdNetwork in 2020 brought chaos in the way iOS installs are measured and attributed. And we’re not even talking about conversion values here yet.
Tracked vs Reported vs SKAN installs
In order to understand your ROI correctly, you will first need to understand the differences between all the ways your installs are reported for your paid campaigns.
-
tracked_installs are tracked by your MMP (e.g. Tenjin) through its SDK.
-
reported_installs are installs reported by ad networks through their APIs.
-
sk_installs_ad_network are SKAN installs reported by the Ad Network
-
sk_installs_apple are SKAN installs reported by Apple (only for iOS 15+ devices)
Here is a summary of what you need to know about all of these ways to track iOS installs:
Metric |
Tracking |
Reporting |
Over / Under Reporting |
Delay |
Notes |
---|---|---|---|---|---|
tracked_installs |
Tracked by Tenjin’s SDK in a deterministic way. Can involve probabilistic modelling from Tenjin. |
By Tenjin |
Given SKAN constraints, this metric is often underestimated by Tenjin, but probabilistic modelling is here to close the gap. |
These installs are tracked as soon as they happen. Probabilistic modelling can attribute installs later depending on the model used. |
If the ad network does not let Tenjin track its ads, then Tenjin can’t attribute tracked_installs to this ad network. |
reported_installs |
Differs depending on the ad network. e.g. Meta can use SKAN as a basis for their reported_installs, and add installs they modelled as attributed to them, while another SDK network can use Tenjin’s SDK as a basis for their reported_installs. Other combinations are possible and you need to understand what each network relies on to count the installs they bill you for. |
Through the ad network’s API |
Depends on what method the ad network uses to track these installs |
Depends on what the ad network uses to track these installs |
|
sk_installs_ad_network |
Apple’s SKAdNetwork |
Apple sends this data to Ad Networks, and Ad Networks then report it through their API |
Supposed to be equal to what Apple tracked with SKAN |
Depends on whether the network decides to report with a 24h delay or not. This delay can be corrected. |
Not reported per country. Only campaign / network / source app. |
sk_installs_apple |
Apple’s SKAdNetwork (given users have updated their device to iOS 15 or higher) |
Apple sends this data to Tenjin or any other MMP |
Supposed to be equal to what Apple tracked with SKAN, but given that not 100% of installs happen on iOS 15+ devices at the time of writing this article, it is currently under reporting |
24 hour delay. This delay can be corrected. |
Not reported per country. Only campaign / network / source app. |
You also need to understand that each network has its own specificities. It is important to understand how each ad network’s reported installs are calculated, as they act as a basis to compute CPI on the network side.
Here is a summary for the top Ad Networks:
For this example we consider the date when ‘tracked installs’ happened to be Day 0.
Here is a summary for the top Ad Networks:
For this example we consider the date when ‘tracked installs’ happened to be d0.
Ad Network | tracked_installs | reported_installs | sk_installs_ad_network | sk_installs_apple | how does the network calculate the cpi related to d0 tracked_installs | comment |
---|---|---|---|---|---|---|
Applovin | 100, reported at d0 | 125, reported at d1 | 120, reported at d1 | 70, reported at d1 | spend d1 / reported_installs_d1 | Applovin’s reported_installs aligns with sk_installs_ad_network |
Mintegral | 100, reported at d0 | 100, reported at d0 | 95, reported at d1 | 70, reported at d1 | spend d0 / reported_installs_d0 | Mintegral’s reported_installs aligns with tracked_installs |
Unity Ads | 100, reported at d0 | 100, reported at d0 | 120, reported at d1 | 70, reported at d1 | spend d0 / reported_installs_d0 | Unity’s reported_installs aligns with tracked_installs |
ironSource | 100, reported at d0 | 100, reported at d0 | 120, reported at d1 | 70, reported at d1 | spend d0 / reported_installs_d0 | ironSource’s reported_installs aligns with tracked_installs |
Google Ads | 100, reported at d0 | 150, reported at d0 | 120, reported at d1 | 70, reported at d1 | spend d0 / reported_installs_d0 | Google’s reported_installs is not aligned with other metrics |
TikTok Ads | 100, reported at d0 | 150, reported at d0 | 150, reported at d1 | 150, reported at d1 | spend d0 / reported_installs_d0 | TikTok’s reported_installs is aligned with sk_installs_ad_network |
Facebook Ads | 0 (can’t be tracked) | 100 | seems like Facebook does not report it | 75 | N/A | Facebook’s reported_installs is supposed to be aligned with sk_installs_ad_network, but we only have access to sk_installs_apple |
Snap Ads | 100, reported at d0 | 150, reported at d0 | 125, reported at d1 | 115, reported at d1 | spend d0 / reported_installs_d0 | Snap’s reported_installs is not aligned with other metrics – its closest metric is sk_installs_ad_network but it is always higher |
Apple Search Ads | 100, reported at d0 | 70, reported at d0 | N/A | N/A | spend d0 / reported_installs_d0 | Apple Search Ad’s reported_installs is lower than |
How Growth FullStack can help
Growth FullStack can help you centralize this data and visualize it easily, thanks to a ready-to-use view built on top of the Data Warehouse of your choice.
Build a dashboard and visualise your own data in no time
Here is an example dashboard built using this table, which we used to draw the above conclusions.