Skip to content
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

Convention for Page Position #5578

Closed
bretg opened this issue Aug 6, 2020 · 10 comments · Fixed by #8451
Closed

Convention for Page Position #5578

bretg opened this issue Aug 6, 2020 · 10 comments · Fixed by #8451

Comments

@bretg
Copy link
Collaborator

bretg commented Aug 6, 2020

Type of issue

Convention

Description

Similar to First Party Data and Video Parameters, many bidder accept page position as bidder-specific parameters. Publishers need to pass the same information to each bidder, but often with different values for each bidder.

  • Rubicon requires 'position' to be either 'atf' or 'btf'.
  • AppNexus requires 'position' to be either 'above', 'below', or 'unknown'
  • Conversant requires 'position' to be values from 0-7 corresponding to the OpenRTB values

Proposal

Prebid.js should adopt a convention for publishers to place 'position' in AdUnit.mediaType.banner.pos and AdUnit.mediaType.video.pos

The values are aligned with OpenRTB 2.5:

Value Description
0 Unknown (default)
1 Above the Fold
3 Below the Fold
4 Header
5 Footer
6 Sidebar
7 Full Screen

Requirements

  1. As an AdUnit-specific value, 'position' is not subject to First Party Data permissioning
  2. PBJS bid adapters should look for this value in the mediaTypes.mediaTypes objects
  3. The pbsBidAdapter should pass this value as imp[].banner.pos and imp[].video.pos
  4. PBJS should validate the type of pos: if it's not an integer, remove the attribute entirely, fire an AUCTION_DEBUG event, and log a console warning

Timeline

If approved, Prebid.org documentation and the Prebid Server bid adapter will be updated immediately. Bid Adapters will have until Prebid 5.0 (timeline TBD) to be able to read from mediaType.banner.pos and mediaType.video.pos and map values to their endpoint requirements.

@gglas
Copy link

gglas commented Mar 1, 2021

@bretg Approved, let's move forward with next steps.

@patmmccann
Copy link
Collaborator

@bretg do we need to reopen this for the adapter changes?

@patmmccann
Copy link
Collaborator

@bretg should the rubicon adapter copy p_pos to tg_i.pos if it exists? We're being asked to double set.

@patmmccann
Copy link
Collaborator

Here is an attempt at a list of adapters that need modification:
Conversant

copyOptProperty(bid.params.position, banner, 'pos');

Gamoshi md file and

(!bid.params['adpos'] || utils.isNumber(bid.params['adpos'])) &&

Kobler

return parseInt(validBidRequest.params.position) || 0;

pos: getPosition(validBidRequest)

Waardex

position: parseInt(validBidRequest.params.position) || 1,

pixfuture

tag.position = {'above': 1, 'below': 2}[bid.params.position] || 0;

Smilewanted

positionType: bid.params.positionType || '',

adRelevantis

if (bid.params.position) {

SpotX

spotxReq.video.ext.pos = utils.getBidIdParameter('position', bid.params);

Appnexus

tag.position = { 'above': 1, 'below': 2 }[bid.params.position] || 0;

The oneVideo module is an example of how to do this according to the new spec.

@patmmccann
Copy link
Collaborator

@acsbendi https://github.com/prebid/prebid.github.io/blob/master/dev-docs/bidders/kobler.md indicates position is not the same as the ortb2 param. Would you consider renaming it? Some might find that confusing. Also, removing you from the list of adapters to fix.

@patmmccann patmmccann moved this from Needs Req to Ready for Dev in Prebid.js Tactical Issues table May 23, 2022
@acsbendi
Copy link
Contributor

@patmmccann I've already opened a PR to remove that parameter completely :D prebid/prebid.github.io#3794

We originally used to differentiate between repeated placements (e.g. when the article is long and the same placement is used multiple times between paragraphs) but we stopped using it as it takes too much effort to maintain this information.

@patmmccann
Copy link
Collaborator

how fortuitous, ty

@patmmccann patmmccann self-assigned this May 23, 2022
@patmmccann
Copy link
Collaborator

patmmccann commented May 23, 2022

Conversant appears fixed here ; fyi @pycnvr

mergeDeep(imp, bid.ortb2Imp);

@patmmccann
Copy link
Collaborator

Positiontype parameter is not documented in smilewanted adapter, we can't be sure what it means

@pycnvr
Copy link
Collaborator

pycnvr commented May 23, 2022

@patmmccann Thanks for tagging. It seems that adapters should be picking up values from mediaTypes.video.pos and mediaTypes.banner.pos. The line above in Conversant adapter only work for first party data. If that sounds right, I'll add it to our sprint. Thanks.

@patmmccann patmmccann linked a pull request May 25, 2022 that will close this issue
Repository owner moved this from Ready for Dev to Done in Prebid.js Tactical Issues table Jun 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Development

Successfully merging a pull request may close this issue.

5 participants