Prebid.js icon indicating copy to clipboard operation
Prebid.js copied to clipboard

Floors module enhancement: support hasUserId dimension

Open bretg opened this issue 1 year ago • 13 comments

Type of issue

enhancement

Description

In the interest of improving publisher and floor-provider flexibility, we want to add the ability to set different floors for scenarios where there's a user ID available vs when there's not.

While it's understood that this is already possible through custom floors dimensions in Prebid.js, it's not possible in Prebid Server, and is worth community discussion.

hasUserId floor dimension

In addition to the existing dimensions (AdUnit, GPT Slot Name, MediaType, Ad Size, Domain, etc), we propose a new schema dimension that can be used by floors providers: hasUserId: true or false.

  • If there are any Extended IDs (EIDs) available to this bidder, hasUserId would match the true value.
  • If there are no EIDs available for this bidder, hasUserId would match the false value.

And of course floor enforcement for a bidder is done against the value of the floor that's sent to the bidder.

For example, say this is the floors config:

floors: {
   currency: 'USD',
   skipRate: 5,
   modelVersion: 'Sports Ad Unit Floors',
   schema: {
       fields: [ 'mediaType', 'hasUserId']
   },
   values: {
       'banner|true': 2.0,     // hold out for a higher floor if EIDs are available
       'banner|false': 1.5
   }
}

And this is the EIDs config:

pbjs.setConfig({
    userSync: {
        userIds: [{
            name: "MODULE NAME",
            bidders: ['bidderA'],             // only bidder A gets this EID
            params: {
                ...
            }
        }]
    }
});

In this example, bidderA's floor would be 2.0 assuming the EID is actually set, and the floor for bidderB would be 1.5.

Prebid Floor Rule

We ought to discuss the rules for Prebid Floors. Originally, there was a simple rule:

all bidders get the same effective floor.
It might be modified by bid adjustments, but it's still effectively the same across bidder.

Then https://github.com/prebid/Prebid.js/issues/10410 came along and changed the rule to:

all bidders either get the same effective floor or they get no floor at all

And now this new dimensions prompts a generalization of the essence of the rule:

Prebid won't support floor attributes that single out bidders by name, except for the case of not passing them a floor at all.

Prebid should support floor attributes that separate out bidders by auction characteristics.

Commentary

The spirit of the original floors rule was that we don't want publishers accepting only high-value bids from a given bidder for any reason. Prebid should be a level playing field where bidder name is not a factor in setting a floor.

However, publishers ought to be able to tune their floors based on bidder behavior and information given to them.

In the example above, it's not bidderA's name that's making them jump a higher bar, it's that they have access to information that other bidders don't have, so is expected to be able to bid more. In scenarios where an EID is not available, the floor for bidderA and bidderB would be the same.

bretg avatar Oct 16 '23 19:10 bretg