Sequential auction setup with contextual ad auction

Publishers typically diversify their ad demand sources to optimize for revenue and invoke multiple companies (for example, publisher ad servers, supply-side platforms, and demand-side platforms) to determine the best ad for a given ad slot on the page. Header bidding allows publishers to capture bids for an ad slot from a variety of demand sources. In a sequential auction setup, header bidding library may be used to run an auction with contextual data and Protected Audience is used to run an auction with cross-site data.

Before you begin, learn about the fundamentals header bidding from the Prebid.js documentation.

Definitions

The following tables describe some terms used in this document.

Auctions

Auction Definition
Protected Audience auction An ad auction that involves bidding on an interest group created on another site.
Protected Audience multi-seller auction A two-tier Protected Audience auction that first involves multiple parallel component auctions that then submit their top scoring ad to the final top-level auction.
Top-level auction The final ad auction within a Protected Audience multi-seller auction that provides the scoring for the component auction winners from the component auctions.
Component auction A nested auction within a Protected Audience multi-seller auction where each component seller is running their component auctions in parallel. The top scoring ads from each component auction is passed up to the top-level auction.

Participants

Participant Definition
Advertiser The party that desires an ad placement and builds the ad creative.
Publisher The party that provides ad inventory for auction.
Buyer The party that bids in an auction to buy the ad space from a seller. Commonly a demand-side platform (DSP).
Publisher Ad Server A service used by publishers to manage and choose ads to be rendered on the site. A Publisher Ad Server may combine its own auction results, header bidder responses, direct-sold inventory, and more, to determine the ad that will provide the most revenue to a publisher.
A Publisher Ad Server may provide a client-side library for interacting with the server.
Top-level seller The party that invokes (that is, creates) the Protected Audience multi-seller auction and participates in the top-level auction.
Component seller The party that runs a component auction within the Protected Audience multi-seller auction to sell the publisher's ad space to the buyers. Commonly a supply-side platform (SSP).

Sequential auction setup

In a sequential auction setup, the contextual auctions are executed first, then the Protected Audience auction is executed. This setup allows publishers to maximize their earning potential by running an auction with the contextual data available on the page, and also running an auction with cross-site data in a secure environment to protect users' privacy.

A header bidding library may be executed first on the page to collect bids for the Publisher Ad Server's contextual auction. Then, the adjusted winning bid price of the contextual auction can be entered into the Protected Audience auction as a bid floor. During the scoring step, the top-level seller can drop component auction bid prices below the bid floor by assigning them a zero score when the desirability score is calculated. If no Protected Audience component auction bid is above the bid floor, then the contextual auction winning ad is rendered to the user. If the Protected Audience auction returns a winner, it means it is above the bid floor, and the Protected Audience winning ad is rendered to the user.

In this sequential auction setup example, three major auctions may be executed on the page in order:

  1. Contextual auction by header bidding library
  2. Contextual auction by the Publisher Ad Server
  3. Protected Audience auction.
User
Overview of Protected Audience multi-seller auction with header bidding contextual auction.

Detailed description of the overview diagram:

  1. Before the auction, the user is added to an interest group on an advertiser site.
  2. When the user visits the publisher page at a later time, Prebid.js runs a contextual auction to collect the bid responses from header bidders. During this step, the buyers may provide the signals and the sellers may provide component auction configs to be used in the subsequent Protected Audience auction. Prebid.js provides a module for propagating these signals and configs to the Protected Audience auction.
  3. The bid responses collected by Prebid.js are sent to the Publisher Ad Server for a server-side contextual auction.
  4. The Publisher Ad Server may combine its own auction results, header bidding results, direct-sold inventory, and more, to determine the ad that will provide the most revenue to a publisher. The winning ad is returned to the client-side library of the Publisher Ad Server.
  5. The adjusted bid price from the contextual auction winner, along with the buyer's signals (perBuyerSignals) and seller's component auction configs gathered by Prebid.js can be passed into the Protected Audience auction by the Publisher Ad Server's client-side library.
  6. The Protected Audience multi-seller auction is executed by the top-level seller. During the top-level seller's scoring step, the top-level seller may compare each component auction winning bid price against the contextual auction adjusted winning bid price. If the component bid price is lower than the contextual auction bid price, then the top-level seller returns the desirability score of 0. If all bids are scored 0, then the runAdAuction() call returns null which signifies that the contextual auction winning ad should be rendered.
  7. The Publisher Ad Server client-side library either renders the winning Protected Audience ad or contextual ad, based on what was returned from the runAdAuction() call.
  8. The winning ad is rendered to the user.

Contextual auctions with Prebid.js and Publisher Ad Server

Contextual auction is initiated on the publisher site
Contextual auction time sequence on the publisher page.

In a sequential auction setup, all contextual auctions are executed before the Protected Audience auction runs. In the setup explained in this document, we run a header bidding contextual auction by Prebid.js that feeds into a server-side auction by the Publisher Ad Server.

The publisher first initiates a header bidding contextual auction by calling Prebid.js with a flag to note that a Protected Audience auction will be executed afterwards. Then Prebid.js collects the bid responses and sends them to the Publisher Ad Server for a server-side contextual auction. During the bid response collection step, the buyers and sellers have the opportunity to provide component auction configs and buyers' signals (perBuyerSignals) to be used for the subsequent Protected Audience auction, if they want to participate. That component auction config will eventually pass into the subsequent Protected Audience auction.

  1. Contextual auction initialization The user visits the publisher page.
  2. The publisher page loads the Publisher Ad Server client-side library and defines ad slots.
  3. The publisher page loads Prebid and starts the header bidding contextual auction.
  4. Seller A's contextual auction (running in parallel to Seller B's contextual auction). Prebid.js sends a bid request to Seller A.
  5. Seller A retrieves the bid responses and perBuyerSignals from the buyers.
  6. Seller A executes a contextual auction.
  7. Seller A constructs the component auction config with perBuyerSignals included.
  8. Seller A responds to Prebid.js with the winning bid and its component auction config.
  9. Seller B's contextual auction (runs in parallel to Sellers A's contextual auction). Prebid.js sends a bid request to Seller B.
  10. Seller B retrieves the bid responses and perBuyerSignals from the buyers.
  11. Seller B executes a contextual auction.
  12. Seller B constructs the component auction config with perBuyerSignals included.
  13. Seller B responds to Prebid.js with the winning bid and its component auction config.
  14. Publisher Ad Server's contextual auction The bid responses collected by Prebid.js are sent to the Publisher Ad Server for the contextual auction.
  15. The component auction configs with buyers' signals are shared with the client-side library of the Publisher Ad Server
  16. The Publisher Ad Server runs a contextual auction to determine the best ad between direct sold campaigns, programmatic bids, Prebid's contextual bids, and other inventory.
  17. The Publisher Ad Server returns the adjusted winning bid.

Consider contextual ad demand with Protected Audience ad demand

The Publisher Ad Server client-side library renders the ad that was chosen between the contextual auction and the Protected Audience auction
Ad rendering sequence on the publisher page.

At this point, contextual auctions have concluded, and the Publisher Ad Server's client-side library can pass the contextual auction winning adjusted bid price, component auction configs, and signals from buyers that are participating in the Protected Audience auction to the top-level seller. The contextual auction bid price as a floor can be passed into the auction config as a signal for scoring at the top-level auction.

  1. The browser fetches the scoring script from seller along with trusted scoring signals of each ad.
  2. The browser executes the top-level seller's scoring logic for each winning bid of all component auctions. Inside the top-level seller's scoreAd() script, the logic has access to the contextual auction adjusted winning bid price that may have been passed in as sellerSignals in the auction config. The script can compare the winning contextual bid price with component Protected Audience bid price and return a desirability score of 0 if the contextual price is higher. Otherwise the script calculates the desirability score, likely based on the component Protected Audience bid price.
  3. The browser chooses the ad with the highest desirability score submitted by the top-level seller's scoring logic.
  4. If the Protected Audience auction wins The Protected Audience auction returns a FencedFrameConfig object or an opaque URN to the publisher's ad server client-side library.
  5. Client-side library sets the fenced frame's config attribute to the FencedFrameConfig object or sets the iframe's src attribute to the opaque URN of the winning Protected Audience ad.
  6. The browser fetches the Protected Audience auction winning ad from the buyer.
  7. The browser renders the ad to the user.
  8. If the contextual auction wins The Protected Audience auction returns null.
  9. The browser sets the iframe's src attribute to the winning contextual ad.
  10. The browser fetches the contextual auction winning ad from the buyer.
  11. The browser renders the ad to the user.