But Apple did unveil — albeit cryptically, in the Platform State of the Union presentation that followed the WWDC keynote — new functional additions its SKAdNetwork measurement framework that will be introduced in the next major point release, which is SKAdNetwork 4.0. Apple is hosting a dedicated What’s New in SKAdNetwork? developer session on June 8th, the day this post is going live. But yesterday, June 7th, Apple updated its SKAdNetwork documentation to include detail on the new features being rolled out in SKAdNetwork 4.0.
The timing of this article is somewhat awkward, as I’m writing it ahead of the developer event and thus without the benefit of the additional context it will surely provide. But with only the guidance of the updated SKAdNetwork documentation, the changes being introduced seem substantial and important. They include four major new pieces of functionality. Edit: the developer session video is now live, but nothing meaningfully new was revealed in the presentation that wasn’t included in the documentation. A few minor edits have been made below.
Hierarchical source identifiers
This will expand the campaign ID field in the SKAdNetwork postback to potentially allow for a second, two-digit (eg. 100 possible values) parameter to be transmitted that can include free-form attribution context such as, “campaign values, ad placement, or type of ad creative.”
Recall that the current two-digit campaign ID parameter effectively limits the number of pairings of ad creative and audience targeting settings that can be combined and run in a live campaign, given that ad networks must track performance by a specific campaign ID. Also keep in mind that the SKAdNetwork timer system dictates that some number of these campaign IDs will be unavailable and “held in reserve” at all times given the random delay of postback delivery. I discuss why this campaign ID limitation is problematic in Creative paralysis: ad creative production and testing in iOS 14. And in Dear Apple: These changes will improve SKAdNetwork for advertisers, which I published in July 2020, I suggest that increasing the SKAdNetwork campaign ID limit from 100 to 1,000 would unlock meaningful performance potential given the increased surface area for campaign experimentation. What Apple is doing with hierarchical source identifiers is effectively increasing the potential campaign ID limit to 10,000 (100*100). Edit: note that the number of installs generated by a campaign determines whether both of the additional campaign ID digits will be transmitted, or just one. To clarify, depending on the number of installs generated by the campaign, either two, three, or four integers will be sent to represent the campaign ID, versus just two in previous versions of SKAdNetwork.
Worth noting: the hierarchical source identifier allows for four digits to be transmitted only if the privacy threshold for the campaign is met. The privacy threshold is some number of installs for a campaign, but Apple has never clarified how that is calculated, or if it is static or dynamic. If the privacy threshold isn’t met for a campaign, then only two digits are available for the campaign ID, meaning only 100 values can be transmitted, reverting its functionality back to what is possible currently. This means the availability of campaign IDs scales with ad spend: for high levels of installs (and thus ad spend), much more campaign context is available, and so the limitations that currently exist that prevent advertisers from spending as much as they can with full insight to performance will be eradicated with this new feature.
Hierarchical conversion values
This is a functional improvement that will allow for a limited-signal conversion value to be sent in the SKAdNetwork postback when the privacy threshold for that campaign is not met. Currently, campaigns driving low numbers of installs can’t be evaluated for ROAS on the basis of conversion value accounting because no conversion value is provided when a campaign doesn’t satisfy the privacy threshold (I provide a framework for how to instrument conversion values for ROAS calculation in How to scale and optimize marketing spend with SKAdNetwork).
This limitation — that conversion values aren’t transmitted when the privacy threshold for a campaign isn’t met — has created a chicken-and-egg problem for many advertisers: campaigns lack the conversion values required to calculate ROI because they are low scale, but the campaigns can’t be scaled because ROI can’t be calculated.
With hierarchical conversion values, a “coarse-grained” value can be set that will be transmitted regardless of whether the campaign satisfies the privacy threshold or not. The set of possible “coarse-grained” values is:
low. One could imagine using these values to capture the likelihood that a user ultimately makes a purchase, or the estimated bucketed LTV value of a user mapped to some range of dollar amounts, or really any number of categorical variables with three potential values. For campaigns that do meet the privacy threshold, the same six-bit (ie. 64 potential values) conversion value format, which is classified as “fine-grained” in this new configuration, will be used and transmitted in the postback. More information on conversion values can be found in this QuantMar thread. Edit: note that only either the coarse-grained or fine-grained value will be transmitted, depending on how many installs were generated for the campaign. And cases do exist where the coarse-grained value will not be included in the first postback.
This feature is, to my mind, the most exciting of the four. With multiple conversions, an advertiser can receive up to three postbacks per install, each of which is anchored to a specific attribution window (0-2 days, 3-7 days, and 8-35 days), each of which can include multiple engagements. Apple indicates in its documentation that the
SourceAppID, and coarse-grained conversion values are conditional in the second and third postbacks on the privacy threshold being met. Note: these different attribution windows replace the timer system that Apple previously used to time the transmission of postbacks in previous versions of SKAdNetwork.
SKAdNetwork attributions for web
This feature feels long overdue and allows web ads that direct to the App Store to be attributed through SKAdNetwork.
Privacy with Purpose
The new set of features added to SKAdNetwork in the 4.0 point release provides a reason for genuine optimism around the long-term utility of SKAdNetwork and the ability for ad networks and ad platforms to improve campaign performance using it. Further, these improvements to SKAdNetwork might provide Apple with the air cover it needs to begin policing device fingerprinting in earnest. It’s possible that Apple felt compelled to ignore rampant device fingerprinting precisely because SKAdNetwork could not support the measurement precision required to grow app audiences through direct response marketing. Surely that fear is now attenuated.
But what Apple accomplishes through improving its privacy-centric measurement tools to the extent that they serve as a functional replacement for device identifiers is Privacy with Purpose. This is encompassed in the belief that capable and serviceable privacy-enhancing technologies (PETs) can not only protect consumer privacy but preserve advertising efficacy all the same. This outcome is better for all parties: for consumers, who reap the benefits of personalized advertising without sacrificing their personal privacy; for advertisers, who can reach appropriate audiences efficiently; and for publishers, who can enjoy the attractive economics of high-relevance ad targeting with their ad inventory.