-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Where does the GPID come from ? #7367
Comments
Good summary, thanks @patmmccann The reason that these disparate ways exist in bid modules today is that the rollout of GPID came in phases (two so far) and in phase one all of the publishers in question had descriptive GAM AdSlots (unique per slots on page,) so there was no request to have div-id be part of the GPID. So this inconsistency came from the fact that between 4/1/21 (the start of phase 1) and 8/1/21 (the start of phase 2,) that implementing in the way Index did (Index reads Now that appending div-id is being requested, and as you called out So if we're talking about standardizing as a recommendation in docs etc. then suggesting using |
Whatever the logic, I recommend creating a field called |
Some publishers may generate a divid dynamically, so the divid data would be acting like a transactionid. I believe GPID aims to have a unique, global and stable placement identifier? If we create a new field called gpid, I think it would make sense to allow publishers to configure whether this will use eg: for a publisher having two 300x250 placements, one ATF and other BTF:
|
Agreed that random div IDs are sometimes used @allanjun , but for the record PB AdSlot is not defined using div. Rather, PB AdSlot is defined by a function that can be whatever the publisher defines. The example in https://docs.prebid.org/features/pbAdSlot.html suggests publishers with random IDs could add a "data-adslotid" element. e.g. <div id="49849-abc-6573" data-adslotid="some stable identifier"> |
This would make sense because pubs have already put in the work to set custom values/GPIDs at |
Makes sense. The important point is to separate |
Here's a straw proposal. We make an update the GPT Pre-Auction module to possibly write AdUnit.ortb2Imp.ext.gpid:
Bid adapters would then be instructed to prefer AdUnit.ortb2Imp.ext.gpid. |
Looks good to me. |
I may have erred in assuming Prebid is in a position to decide the GPID. Is it guaranteed that when Prebid is present, it is the only demand source? AFAIK, that is a pre-requisite to Prebid doing anything other than passing a value along. Update: it is not guaranteed. Therefore anything in Prebid should be considered temporary, and IMO avoided. |
The same piece of inventory could wind up calling a DSP from both Prebid and OB. But it's doubtful that OB will ever support a more granular "AdSlot" -- they'll probably just tell the pub to refactor their page. So the question becomes - what breaks if GPID is div-annotated on one path (Prebid) and vanilla on another (OB)? |
Clear, thanks @bretg.
Unfortunately AFAIK, the GPID concept. :-p So I don't understand what TTD is asking for. |
The design is that there is a consistent identifier from all sources. Getting OB to pass along the identifier is going to be required to make the effort successful universally. |
Thanks, @JudSpencer, but it opens the question -- what would you like pubs and Prebid to do while the GAM side of this works itself out? Because it will take some time, I propose Prebid and the SSPs implement the proposal above:
It's the timing of #3 that's in question. This could happen immediately or wait until GAM-OB catches up. The answer hinges on the tradeoff in value for the more detailed info vs the downside of discrepancy between the Prebid and OB paths. |
After a number of discussions, it's now uncertain whether Prebid should support imp.ext.gpid. It appears to us that TradeDesk has conflicting requirements here:
Getting better granularity is pretty easy from a Prebid perspective, but consistency is beyond our control. If TradeDesk prioritizes consistency, then Prebid would recommend that adapters focus on GAM adslot and use PB adslot only for special tasks. We would not add imp.ext.gpid support in the system. |
Sorry that I didn't see your previous message on the topic. We don't have conflicting asks here. The issue is that there hasn't been commitment from Google to build support for what we're asking for yet. That doesn't mean that it's not the right thing for PreBid to do. The goal of the effort is to understand across exchanges, apples-to-apples what is transacting where and how traffic is different in different places. That means that we have to have support in several different places. We have prioritized consistency, but consistency requires cooperation from other parties that we don't have control over. Getting growing support from the prebid community of publishers will help to prioritize the ask elsewhere. |
@JudSpencer - it sounds like you're requesting for Prebid to move forward with the 'granular-GPID' proposal even if the side effect is inconsistency for an extended period. Some of us are skeptical about OB making this change anytime soon, so you may be stuck with apples-and-oranges. |
I understand the skepticism. Sometimes it takes a lot of momentum for Google to interrupt their product plans and fit in industry initiatives. e.g., it took over a year for support of Sellers.json and closer to two years to get their current, minimum level of SupplyChain data populated. The industry, IMO, needs to move forward on transparency initiatives though. |
@JudSpencer - we would like for you to say "yes - TradeDesk wants Prebid to build the GPID feature and publishers should use it even if the GAM changes might be a long time coming." Please confirm. Thanks. |
Yes - TradeDesk wants Prebid to build the GPID feature and publishers should use it even if the GAM changes might be a long time coming. |
@JudSpencer - there's been further conversation about the syntax here. We propose that instead of combing GAM ad slot and div with a slash, that we recommend the delimiter be something else: either carat (^) or semi-colon (;) For the record, GAM docs say "Only letters, numbers, underscores, hyphens, periods, asterisks, exclamations, left angle brackets, colons, forward slashes and parentheses are allowed." in ad unit codes. Ampersand, tilda, and pound-sign are URL chars. So that leaves us with at, comma, semi-colon, dollar-sign, percent, and carat. Looking for community input on the delimiter. Here's the revised proposal. We make an update the GPT Pre-Auction module to possibly write AdUnit.ortb2Imp.ext.gpid:
|
Reading your comment, I'm not sure what "Only letters, numbers, underscores, hyphens, periods, asterisks, exclamations, left angle brackets, colons, forward slashes and parentheses are allowed." has to do with the delimiter between the ad unit code and the DivId? Is it not OK to just check to see if the last character of the ad unit code is a forward slash and if it isn't to insert a forward slash between the ad unit code and the DivId? |
The rest of the logic looks right. |
No, we don't think using a forward slash is a good idea because not all GPIDs have div-id appended. Some publishers have adunits that are unique already, so don't need to tack on div-id. Without a special delimiter, downstream entities will not be able to tell whether the string has a div-id or not. e.g. consider these GPIDs:
How would you know whether the last field was appended or not? You shouldn't assume that all div IDs contain the string "div". So the suggestion is that a different delimiter would allow downstream entities better insight:
|
Is the concern here that downstream systems are going to care whether a DivID is appended or not? I'm not sure that there is going to be a way for any downstream consumer to know whether a valid GPID is being generated without some sort of 2-way communication between the pub and exchange selling the inventory. I don't feel strongly about this though other than I don't want to see any consumer assume that all GPIDs will be of a certain structure/format. |
We discussed in the Prebid Taxonomy committee today. Resolved:
So here's the updated example:
|
Thanks. That's fine as a default. There shouldn't be any requirement that a pub follow these guidelines when building out their GPID taxonomy. They really can be as simple as a single word. |
|
Copy-paste-O. Fixed. Thanks. |
Ok, we're going to move forward with making the changes to the GPT Pre-Auction module as proposed on Sept 3rd:
There will also be a documentation update needed to describe GPID, which I propose placing in the existing PBAdSlot doc, which will be renamed PBAdSlot and GPID. |
Documentation for this feature is needed. Have a draft that I'll post soon... |
In working through the documentation, @robertrmartinez and I realized that the current design isn't quite going to work. The So we propose the following:
To summarize the proposed behavior:
This positions pbAdSlot and GPID as synonyms. Which means in a future, we're going to want to deprecate pbAdSlot entirely and simplify this logic down to:
|
The first round of GPT Pre-Auction module changes were released in 6.1. I have a first cut of docs that conform to what's released: https://dev.prebid.org/features/pbadslot I propose that we release these docs, then when the new customPreAuction function is available, we can simplify the docs. |
I went ahead and merged the draft docs. The PB AdSlot docs were woefully out of date and people need the instructions for the proper GPID custom function. Am going to revisit them again once the |
Closing this issue since the PR is open and will be released with PBJS 6.5 |
Type of issue
The TradeDesk is encouraging publishers to provide "Global Placement ID" (GPID) data that's sometimes more granular than the GAM AdSlot. For instance, if a publisher's GAM AdSlots are all the same on a given page, TTD wants them to append that value with the div-id to make the values unique.
This desire for uniqueness is the reason that the Prebid AdSlot was created. The GPT Pre-Auction module supports publishers who want to pass the GAM AdSlot, and allows them to customize the PB AdSlot by defining a function.
So a given page might have these values:
The issue at hand is which of these values should a bid adapter read? Adapters are inconsistent:
We need to discuss A) standardizing, B) giving the publisher some control, C) whether this issue may affect modules like Price Floors, Viewability, and other RTD modules.
There is also a docs repo issue prebid/prebid.github.io#2928 tracking a proposal on GPID docs
The text was updated successfully, but these errors were encountered: