Creative paralysis: ad creative production and testing in iOS 14

This article has been adapted from content in the iOS 14: How to prevail in Q2 2021 online course, which offers a comprehensive set of tactics for retaining advertising efficiency in iOS 14

On Monday, Apple released iOS 14.5 to consumers, ending the long and torturous suspense that the company catalyzed with its announcement of the App Tracking Transparency privacy policy in June 2020. Many aspects of mobile advertising — across both app and web campaigns — will change as iOS 14.5 is adopted by consumers. One such aspect is the creative testing process, which will be impacted by two specific design choices made by Apple for its SKAdNetwork attribution framework: each network is limited to just 100 campaign IDs per advertised app, and postback data is aggregated at the level of the campaign.

First, it’s important to try to understand why Apple made these choices. A campaign ID in the SKAdNetwork postback maps to a campaign ID being operated by a mobile advertising network or platform, but most ad networks employ a three-tiered Campaign-Ad Set-Ad hierarchy that renders the campaign nothing more than a container. In this hierarchy, the Campaign governs time-based budgeting and scheduling, the Ad Set governs audience targeting and bid logic, and the Ad is assigned the visual elements that are served in advertising placements. Note that in this hierarchy, each campaign can contain many ad sets, and each ad set can contain many ads.

Given this hierarchy, the campaign measurement limitations of SKAdNetwork present severe challenges for advertising performance measurement. The above diagram showcases a campaign that contains three ad sets, each of which contains eight ads. If a postback is received by an ad network for this campaign ID, the network has no idea which ad set or ad was delivered to the impression and created the postback. If each of these ad sets is targeted to different audiences, and each ad is designed for its ad set’s specific audience, then knowledge of the campaign that generated a postback provides very little context for evaluating the effectiveness of any given ad in that campaign.

In other words, the one-to-many-to-many relationship between campaigns, ad sets, and ads prevents any helpful direction from being parsed from the campaign ID. In order to measure the performance of a specific ad, given that SKAdNetwork postbacks are indexed at the campaign level, an advertiser must re-architect its campaigns with a one-to-one-to-one relationship across campaigns, ad sets, and ads: put just one ad in one ad set per campaign so as to make the ad ID effectively equivalent to the campaign ID. Since each campaign contains only one ad set, which contains only one ad, the ID of the campaign provides a direct reference for the ad.

In the above diagram, an advertising network knows that Campaign 1 corresponds to Ad 1, since that campaign only contains one ad set, which contains one ad. If campaign_1 is indicated in the campaign ID parameter of an SKAdNetwork postback, the advertiser understands that the data in that postback was generated by Ad 1, belonging to Ad Set 1. In other words, the campaign ID maps to a single ad, and the postback data can be applied directly to that specific ad for performance measurement.

The simplicity of this workaround explains why Apple has limited the number of campaign IDs that can be tracked for a given network, for a given app, to 100: if Apple had not restricted the number of tracked operational campaigns in this way, advertisers could create a very high number of campaigns, each containing one ad set with one constituent ad. In this approach, each campaign’s ad set could be targeted so specifically to a precise audience that attributing a postback’s data to an individual user in the app might become feasible (or at least probabilistically more manageable). I describe why specific, limited-scope audience targeting engenders privacy vulnerabilities in What is differential privacy?

The limit of 100 tracked campaign IDs per network per app, coupled with campaign-level indexing in SKAdNetwork postbacks, clearly represents a severe constraint on advertising measurement. And the SKAdNetwork timer system exacerbates that constraint: postbacks will not be received in real time but rather based on the conversion value timer system that I describe in this post. Facebook and other ad networks have determined that they will only allow the initial conversion value timer to be reset within a 24-hour observation window after install, meaning that, as a result of a random secondary timer, postbacks will be received by those ad networks up to 72 hours after the app is first opened (24 hours of observation period, 24 hours of initial timer countdown, up to 24 hours of secondary random timer countdown).

