-
Notifications
You must be signed in to change notification settings - Fork 254
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
Request for Ad Slot size as an additional BTS signal #869
Comments
Hello @Gusieva, could you please add your name and affiliation to your GitHub profile? I'm assuming "BTS" stands for "Buyer Trusted Server", i.e. the Key-Value server run by buyers.
The request to the Key-Value server already includes the publisher page's hostname. Have you considered looking up what sizes of ads this publisher website has? I would be surprised if many publisher domains had ads of hundreds of different sizes. Of course I might be wrong, but do you have any data on what fraction of requests have ad sizes that can easily be looked up based on the publisher domain? Putting that aside: It's tricky to provide this information in the request to the KV server because we generally send one request to the server and then use the response for all the auctions on a page. If the response depends on the ad slot size, we might need to send many. And of course if a publisher page has ads of many different sizes on the same page, this would leave you in a much worse position than today.
The runAdAuction API doesn't know about all the ad slots on a page, just the one slot it's running an auction for. I don't see how the auction for the first ad slot on the page could know about the later ones.
I don't understand how this would interact with the single reused response problem. |
Ah, here's an idea: We could add a new optional auction configuration parameter that is a Seller-provided list of all the ad sizes on the page.
Maybe this was in fact what you were suggesting, and I misunderstood your request. But in any case, this does seem reasonable to me, if this would be useful to buyers and if listing all the ad sizes is a reasonable thing to ask of the seller. It would be great to hear from both the buy and sell side about whether they like this idea, since it can only work with buy-in from both. |
I'm linking #417 (comment), because there are some on-going discussions on that issue about some of the challenges of size already. |
Thanks Michael for the proposal. That's a good idea that fully covers the buy-side request.
|
Thanks again for the proposal. Please proceed with the implementation. Thanks! |
@michaelkleber I made some tests and the calls are already duplicated when
On Criteo side we would like to get the right size for each adSlot of the relevant auction and not for all possible adSlots on the page. So only a single width & height and not a list. It would allow us easier filtering server side. |
OK great, thank you for the feedback Fabian. As I think @JoelPM suggested when we talked about this on the weekly call, we should figure out a way to let buyers opt into getting this signal — because different people want different versions of the information, and which version you want has implications for caching behavior. (Separately: Yow, the idea of |
I’d like to propose a concrete API design here to make sure we’re all on the same page. There would be two new input APIs:
NOTE: specifying a mode of |
This is all the acceptable sizes the pub has configured for all the slots on page or the all the In |
Re (1) -- |
I imagined
I imagined them being specified in a canonical order (e.g. order of slots on page, order slots were created, or simply sorted), so that the list matches between calls to
Is there a seller use case you are imagining that would be facilitated by making |
Thanks, Just verifying. Sorting will ensure the intended caching behavior across pages.
So based on an IG's configured mode attribute, Chrome will automagically find and apply the appropriate size value as:
(provided as comma-delimited width, height pair[s]) |
Yes David, this matches my thinking. Edit: actually I'm not entirely sure if the |
If we're concerned about minimizing information leakage, I think it would be better to sort sizes in lexical order (note that sizes are strings, not ints, since they have have units). |
I've uploaded PR #928, which fleshes out this proposal (and tries to normalize strings a little). It does not currently specify ordering. It also forbids duplicate sizes in the list, and specifies using values from the top-level auction for both fields. Open to changing anything, just wanted a slightly more formal starting point. |
Can you confirm that this proposal is unrelated to using the
Normally it should be the selected size of the Component auction. The problem is it somehow requires to figure out multi size requests because today there is no way to indicate the size that has been used by the buyer as part of the component auction to the seller. |
This uses the same size format as adSizes field in IGs, and reuses the "requestedSize" field in AuctionConfigs, which does have a defined interaction with the adSizes field in IGs. However, this does not require IGs provide adSizes field, and does not interact directly with adSizes fields in IGs if present.
I've currently specced it out to get sizes from the top-level auction, which I'm not sure any other feature does. I'm happy to change behavior, if folks prefer it to be consistent with everything else. It looks to me like requestedSize currently does in fact use the size from the component auction when passed in to bidders, so perhaps I should switch, though when providing the size to the fenced frame, we are using the size of the top-level auction. |
+1 for a consistent behavior across browserSignals + the trusted server call + fenced frame rendering. In the trusted server we just want to get the same value as the one from browserSignals. So maybe it is enough to solve this ticket. Now to align browserSignals.requestSize and fenced frame rendering size, if we say we have 1 top level seller that specifies 1 ad size and 2 component sellers that specify 2 different ad sizes we will get 3 different ad sizes. It seems unclear how one can be chosen for the final rendering stage and it is very related to issue #825. |
One additional question @Gusieva Can you give some more explanations about the rational for So maybe there is some simplification to be done by only allowing thisSlot instead of all slots ? |
The reason for this is client-side caching and response reuse, particularly if responses are short-lived. If there are multiple ad slots on the page, then one trusted signals request could be reused for all ad slots on the page, instead of needing a new one for each different sized ad slot. |
There can multiple slots of the same size on one page and slots can be reused when the user continues browsing the publisher website or other publisher websites (as we retrieve user data). |
I missed this question earlier -- I see the same use case as on the buyer side -- we'd currently have to return |
I think it's worth noting that arbitrary information can be added to the trustedSellerSignals URL by the caller, just not in the query parameter (though we could spec out something around that, I guess), and it's not subject to k-anon checks, so you could do "https://seller.com/.../ad-size-100-by-200/" or whatnot, though admittedly, not quite as user-friendly as having integrated support. |
I suppose that's true -- but that implies that we know what size we're working with, which has been the subject of a number of other github issues, and is still in flux. |
#928 has been merged -- but there was still an open question about TSS... |
Request:
We propose that Chrome provides the Ad Slot size(s) as an additional BTS signal.
Justification:
BTS will be able to filter ads and IGs based on the given width and height, hence, return fewer ad candidates with a higher quality. This will also decrease the size of exclusion packages that will be returned for the surviving ads.
Background:
Currently bts doesn’t have information about the slot size. Therefore Google Ads has to return creatives of all possible sizes (hundreds for GDA) to match the slot on the page. This causes several challenges:
Limited capability to reduce the payload size.
Prediction Models have to score the candidates of all sizes, which impacts the latency and the overall candidate scoring quality.
Larger bts response size increases the auction latency.
Limitation:
Considering multiple slots on pubpages scenario when the HTTP cache caches trusted DSP response, we have to be accountable for keeping the cache hit rate unimpacted.
Proposal:
Given that the potential impact on cache hit rate requires experimentation, we suggest making the following parameters configurable via auction configuration:
Bts receives a list of all slot sizes available on the publisher page as a concatenated comma separated string in each bts request. This allows Google Ads to optimize the bts response for certain slot sizes while maintaining cache hit rates.
Bts receives an additional signal for a certain slot size. This allows Google Ads to optimize the bts response for a specific ad slot size, making the request itself lightweight.
Bts does not receive slot size information. This option will help other bts to keep the current specification unchanged.
The text was updated successfully, but these errors were encountered: