Xandr SSP currently supports various ad quality controls:
An SSP can set ad quality controls so that no individual creative of a certain category (alcohol, porn, guns) can appear on their site.
They can set competitive exclusion controls so that, within all of the creatives showing on a page at the same time, there can be category exclusions where something like "coke ad next to pepsi ad" or "NRA ad next to Planned Parenthood Ad" can't occur.
They can also ensure that per-page-caps are enforced, which can ensure that multiple ads from the same campaign, advertiser, or brand, are not served for the same page view. Xandr refers to these as buy and sell side page caps.
The first one is explcitly called out in the SSP KV flow, however I'm not sure how we'd do (2) or (3) in the current API, as the page has no insight into the other auctions running on the page.
How This Currently Works
Basically, a multi-tag request results in multiple auctions, each with its own auction ID, requests to DSPs, etc. However, the scoring of each auction and bid is not done in isolation. As the auctions are ranked, already determined winners can be taken into account to filter out bids that would violate the exclusions or caps.
Basically, the ranking of a multi-tag auction is able to maintain state about the entire request and ranking done so far, and use that as it continues to rank.
As discussed on the Aug 30, 2023 PATCG call, there are cases where this does not work perfectly when multiple SSPs are involved. However, there are many cases (we can work on numbers) where the first party ad server is able to support this.
The Problem
Given the lack of multi-tag support, the single bid nature of the auction, and lack of ability to share state between invocations of scoreAd (I'm fairly sure), we won't be able to support this at all, on device or BA.
Clients care about this quite a lot, based on my internal conversations and some conversations with publishers.
Question
How can we do this? Allowing some additional opaque processing to occur across all of the winners, with the ability to fall back to a default or other winner (having multiple bids would really help here) would help.
Proposal Seed
I've been noodling on better support for multi-tag auctions, both for on device and BA and can't say I have it yet. I think if we start to allow the bidding functions to return multiple bids based on multiple tags signaled in auctionSignals (I'd think using OpenRTB syntax), they could return bids per auction (based on ID), and we could then modify the ranking design to be scoreAds that takes a list of bids (as opposed to scoreAd taking one bid) but still deny scoreAds any interesting access (disk, future auctions, reporting) and require that the output of scoreAds is a map of the auctionID to the winning bid.
Background
Xandr SSP currently supports various ad quality controls:
The first one is explcitly called out in the SSP KV flow, however I'm not sure how we'd do (2) or (3) in the current API, as the page has no insight into the other auctions running on the page.
How This Currently Works
Basically, a multi-tag request results in multiple auctions, each with its own auction ID, requests to DSPs, etc. However, the scoring of each auction and bid is not done in isolation. As the auctions are ranked, already determined winners can be taken into account to filter out bids that would violate the exclusions or caps.
Basically, the ranking of a multi-tag auction is able to maintain state about the entire request and ranking done so far, and use that as it continues to rank.
As discussed on the Aug 30, 2023 PATCG call, there are cases where this does not work perfectly when multiple SSPs are involved. However, there are many cases (we can work on numbers) where the first party ad server is able to support this.
The Problem
Given the lack of multi-tag support, the single bid nature of the auction, and lack of ability to share state between invocations of scoreAd (I'm fairly sure), we won't be able to support this at all, on device or BA.
Clients care about this quite a lot, based on my internal conversations and some conversations with publishers.
Question How can we do this? Allowing some additional opaque processing to occur across all of the winners, with the ability to fall back to a default or other winner (having multiple bids would really help here) would help.
Proposal Seed
I've been noodling on better support for multi-tag auctions, both for on device and BA and can't say I have it yet. I think if we start to allow the bidding functions to return multiple bids based on multiple tags signaled in
auctionSignals
(I'd think using OpenRTB syntax), they could return bids per auction (based on ID), and we could then modify the ranking design to bescoreAds
that takes a list of bids (as opposed toscoreAd
taking one bid) but still denyscoreAds
any interesting access (disk, future auctions, reporting) and require that the output of scoreAds is a map of the auctionID to the winning bid.