-
Notifications
You must be signed in to change notification settings - Fork 269
Description
Initial Note
I think there are a few use cases here and doing something more abstract could be good, but let me start with one motivating case and solution, and then wave my hands at something broader.
Background
Ad Tech has a general concept of a "Deal", where a buyer and seller agree to some special parameters of buying on the sellers inventory, typically for things like preferential pricing, access, and ranking, and to also allow details to be hidden through a "package", i.e. the deal could be for "People Likely to Buy Tennis Stuff in the Next 10 Days on Sports Inventory", but without revealing the details of how that is determined, at least not programmatically. This is not an exchange/ssp/dsp specific concept as it is accounted for in the OpenRTB specs, although individual Ad Tech's may offer their own spin or value ad.
Some relevant details include:
- Typically between 1 seller and 1-or-more buyers.
- A deal is said to be "eligible" on a request if it's targeting parameters are met, which can include a combination of "contextual*" targeting (in particular inventory), user targeting, and capping (same as a creative).
- May, often I think, involve cross-contextual data.
- Can include more than two parties at auction time through "curation".
As currently stands we can determine some set of eligible deals in the Contextual Auction and pass them through in the auctionConfig.auctionSettings
for buyers to target (preferably via OpenRTB structure as indicated elsewhere :) ).
The main Fledge doc seems to contemplate the multi-party example:
A publisher (or a third party working on the publisher's behalf) might create and own an interest group of people who have read a certain type of content on their site. Publishers can already use first-party data to let advertisers target their readers on the publisher site. A publisher-owned interest group could let publishers do the same even when those people are browsing other sites. Publishers would presumably charge for the ability to target this list.
however it's not clear to me from the docs how that would happen.
Challenge
As alluded, I believe deal eligibility will be limited to data available in the 1st Party Context. For inventory filtering this meets current functionality (pretty sure), but there is functionality loss on user targeting in cases where the eligibility would have been determined based on data not available in the 1st Party Context.
Proposal
There's a lot of details we'd need to figure out but I'll stick with a medium level of detail that I think can motivate the idea and discussion, and if we go in this direction we can flesh out more details.
The idea is to allow a way for IGs to target "deals" and pass that information on to other IGs in a way that takes advantage of existing deal interop but still with K-anonymity constraints.
- Add a new optional function to the IG,
generateDeals()
, same arguments as togenerateBid()
which will return a list of deal objects containing an ID and list of buyers, in our case IG owner domains, that can target it. (I'll generally say have the format correspond to OpenRTB, something something). - Add a stage to the auction in between
runAuction()
and the calls togenerateBids()
, in which any IG withIG.generateDeals()
is first filtered using the same mechanics as currently indicated for IGs, and if unfiltered runs. - Apply K-Anon counting and restrictions to any returned Deal IDs; any that fail get their counter increased but are ineligible for the current auction, any that pass also get the increased counter but are determined eligible.
- The auction code routes any eligible deals into other IGs
generateBid
call via a newbrowserSignals.eligibleDeals
, filtering theIG.owner
against the deal's eligible buyer domains. - The
generateBid
function can include a targetedDeal element in thead
. - If the deal is targeted and won by an IG (via
ad.deal_id
), a reportResult call is made to the owner of the IG that produced the deal.
If need be we could require that an IG has either generateBid
or generateDeals
but not both. It could also make sense for there to be a specific reporting function that could be invoked, reportDealWin
, but we might just be able to use existing functions. There might need to be a deal owner origin in returned deal object from generateDeal
, need to dig on that more. Let's start here.
Callback to Initial Note
Going a bit wider with this, the ability for IGs to interact with each other more (although not infinitely) would be very powerful from an Ad Tech's perspective. Deals is one major existing case, 3rd party data is another, and depending on how far you went with IG Dependency Management, you could see buyers and sellers doing interesting matching. I don't want to couple this proposal to a broader "IG Dependency Management" system, I think there's enough to discuss with this one "little" case, but want to call it out as a thought.