-
Notifications
You must be signed in to change notification settings - Fork 236
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Header Bidding related clarification on eligible interest group #59
Comments
Hi Viraj, sorry for my delay in responding during W3C's TPAC meeting. In the setup you describe, you say From the privacy point of view, the part of your flow that seems problematic is
The exact bid from an interest group's on-device bidding function inherently contains some information. In the flow you describe, the bid value might be enough for
|
Hello Michael, No worries.. Appreciate your response and session + discussions in W3C's TPAC meeting.
Yes, of course. Publisher have a control on the header bidding Ad Network Ads (fourth-ad-network.com in our example). In fact they directly partner with the Ad Network (vs say in RTB; which goes through an intermediary).
Ack this point of view. Based on the same line-of-argument I interpreted Turtledove's spec where " (effectively) 'fourth-ad-network.com's interest group (puzzles) will not be part of the auction. (run by first-ad-network.com)“ It seems to me that 'fourth-ad-network.com's IG exclusion (despite publisher's desire) is an artifact of the currently proposed mechanism where we account for only a single way (namely - Publisher Ad Network domain) to decide 'allowed' Interest Groups during the bid-processing. Publishers use Publisher Ad Network configurations to control the ad-network participants for the ad-slot. Turtledove seems to be relying on Publisher Ad Network domain-name (& partnership conclusions derived upon it). With the toy example I want to highlight the point that both are not the same. I think if we can build a construct (say as part of the construction of the ad slots iframe or some other way) which can enable participation of multiple Ad-Networks interest group (along with its contextual counterpart) inside the sandbox declared via publisher specified configuration; we can solve this use-case within Turtledove's privacy goals. Let me know if above arguments makes sense and you think there will be a room for such a solution if it satisfies all the privacy constraints (if not, why :)). Thanks, |
Thank you, that does make sense. It seems to me that you're looking for two things:
Is this an accurate way of breaking down your feature request, or have I over-simplified away something important? |
Chiming in here, that if @michaelkleber's last reply here is accurate, that TERN has mechanisms for both of these things, if it's of interest to you @virajawati. I wrote TERN to add functionalities like these to the base TURTLEDOVE proposal.
|
Overall, you are right Michael that the idea is : ‘Wire additional participants in the final auction’. About the specifics from your response;
I think you got it close enough with ‘the winner of one of them flowing into the other one'. A slight nitpick is; I feel 'waterfall bidding' hints for an early return which may not apply to 'run by publisher' results. So I will rephrase it as '(effectively) the winner of the auction "run by" the publisher flowing into auction "run by" Publisher Ad Network'.
Glad to know & appreciate it!
Yes - on same page.
Agree on the first part ‘A way for the person running an auction to list which buyers are allowed to participate’ with Publisher’s configuration being the total allowed space for the Ad-Network participants.
You are right. My thought is with Turtledove's contextual request in place we can reuse todays control where on-device IG bidding function gets the contextual response securely providing necessary details. With that control feasible; are you referring to something more as Turtledove's off-the-shelf feature? Michael, does this gives some more clarity on the goal? Andrew, thanks a lot for the TERN pointers and a detailed proposal. Will definitely go through it and confirm it being covered in TERN ! Thanks, |
Thanks to both of you. @virajawati Sorry for my accidental implications from using the word "waterfall" — I did indeed just mean a sequence of auctions run by different parties, in which the winner of one becomes a participant in the next. @appascoe I'm not sure I fully believe the idea that TERN's single auction with publisher-or-SSP-provided JS is the right thing here. How would such an auction include decision logic written by two different parties? It would certainly make my life easier to only have a single auction, but I'm worried that it might not give everyone the control they need. |
@michaelkleber I'd say that, speaking personally, I'd prefer a single auction to be run by the browser: it's simpler, provides more trust in the outcomes than arbitrary auction code, etc. We added this to TERN as a response to PARRROT, and, thinking about it, that it is indeed probably closer to the way the market operates today: SSPs and publishers are the ultimate arbiters of how the auction works and who the resultant winner is at a particular price. I suppose I'm imagining something like each SSP integrated with the publisher provides |
What @appascoe is describing is very much in line with how we think about the auction working in PARRROT. The JS which executes in the fencedFrame would be configured and ultimately controlled by the publisher, but could include JS that is provided by SSP or DSP partners similar to how prebid.js modules are enabled in a header bidding solution. As @michaelkleber points out, there is additional complexity in accounting for all the crazy use-cases that are at play in the current ecosystem. What PARRROT is advocating for is a system where the browser can provide a safe sandbox for the publisher to continue to leverage solutions that work for it, without requiring custom browser code for every use-case. |
I don't think I understand some parts of how "single auction to be run by the browser" works for @virajawati's situation. Suppose the browser has joined a dozen interest groups all buying through Are you saying that some code running on That seems very surprising to me. |
I’m not sure I follow how you got to a situation where the decision is being overruled. Within PARRROT, I imagine bidders (DSPs, SSPs, Advertisers, Ad Networks) would be able to run some logic leveraging available data (interest group info, contextual info) to provide one or more bids to the auction logic that would be controlled by the publisher (or some third party acting on the publishers behalf). The auction logic would choose a winner from among these bids, determine price, report on the outcome and serve the ad. The logic the bidders use to provide the bid(s) could perhaps be considered an auction, but that would depend on what that bidder is doing and I don’t think PARRROT or TURTLEDOVE needs to standardize that. |
In the TURTLEDOVE paradigm, each interest group acts independently: the "bid" that's produced by the ad that targets If you're thinking that |
Apologies for the delay in explanation from my side. Now let me step back and make sure I remove any ambiguity with my possibly too generic usage of 'ad-network'. I am very much referring to a standard header bidding use case like say shown in prebid.js diagram. The orange colored ad-slots on the page gets handled by calling Publisher Ad server. I couldn't find the spec in Turtledove to add multiple SSP's declaratively; hence I opened the issue. One possible confusion could be that I showed the publisher ad-server as first-ad-network.com. If it simplifies I would rename it as publisher-ad-server-service.com. While naming it as first-ad-network.com I wanted to include another publisher ad server feature where ad server also provides server-to-server RTB style bidding. Now PARRROT indeed adds a provision to solve the 'bidding participant problem' by allowing to wire multiple SSP's. Also, I think I get TERN can address it through some meta-data driven actions. @michaelkleber Let me know if this clarifies. Also, can you please elaborate a bidding participant use case which I might have conveyed which will not be solved above? Or it is about the bidding auction aspect of it. I have slightly simplified publisher-ad-service server-to-server RTB flow hoping it can be possibly covered through generic mechanisms of PARRROT / TERN. Will add my interpretation on the Bidding Auction piece mentioned by appascoe@ once this first issue is settled. Thanks, |
I do believe this is all clear now.
I think once we support wiring together multiple auctions, it can support all the uses described above. And also, I now think PARROT is actually a proposal for wiring together multiple auctions, even though it wasn't described that way :-). |
Thanks Michael ! imho, for clarity it may be super helpful to add such 'declarative participant inclusion' extension to :
(which I feel has a great importance and is a precursor to the on-auction extension you added) Lastly touching on the Auction piece; I do think some hierarchical control 'within the party' using custom ranking + filtering + bid only script would give an ability to view its own choices and will open optimization opportunities for all the parties like DSP, SSP & Publishers - say : [a] within interest group reader ad-network [b] within SSP ad-network (which will use outputs of a) [c] unified final auction (which will use outputs of b). {If such a custom script can be standardized via advertisings standards that would be awesome but browsers can less worry about it} I personally feel; unified final auction [c] (possibly achieved by Turtledove style local-only and open to read auction) itself may alleviate some auction dynamics issues in the past and give some visibility to the involved parties to move towards the best auction strategy without worrying about transparency. Thanks, |
I quite agree that we'd need to change more things to handle your desire for a second auction eligibility model. I feel there are still important and very practice questions to think about. Going back to the goal "a buyer needs control over what auctions they participate in", I think it's clear how that happens for a DSP choosing to buy through a particular SSP. But when bidding into an auction directly on a publisher page, how can the DSP be will-informed enough to exercise that control? It seems hard for a DSP to keep track of thousands of different domains, any of which might change the rules of their auction at any time. Do you think the publisher page needs to provide some kind of metadata about whose logic is in charge of the auction? In the web-adv BG we've seen some heated disagreements about first- vs second-price auctions — surely the buyer at least needs to know that before bidding! It seems like you want |
For an auction happening directly on a publisher page, I would say that the publisher is functioning as an SSP, and would call out to a DSP using the same mechanism as available in TURTLEDOVE or TERN. If a DSP has enough control in the SSP context, I don't see the issue here in the publisher context... but maybe I'm missing something. But generally, today, header bidding functions by the publisher page making a direct call to the DSP with the understanding that it's a header bidding auction for that publisher. It just doesn't feel that different to me from a call from an SSP. TERN specifies that that the publisher or SSP declare, mandatorily, the type of auction it intends to run, to allow the DSP to take this into account in its bidding function. What's to stop the publisher or SSP lying? Well, nothing really. This is actually the situation as it stands today. Indeed, as a DSP, we've detected such abnormalities and adjust accordingly. We've even seen players modifying our bid prices after submission. I don't want to make this sound common, but it does happen, and as a DSP we try to be vigilant of these things. |
Andrew: the reason the publisher-as-SSP situation feels different to me is that a buyer might well know the auction details, habits, and reputation of each SSPs they choose to integrate with. This seems more feasible for 10's of SSPs than for tens of thousands of publishers. (Any time the number of parties you're interacting with increases by three orders of magnitude, it's worth rethinking assumptions.) If the buyers of the world indicate that this is not a concern, then it's OK by me! |
@appascoe - I dispute that the publisher acts as an SSP in the page level auction (most commonly run by prebid.js). In that situation the publisher isn't providing his own AQ solutions, reporting, DSP targeting, QPS throttling, etc. In those cases the Pub is just soliciting multiple SSPs (with each of whom there is a pre-existing relationship that involves inventory mapping, market rules, paper/contracts, etc), and then passing the highest bid to the adserver/AdX to compete. This has traditionally been a first price auction. The SSPs all ran their own auction (server-side, and it may have been 1st or 2nd price) to choose their winner. And prior to that the DSPs all ran their own auctions to select what qualified bid they would respond with to an SSP (of the N that may have been available). In that case the auction was likely not purely monetary, but also took predicted performance into account, however it was still an auction of sorts. All that to say that running an auction doesn't make you an SSP. In my reading of TURTLE-DOV it seems like the goal is to enable a single SSP to choose between contextual and IG based bids, but it doesn't address the publishers ability to choose from multiple TD auctions. I would love to see this clarified, as it leads to a lot of confusion (which I think is what spawned PARRROT). (Update: opened #73 to get clarity on this.) Is the goal of TD to protect user's privacy, or to control the final page level auction (or both)? I'm assuming it's the former, but in that case TD needs to provide an API that the pub (most likely using prebid.js) can access to get the final TD bid for a single SSP. |
Hey @michaelkleber I've been thinking more about this and your proposed solution in FLEDGE and since this seems to be the main thread to discuss it I thought I should put my feedback on the current state here. (Take my use of FLEDGE or TURTLEDOVE interchangeably as I understand FLEDGE to be a precursor that leads into further development of TURTLEDOVE)
I agree that this is not sufficient. I think it might be worthwhile to talk about some of the issues here.
Now... to be clear here, I'm not accusing anyone specifically of being likely to perform shenanigans in the protected auction space if the FLEDGE/TURTLEDOVE auction process has domain over all other bids... but it is very easy to see how a protected space without transparency into its operation that also could potentially gain knowledge of all bid values before deciding if a FLEDGE auction wins might be able to unfairly advantage the FLEDGE auction in a variety of ways. If it did advantage the FLEDGE signal that would be invisible and disadvantageous to all other players in the hands of an unscrupulous browser interested in proving FLEDGE's value, or that browser's particular value. Once again, not saying that anyone in particular is likely to use sole control of the auction space to look at the other bids that come in and make a choice to promote the FLEDGE response, regardless of the performance of other bids, or to delay resolving the bid process in order to advantage slower players' response to FLEDGE signals. But the idea that ad functions are moving into the browser would seem to incentivize even a creation of extending browsers that approach these ad functions differently and in that case, the likelihood of malicious action goes up. I think a situation here might be to allow the publisher to make the final decision on how to resolve a set of bids. This could be accomplished by a change to the Perhaps that is still too privacy invasive, in which case a mechanism like |
"I think a situation here might be to allow the publisher to make the final decision on how to resolve a set of bids." My hope/expectation is that Prebid.js will fill this void. I've delved deeper into that thinking here, though I haven't updated it for FLEDGE. I think the principles that make Prebid acceptable to pubs and SSPs will also be the same ones that are needed for a workable solution in that space. I'm glad this is being raised. |
Hi Aram: Just to be sure we're on the same page, in the FLEDGE model the question of which ad wins is entirely in control of the seller who runs the auction. The seller's code gets to see each buyer's bid, assign some "desirability" score to each bid, and the most desirable one is the winner. So when you say a better approach "might be to allow the publisher to make the final decision on how to resolve a set of bids", are you distinguishing the seller's code from the publisher's code here, or is there some other hole that you're trying to plug? Perhaps the key thing here is "make the final decision on which auction wins in a transparent way visible and executed client-side"? I think Michael Lysak = @TheMaskMaker's #114 is the most relevant discussion we've had on this transparency goal — per our 3/17 meeting, this "publisher trusted agent" / "auditor" would be in a position to look at the auctions inputs and outputs. But again, for privacy reasons, this would also need to happen on-device: that auditor's code would be in a position to see enough information to track a person across sites, so it would need to be limited to only aggregate reporting. |
Following up on this issue, there has been substantial discussion of this topic in the FLEDGE phone calls on 2021-08-18 first topic, and 2021-09-01 last topic. In particule, @JoelPM has advocated for a model that is not based on "multiple auctions feeding into another auction", but instead "multiple auctions and then on-device rules that decide which auction's winner renders". This is much simpler than what I had imagined, which makes me happy! |
Hi @michaelkleber , Thanks for the feedback on this issue. There are still consequences to consider and discussed further stemming from the addition of such function I believe, like how scoring would work across SSP participants and if enough metadata can be made available to implement a publisher logic as defined in slide 13 of the presentation shown during the meeting. |
We're still figuring out how to offer this functionality, so it's too soon for me to make any promises about when we'll have an implementation. My best guess right now is that we can fold it into the URL selection capability in https://github.com/pythagoraskitty/shared-storage, which already envisions a worklet with private information affecting the choice of what ad to render inside a Fenced Frame. |
I’ve been spending a lot of time talking with a variety of Chrome folks about how best to implement support for multiple SSPs in FLEDGE. I think there are a couple of implementation choices here that I wanted to walk through. First implementation choice: Should the final ad selection be made via Shared Storage or a FLEDGE auction? There’s a few trade-offs here so I wanted to run through them. I don’t feel like there’s a clear winner but I think FLEDGE makes more sense:
Second implementation choice: Have multiple runAdAuction() calls (passing each SSP’s auction result to the final auction via opaque URLs) or just one runAdAuction() call (specifying each SSP’s auction config, and the final ad selection auction config)? Again I’ll run through the trade offs, and although I don’t feel like there’s a clear winner, I think having a single runAdAuction() call makes more sense:
Do these two decisions properly address the use case here? Which bids does it make sense to report as the winner in a multi-SSP case? Just the one that wins the final auction? or does it make sense to report the winners of non-final auctions as the winners as well? |
I believe those two decisions properly address the use case, at least from my perspective. I hadn't considered the possibility of reporting non-final auction winners, but it's an interesting idea. I think that functionality would be useful for sellers (pubs and SSPs) to understand dynamics of the demand landscape, which would be similar to the use case that @suprajasekhar raised in the last FLEDGE call (sorry, link to meeting notes not available yet). At this point I'd probably classify that as more of a nice-to-have than a requirement, though. It's great to see the Chrome team putting thought into supporting multiple SSPs - very encouraging. |
I’m thinking about what to do for reporting the winning bid price and 2nd highest scoring bid price in the multi-SSP case, specifically I’m trying to answer:
|
These are my current thoughts, which are based on how auctions work today on the server-side:
|
My $0.02 is that the decision on what is shared with a bidder should be based on what we want their incentive to be mathematically. Bidding true value isn't optimal in a first price auction for example, and providing the winning price doesn't seem to me like it should be considered giving much insight into the bid landscape, this is something that Google AdX already support with RTB Feedback for example. We also shouldn't be looking to make participating in component auctions worse data-wise than participating in the top level auction, as that would hurt component auctions (saying this as a general opinion, not that it necessarily applies here). Lack of transparency in the current multi-level auctions for header bidding is not a feature but a bug IMHO. |
This is a very good point, and I agree 100%.
Doesn't a first price auction (at all tiers) actually work in your favor here? The challenge with second price auctions was that the clearing price in a sub-auction meant that a DSP couldn't predict how they'd participate in the final auction. I can see how that would be very frustrating. With FPA, the bid should largely* just get passed through each layer and participate in the final auction in a much more deterministic way (unless it loses, but if it loses in a sub-auction, it would've lost in the final auction). On the topic of bugs and features, I would say that the current method of DSPs passing only a single bid when multiple were eligible is also a bug, not a feature. There is bid landscape information asymmetry for both pubs and bidders in the current setup, which leads to an inefficient market. |
Hello Turtledove Authors,
I would like to understand Turtledove Interest group selection in the context of Header Bidding.
Context:
In Header bidding, Publishers request bids for an ad slot from multiple ad platforms via header (ad) calls. Bids from these ad platforms are passed on to the publisher ad server ad call (as an input). Header bidders bids and publisher ad servers bids compete for the ad slot auction and a winner is chosen.
The key aspect is that:
To participate in the auction; header bidders do NOT partner with the publisher ad network.
TURTLEDOVE Interest Group Selection Spec
I am using following part of the proposal as a spec for Interest Group selection :
Interpretation
Following diagram shows state of a browser and how I am interpreting the spec in direct or RTB-style auction.
Here is the interpretation for Header Bidding style auction.
Questions:
Thanks,
Viraj
The text was updated successfully, but these errors were encountered: