-
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
Price Floor Module #4273
Comments
FYI - we've iterated on this feature. Posted draft user documentation at http://prebid.org/dev-docs/modules/floors.html (not linked in anywhere yet. Except here.) The description above will change soon. |
When we are implementing on Requirement 2, if we could make it part of core logic then with floors we will be able to map other data points t slots as well like bidder-config, position attribute, etc. |
Will price floors work with setBidderConfig, if a publisher wants to set floors unique to certain bidders? |
the setBidderConfig is a new feature that has yet to be implemented and still needs a review. Our initial goal is to keep the amount of supported fields to a limited set for "supported" fields even if technically it may work with a larger set. |
I have a few questions which relate to floor provider interface:
|
The floor provider will work with publisher to set the appropriate URL for the fetch. gptSlots and adUnit code are both supported. The floor provider can specify in the schema what fields they are looking to support. The call to the floor provider will be a fetch, meaning no data is sent do them. It's a retrieval of info. In the future we will be supporting a POST method where we can post some arbitrary data set to allow for context driven floor data per impression.
Analytics modules already today have access to auction data. This will continue to operate the same way going forward. A floor provider will need to use an analytics adapter for the feedback loop. This iteration does not include the usage of sub-modules. |
Done |
Type of issue
As the ad tech ecosystem moves to a first price model, buyers are starting to adjust to this new model. Publishers will need a mechanism to maintain a market rate for their inventory to prevent eroded valuation. Today publishers have to set floors in each platform they work with, where many of the platforms are not self-serve and each have various levels of control and configuration.
Using the Price Floor Module within Prebid, the intent is to provide an open source flooring framework in Prebid for Publishers to either configure floors themselves or work with a floor provider for an automated floor mechanism to floor all Prebid demand.
Intended workflow:
This feature should be designed to work with Prebid.js, Prebid Server, and Prebid SDK.
Goals
Requirements
Prebid.js Proposed Interfaces
Floors Module
A new Floors Module will be built that supports three scenarios:
In all cases, the job of the module is:
-If fetch url specified, attempt to fetch new data with an auction delay
- If auction delay is not set, default to 0ms and emit a warning
- It is beholden of the floor provider to do http caches in the browser (i.e. Prebid will not perform caches)
- If both pbjs and PBS flags are set to true, pbjs enforcement prevails
*
can be used as a catch for any gptSlot*
can be used for a catch all as a standalone string, referring to any domain name, but not for a wildcard with the second level domain*
can be used as a catch all for any size- Suppress any bids below floor from auction
- Set new BidFloorStatus
- If prebid is using bid caching, only bids surpassing the bid floor will enter cache
Example Configuration 1
Floor data is configured on the page to apply to the whole Prebid package where just gptSlot is defined in the schema:
Example Configuration 2
Real-time data fetch that delays the auction, with a configured default set of data:
Example Configuration 3
Ad Unit defined floor data
Sample data for http://floors.com/floors/1001-floors.json
Floors Provider Interface
Floor data provider providers endpoints must return a JSON data formatted like the data object in the “setConfig” call.
Example response to https://floors.com/floors/1001-floors.json
Bid Adapter Floor Interface
There exist several scenarios where more than one price floor can be matched:
While some bidders are able to break out requests per size / format (i.e. one request per ad size), giving them the ability to add floors per size or format is available, however many bid adapters do not have this flexibility. Having prebid define the floor for either situations would favor one bidder group over another.
The proposal is to expose a function call each bidder can utilize on every bidrequest, media type and size combination. The converted currency of the ad server is provided if the currency module is provided and ad server currency is able to be fetched.
The floors function will be attached to the Bid Request object each Bid Adapter utilizes today for context of the Prebid ad request to pass to their bid adapter endpoint.
Format
The job of the get floors function will be:
Examples
Example rules file used for getFloor examples below
Example 1
getFloor for media type Banner for a bid requests in the context of the gpt slot “/1111/homepage/top-rect” where the bid adapter does not support multiple sizes.
Response
Example 2
getFloor for media type Banner for a bid requests in the context of the gpt slot “/1111/homepage/top-rect” with size of 300x600 where bid adapter does support multiple sizes.
Response
PBJS to PBS Interface
In Prebid JS to Prebid Server environments, the below requirements are mandated:
Floors are defined per ad unit in pbjs and passed to PBS in imp.ext.floors object
Prebid Server
With Prebid Server, the client's job is easier -- just pass all relevant data and let the server figure out how to keep floor data fresh and apply it to bids.
Additional Requirements
For the most part, the requirements for Prebid Server are the same as for Prebid.js, with a few extras:
Other information
The text was updated successfully, but these errors were encountered: