Targeting Optimization

🚧

BETA

Targeting Optimization is in Beta. These docs are subject to change. If you have additional questions, please ask your account manager.

📘

The current Targeting Optimization product lets you optimize toward a target CTR.

Overview

Targeting optimization is a method of adjusting how eligible an ad is to serve in order to meet a performance goal, similar to eCPM Optimization. Unlike eCPM Optimization, targeting optimization enables you to set the desired goal outcome. For example, you can choose to optimize a flight to hit a 0.75% click through rate across its targeted sites.

Currently, targeting optimization settings are only available via the Management API, and currently we are only optimizing for click-through-rate (CTR) by site. API endpoints are available for viewing/updating optimization weights in sites and for modifying algorithm settings across your network. Refer to our Targeting Optimization API page.

How Targeting Optimization Works

Targeting optimization “hacks” the normal distribution of ads by changing how often an ad serves to meet a specific performance goal.

The optimization process takes place during the “targeting phase” of ad selection. First, the ad engine shortlists ads to match a request’s criteria, such as geotargeting, keyword targeting, etc. Next, the engine applies an eligibility percentage to limit how often the ad should serve for a given OptimizationType (site, for instance).

(Note that the eligibility percentage is different than the ad’s weight, which is used by lottery priorities during the “selection phase” of ad selection.)

For example, the targeting optimization algorithm may determine that to meet a CTR goal of 0.75%, the ad needs to be served to Site X 50% of the time it is eligible. 50% becomes the eligibility percentage, and 50% of the time the ad is requested, it will continue on to the “selection phase” of serving. Details of the selection phase will depend on the priority type of the ad’s flight (auction, lottery, ad chain optimized, etc.), so the ad is not guaranteed to serve.

Note that the maximum eligibility percentage is 100%, which means that the ad will continue on to the selection phase every time it is eligible.

The current optimization algorithm aims to keep the optimized metric 1 to 5% higher than the target metric.

Burn-in Period

The burn-in period sets a baseline for ad performance. During this period, ads are set to their maximum eligibility percentage, and no optimization is applied. After the set number of burn-in impressions is reached, targeting optimization will reduce the eligibility to attempt to meet the performance goal.

We recommend choosing a number of impressions that should give the ad between 24 to 48 hours of serving time before it starts optimizing. This will give our algorithm enough click data to start making correct eligibility decisions.

If you add a new site or other inventory competitor after the burn-in period, we will set the ad at its full eligibility and adjust the eligibility on the next pass of targeting optimization.

Setting the Eligibility Percentage

Once per hour, targeting optimization uses data from its entire reporting history to determine whether to lower, raise, or keep an ad’s eligibility percentage the same:

  • If the ad is serving below its target, then it is considered cold and its eligibility will be "warmed up".
  • If the ad is serving between 1% to 5% above its target, then it is considered warm and its eligibility will not be changed.
  • If the ad is serving more than 30% above its target, then it is considered hot and its eligibility will be "cooled down".

Remember, this algorithm wants ads to get warm and stay warm.

These warming percentages are the default settings for the targeting optimization algorithm. To adjust the settings, use the Targeting Optimization API.

Warming Up & Cooling Down Sites (Basic Algorithm)

When updating the eligibility for an ad, we look at the last two weeks for each OptimizationType (e.g. site) and use the same rules as above to determine if the site is hot, cold, or warm. For example, if a site's CTR over the past two weeks is 5% above the target CTR of an ad, then we consider the site hot.

Using the default algorithm, we will only adjust a random 30% of sites on each one-house pass, and we will adjust the eligibility percentage for affected sites by 10%. This is to prevent spikes in performance. (You can modify the algorithm using the Targeting Optimization API).

When we make the 10% adjustment, we will compare the lifetime temperature of the ad and the past two-week's temperature of the site. This effectively redistributes eligible impressions across sites to maintain the targeting goal.

If we are warming up the ad, then we:

  • Bump up the eligibility of warm and hot sites by 10%, and
  • Bump down eligibility of cold sites by 10%.

If we are cooling down the ad, then we:

  • Bump down the eligibility of warm and hot sites by 10%, and
  • Bump up eligibility of cold sites by 10%.

Remember, we only affect 30% of the sites on each pass!

Setting Up Targeting Optimization

Add targeting optimization by creating or updating a flight using the flight endpoints of the Management API. See here for the API Documentation.

Below are the arguments needed for targeting optimization.

NameData Type
IsTargetingOptimized
(boolean)
Sets whether the flight is targeting optimized. Set to true
TargetingOptimizationTarget
(float)
The goal value you are targeting. If you want to serve a 0.75% CTR, set the TargetingOptimizationTarget to 0.75.
TargetingOptimizationType
(integer)
The type of inventory that is competing for your flight. For example, if you are optimizing performance across sites, set the TargetingOptimizationType to 1. Supported types:
1 = Site
TargetingOptimizationTargetType
(integer)
The performance metric you are optimizing for. For example, if you are optimizing for CTR, set the TargetingOptimizationTargetType to 1. Supported Types:
1 = CTR
TargetingOptimizationBurnIn
(integer)
The number of impressions to serve before optimization takes place. This allows us to establish a baseline of performance. The number of BurnIn impressions will depend on your traffic volume, but you shouldn’t optimize using less than 1000 impressions at the minimum.
TargetingOptimizationCanMiss (boolean) - coming soonSets whether the ad engine is allowed to exceed the goals of the flight/ad in order to reach the targeting optimization goal. Defaults to false. (Note that caps cannot be overridden.)