What this delayed postback receipt means is that any campaign ID must be put in reserve for three days after the campaign has been paused because postbacks for that campaign can continue to be received in that time. Why does this matter? Because campaign IDs are taken out of circulation for three days after being paused, which further limits the number of campaign IDs that can be used on behalf of an advertiser at any given time.

The result of these realities of SKAdNetwork is that ad platforms are allowing advertisers to operate very few campaigns simultaneously for iOS 14 traffic. Facebook, for instance, is limiting advertisers to just nine campaigns for iOS 14 traffic per App ID, and Google is limiting advertisers to eight. These platforms are imposing these limits because they need access to as many campaign IDs as possible for deploying budget on ads with the one-to-one-to-one relationship described above such that campaign IDs correspond to individual ad IDs and postbacks can be used to assess ad performance.

In the above diagram, each ad within an ad set is assigned its own Campaign ID for deployment purposes, allowing for the ad’s performance to be measured directly. Given that some number of Campaign IDs are always inaccessible in “cool off” mode as they await delayed postbacks, it’s clear that the pool of 100 campaign IDs can be exhausted with a small number of campaigns. The budget and delivery parameters of the campaign are combined with the targeting and bid parameters of the ad set and packaged together into a standalone campaign for each ad. Note that both Facebook and Google have indicated that they will model performance at sub-category hierarchical levels (eg. at the ad level) from opt-in data and historical performance, but new creatives will need to have performance baselines established through deployment nonetheless.

In Mobile ad creative: how to produce and deploy advertising creative at scale, I describe an ads production and testing framework that fully realizes the pre-iOS 14 power of platforms like Facebook and Google to optimize ad campaigns based on users’ historical monetization and engagement profiles. The approach outlined in the article is predicated on ad platforms being able to do certain things:

  1. Aggregate monetization and engagement data for users across very many third-party properties;
  2. Group users into specific segments based on that data;
  3. Very rapidly test ad creatives against those segments and optimize ad targeting by segment based on near-real time conversion observations.

All of the above was possible for platforms like Facebook and Google when that article was written; none of it is possible for those platforms on iOS now. The article suggests building a consistent production cycle based on radical experimentation of core ad creative concepts coupled with a high-volume of variations per concept. If enough creative could be funneled into these platforms, they could very quickly pair particular creatives with well-defined targeting segments and optimize ad delivery for each segment. The more creative produced and deployed, the more granularly the platforms could sub-divide the total audience into behaviorally-defined segments and experiment with creative-segment pairings. Campaign optimization was almost totally a function of creative output.

This changes with iOS 14 because ad platforms will no longer be able to profile users based on historical engagement data, but also because the platforms will simply be limited in the number of creatives they can deploy by virtue of the campaign ID cap in SKAdNetwork. So not only will platforms need to group users by much broader interest and demographic features, but they’ll also be restricted from doing mass experimentation through creative-segment pairings. Advertisers won’t be able to deploy the same volume of creative as they previously did: the platforms won’t be able to maintain the same deployment cadence owing to the campaign ID cap and the cool down period, and backlogs of ad creative will accrue. Many advertisers will need to substantially reduce the volume of creative they produce for iOS in order to keep pace with the capabilities of the ad platforms.

As I wrote in this Harvard Business Review piece, advertisers can adapt to this environment with a few different strategies. The first is to reduce the total output of creative but increase investment into concept ideation: to produce fewer, more differentiated ad creatives. Somewhat counterintuitively, this can be more expensive: creating slight variations on a creative concept (eg. different CTAs, different background colors, re-arranging video scenes, etc.) is almost always cheaper and easier to accomplish than conceiving of and producing wholly unique ad creatives.

Creative may become a source of competitive advantage for companies that are able to shift production in the direction of relatively many concepts versus many variations on few concepts. Creative testing in the iOS 14 environment will be much more limited than it was previously, and advertisers must adapt accordingly.

Creative production and testing are just two topics covered in iOS 14: How to prevail in Q2 2021, a seven-part, two-hour video workshop covering iOS 14 transition strategy. This article was adapted from content in the workshop.