This section reviews the basics behind how Adzerk selects an ad/internal promotion to be shown.
Adzerk's ad engine chooses to serve a creative to a placement based on:
First, the engine receives information about the ad placement via the Decision API request. This includes information like Placement Location, User Agent, Keywords, User Key, Custom Targeting data, Location, and more.
Then, the Engine takes a look at all the ads you've created in the system and filters by the right criteria. It also analyzes the Priorities order and will prioritize ads based on their Priority level, such as showing Sponsorship ads first, then Auction ads, then House Ads.
Finally, it chooses a winner based on your Ad Selection Methods within each Priority. For instance, if you're doing Auctions / eCPM Optimization, the winner will be the ad that'll deliver the highest eCPM.
The balancer is a system that examines a given creative every 5 minutes (or whenever you save a campaign, flight, or creative) to determine how often it should serve. The balancer assigns a weight to the creative. For example:
- A flight set to 100% percentage delivery would be set to a weight of 100
- A flight set to 50% percentage delivery would be set to a weight of 50
- A flight that is set to an impression or click goal is assigned a dynamic weight based on projected impressions, or clicks vs. current delivery
When the Ad Decision Engine goes to pick a winning ad, it'll incorporate each ad's weight when selecting.
This is the default selection method. Based on the weights of the available ads, Adzerk randomly selects which ad to show. Think of a big bingo ball bowl - an ad with a weight of 50 would have 50 balls in the bowl; an ad with a weight of 10 would have 10 balls. The first ad would therefore win ~83% of the time (50/60).
In a lottery priority, ads with percentage goals are selected separately from ads with impression goals, etc. The percentage goal ads will become eligible to serve first, and any remaining requests will be filled by ads with other goal types.
To prevent unpredictable serving behavior, it's a best practice to use the same goal types for each priority.
In the auction selection method, each ad has an eCPM value based on past behavior. The winning ad will be the one with the highest eCPM.
The selection method will also look at the Remainder Percentage, which will redirect some impressions to non-winning ads to give them more data points.
There is an up-coming change to this functionality. Right now if there are multiple ads with the exact same eCPM, we simply take the first. In the future, we will randomly select from the group of ads with the same eCPM and then exclude all of those ads from the group of flights used for the remainder percentage.
AdChain is relevant if you are using RTB or ad networks. With it, Adzerk looks at ads in the priority and sorts them based on their adChain rank. The end result is a chain of ads in the order of the set adChain order. (However, if a adChain flight has a goal of 50% it would be included in the order 50% of the time.)
Even or Percentage goal types start serving a few seconds after you save the flight.
Fixed Impression or Conversion goal types can take several minutes to go live, as our ad balancer monitors # of requests to determine how often to show the ad.
If you set impression or click caps for a Flight, our system will pause the Flight once that cap has been hit. However, due to the number of events processed by Adzerk (25K+ requests per second), stopping on a dime is not feasible. Therefore, your total impressions for a flight will likely be slightly over.
This comes into play with click and conversion caps too, but to a lesser extent.
If you pause manually, the ads will also take a few moments to stop.