In the dynamic landscape of digital marketing and advertising, accurately measuring the impact of campaigns and attributing conversions to the right sources is paramount for businesses seeking to optimize their marketing strategies.
As the industry moves towards a more privacy-centric approach, the introduction of Apple's App Tracking Transparency (ATT) framework has brought about significant changes in the way advertisers collect and use user data on iOS devices. This shift has spurred the development of new attribution methodologies, and one of the prominent solutions to emerge is SKAN (SKAdNetwork
) attribution.
SKAN is Apple's proprietary attribution framework that aims to balance user privacy with marketers' need for performance insights. By anonymizing user-level data and restricting advertisers' access to sensitive information, SKAN provides a privacy-safe way to attribute app installations and conversions without compromising user trust.
Testing SKAN attribution can be an ordeal since there isn’t a one stop tutorial or guide. This article can prove useful in such a scenario. Testing SKAN attribution includes:
The ad network API helps advertisers measure the success of ad campaigns while maintaining user privacy. The API involves three participants:
Ad networks: That sign ads and receive install-validation post backs after ads result in conversions.
Source apps: Apps that display ads from the ad networks.
Advertised apps: Apps that get downloaded as a result of the ad interaction, update conversion values as the users engage with the app.
Ad networks register with Apple to get an ad network ID and to use the API. The developers configure their apps to accept attributable ads from ad networks.
The following diagram shows the path of an ad impression that wins ad attribution. The ad network serves an ad that an app display. The user taps the ad and downloads the advertised app.
Apple determines a post back data tier for the app download, and the device uses the tier later to determine the level of detail the post back can contain to ensure crowd anonymity.
If the user launches the app within an attribution time-window, the ad impression is eligible for install-attribution post backs. As the user engages with the app, the app updates the conversion value. Starting in iOS 16.1, apps can update conversion values during three conversion windows, which results in up to three post backs for an ad signed using version 4. The system sends the post backs to the ad network.
Devices send install-validation post backs to multiple ad networks that sign their ads using version 3 or later.
One ad network receives a post back with a did-win
parameter value of true
for the ad impression that wins the ad attribution.
Up to five other ad networks receive a post back with a did-win
parameter value of false
if their ad impressions qualify for the attribution, but don’t win.
The following diagram shows the path of ad impressions that qualify for, but don’t win, the ad attribution. Up to five ad networks receive a single nonwinning post back.
Test the basic flows that enable Skan attribution. These include:
Testing SKStore flow: Whether SKStore is being presented on click / tap of an Ad with the appropriate content.
Testing the SKOverlay flow: Whether SKOverlay is show properly with the appropriate content.
Testing the SKImpression flow: Whether impression is starting and ending properly.
Once these are covered, we can move to the SKAN attribution flow testing. The theoretical concepts can be found here (Recommended to go through the doc if not familiar). Only the technical aspect will be covered in this article.
SKAN related data is needed in order for SKAN to work. This data contains some critical elements including the App Store Item Id, fidelities, source app etc. Example of the SKAN data coming from the ad response:
{
"version": "4.0",
"network": "wzmmz9fp6w.skadnetwork",
"itunesitem": "989540920",
"sourceapp": "0",
"fidelities": [{
"fidelity": 0,
"signature": "MDUCGGjG8a8CU/EIxz3zgI6w+7mJB7sCd/zSPQIZAKR8mbZownhQtT+ZZIbxslpAQZz+i0G1Tw==",
"nonce": "a246cabe-66a0-4b03-a3bb-ccc541dd5166",
"timestamp": "1688715711243"
}],
"campaign": null,
"sourceidentifier": "2699"
}
The above response is for SKAN 4.0. For earlier SKAN versions response might be a bit different.
Focusing only on the ones needed to understand the attribution flow and testing.
Fidelities: A list or array that contains:
Fidelity type: 0 or 1, representing CTA or VTA
Signature: SKAdNetwork
signature as specified by Apple.
Nonce: An id unique to each ad response.
Timestamp: Unix time in millis
string used at the time of signature
NOTE: The value for the above-mentioned parameters is meant to be used only once and should be different for each ad response to ensure successful attribution.
Source app is the app identifier from which the ad was shown. For test app, source app should be 0.
NOTE: If the App is live on App Store hence has a valid source app id, it should match with the bundle id otherwise attribution won’t work.
We need to understand the two SKAN attribution flows:
The ad network presents an ad in any format and reports the ad impression using the SKAdNetwork
API. In this case, user views an ad, then goes to App Store within a certain time interval and downloads and opens the App. VTA is considered by Apple and a post back is sent by Apple to the URL specified by the Network in Apple portal. For VTA, only fidelity type 0 should be present in the SKAN data along with the other data. Usually, the post back call takes around 24 hours. It can be minimized for testing using SKAdNetwork
profile.
StoreKit-rendered ads, where StoreKit displays an App Store product page as the ad impression. In this case, user views and ad, clicks on the Ad and SKStore is presented containing the details of the app. If the user downloads the app from the SKStore popup and opens the app, CTA is considered by apple and a post back is sent. For CTA, fidelity type 1 should be present in the SKAN data.
For CTA, fidelity = 1 in the post back along with the other data and for VTA it’s 0.
Always test on real device and not on the simulator.
Download and install the SKAdNetwork profile to minimize the post back call duration to around 10 minutes. SKAdNetwork profile will only be visible on the developer account with active membership.
Charles proxy or similar should be installed and configured.
HTTP proxy should be configured on the device to monitor the traffic using Charles or similar.
Use console to monitor device logs. You can use SKAdNetwork
filter to focus on the revenant logs.
Load and show the ad.
Ensure SKAN data is present in the ad response.
If fidelity type 0 is present in the SKAN data, something similar should be visible in the console logs:
Wait for 5 to 10 seconds, and then close the ad. Now console should look something like this:
Go to App Store and download and open the same app as shown in the ad. (The App shouldn’t be already installed on the phone. Uninstall if the app is already present.)
Once the app is opened, the console should show the following:
After 10 - 15 minutes, the post back should be fired. The same can be verified in Charles or something similar.
Load and show the ad.
Ensure SKAN data is present in the ad response.
Wait for few seconds and click on the ad.
Once the SKStore is presented, wait for a few seconds and then click the download button to download the app. The console will look something like this:
Once the app is downloaded, close the ad and open the just downloaded app.
Once the app is opened, wait for a few seconds and then check the console for something similar to this:
Delving into the intricate realm of SKAN attribution testing not only opens doors to unparalleled insights but also empowers marketers to steer their strategies with precision. As the digital landscape continues to evolve, embracing the technical artistry of SKAN attribution testing equips us with the tools needed to navigate the dynamic currents of data and make informed decisions.
So, embark on this journey of discovery, armed with the knowledge shared here, and watch as your marketing endeavors flourish in the ever-changing tides of the modern business world.
Sign up with your email address to receive news and updates from InMobi Technology