Price Floor Optimization – A Guide For Publishers

Updated on: April 17, 2024
Want to consistently improve eCPM and revenue, then setting up and optimizing your price floors can help.

If you have been in the programmatic advertising for a while, you would have a fair idea of what price floor is? Here’s a quick refresh — Price floor is a threshold CPM rate set by the publisher in order to restrict the advertisers from buying the impressions at subpar ad prices (CPMs). 

The price floor plays an important role for the publishers who are running both – Open auctions and Private auctions simultaneously. While Private auctions (Preferred deals, Programmatic Guaranteed) give priority to Guaranteed deals and transaction details (e.g. eCPM rates, the volume of impressions, etc.) are already known to the publisher, CPMs (bid) rates aren’t revealed to the publishers in Open auction. 

For such scenarios where publishers sell the ad impressions via Open auctions, the price floor is something that can prevent their inventories to get sold to demand partners at lower CPMs.

What are the Types of Price Floor?

There are three types of floor price that can affect the earnings of a publisher if not taken care of properly.

  • Soft Price Floor
  • Hard Price Floor
  • Dynamic Price Floor

When a publisher runs an auction to sell the ad inventories, they make decisions and select a set of price floors for the demand partner.

Moreover, the types of price floor i.e. Soft, Hard, and Dynamic also affect the earnings of a publisher if not taken care of properly. If publishers set a Hard floor and the highest bid from the buyer didn’t exceed the value, then the inventory of the publisher remains unsold. Whereas if the publisher sets a Soft floor, a bid slightly lesser than the floor price can win the auction ensuring higher fill rate but decent yield. 

The dynamic price floor adjusts the price floor value automatically based on the historical performance (average eCPMs) of demand partners. However, that doesn’t mean that publishers can set dynamic price floors once and there’s no need to optimize further. Even with a Dynamic price floor set up, you need to keep monitoring the floor value to evolve amid the rapidly-changing programmatic demand channels.

How Publishers can Set-up a Price Floor?

Since publishers serve ads via ad server and work with several demand partners at the same time, the price floor can be optimized at the ad server level (for AdX), and at the wrapper level (for header bidding partners). 

As the majority of publishers have Google Ad Manager as an ad server, let’s understand how to set-up the price floor and optimize it for better results. 

How to Set-up Price Floor in Google Ad Manager?

As Google Ad Manager offers a bunch of features to set-up and optimizes the price floor, publishers can start with

  • Pricing Rules
  • Optimized Competition. 

Google Ad Manager offers a bunch of features to set-up and optimizes the price floor for the publishers. To be more clear, you can start with Pricing Rules and Optimized Competition.

1. Pricing Rules:

Pricing rules in Google Ad Manager has enabled the publisher to control the selling of ad inventories by setting-up price floor for a specified geographical location, device type, ad unit, and more. Under this feature, a publisher can either set-up a hard price floor or dynamic floor (also known as Target CPM). 

Target CPM is set by the publishers after analyzing the historical performance of demand partners in the auction. GAM can make the price floor flexible enough to capture the bid either lower or higher than the tCPM in order to increase the ad fill rate. If you want to know how target CPM works in Google Ad Manager, then this article will help you to set the value.

2. Optimized Competition:

Dynamic Allocation enables the Non-guaranteed and Guaranteed line items to compete against each other to maximize revenue for the Google Ad Manager publishers. Yet, in some instances, Dynamic Allocation sets high temporary CPM to protect the delivery of Standard line items and restrict remnant line items to compete against the ad impressions.

Suppose, you have a Standard line item with a goal of 1 million ad impressions in 30 days. If the line item has only delivered 10,000 impressions in 15 days, Google Ad Manager may increase the temporary CPM of the line item to protect it and meet the delivery goals in time. Meanwhile, this set up prevents other remnant line items to compete against the Standard line item and win the ad impressions.

If this is also happening in your server set-up, then Optimized Competition can help. Optimized Competition sets a lower price floor for non-guaranteed demand channels (AdSense, AdX, Prebid, etc.) that aren’t able to win the auction due to the dominance of Standard line items. 

Selecting the feature in the server will automatically set the price floor (at least) as high as Standard line items to give a chance to the non-guaranteed demand channels who are willing to pay more for the ad impressions. Note that the guaranteed line item delivery wouldn’t be affected. 

Want to give it a try? Here are the steps to do that:

  1. Go to Google Ad Manager home page, and click Admin.
  2. Select Global settings > Network settings.
  3. Scroll down to Ad serving settings, and enable Optimized Competition.

Enable Optimized Competition in Google Ad Manager

Additional Tip: To know about the performance of demand channels after enabling Optimized Competition, run reports in the server, and break down the metrics into Ad Exchange under the Optimization type* dimension.

Optimization Type in GAM Reports

*Dimension is under Beta in Google Ad Manager.

Irrespective of the optimization done on the ad server level, a publisher is recommended to check if the Prebid is up-to-date, and has been optimally set up since every platform not to miss the revenue opportunities.

How to Set-up Price Floor in Prebid?

The open-source platform Prebid offers a module* for setting up a price floor so that publishers can configure it on their own. Via Prebid framework, publishers can define floor price for three dimensions:

  • Ad unit or ad slot,
  • Mediatype e.g. banner or video, 
  • Ad size e.g. 300×250, 

*Though the price floor module in prebid is in the draft, a publisher can refer it for price floor implementation. 

In addition, publishers can define a price floor for a particular device type, country, content type, and many more. But, you need to ensure that the adapter you’re working with, supports the price floor for the ad sizes available on your website. Because not all adapters support setting up floors.

So, while setting up a hard floor, you need to make sure that the price floor is set according to the media type (i.e. banner, video, etc.) since the CPM value for different inventories varies with the type and video CPMs are much higher than banner ads.

Static price floor:

In Prebid, you can set the static price floor directly for the ad units. Here’s a sample code:

floors: {

                   currency: ‘USD’,

                   schema: {

                       delimiter: ‘|’,

                       fields: [ ‘mediaType’, ‘size’ ]


                   values: [

                       {key: ‘banner|300×250’, floor: 1.10},

                       {key: ‘banner|300×600’, floor: 1.35},

                       {key: ‘video|300×250’, floor: 2.00}



If the ad slots have only one media type (banner or video), it can be done by passing a single value, and the syntax is quite simple:

floors: {

                   default: 1.00     // default currency is USD


Dynamic price floor:

Despite the hard price floor, publishers can set dynamic floors in Prebid after analyzing the behavior of bidder partners. Prebid enables a publisher to delay the auction in order to get them the optimal price floor tailored for the specific page from a  third-party floor provider.

In case, the vendor fails to provide the data in the meantime, Prebid runs the auction based on the floors defined in the data object:


    floors: {

        auctionDelay: 100,   // in milliseconds

        endpoint: {

            url: ‘’,

            method: ‘GET’


        data: {     // default if endpoint doesn’t return in time

            currency: ‘USD’,

            schema: {

               fields: [ ‘mediaType’ ]


            values: [

                {key: ‘banner’, floor: 0.80},

                {key: ‘video’, floor: 1.20}





Now that you have an idea how to set up a price floor in Prebid and Google Ad Manager, don’t you want to know how to optimize it and get the best out of your current ad stack? 

How to Optimize Floor Price?

In addition to various optimization and troubleshooting tools and features, Google Ad Manager has a list of reports that enable publishers to analyze the performance of the demand partners and do the optimization to achieve desired goals. Here, in the case of price floor optimization, you can make use of Bid Data Report

Bid Data Report has a field BidRejectionReason that gives an overview of why the bid was rejected. Here, if you find “Floor” in the field, then it implies that the buyer’s CPM was less than the CPM decided by the publishers. Hence, the bid was rejected. Keep analyzing this field to understand the behavior of bidders and set the price floor accordingly.

Note: Bid Data Report is still under Beta and only accessible to the publishers who have access to Google Ad Manager Premium i.e GAM 360. However, you can enable the report for your account with the help of your Google Account Manager

For Prebid, take advantage of header bidding analytics to check the bid rate, win rate, timeout rate, and other important parameters related to the CPM offerings of a bidder. And, set the price floor higher for the bidders who:

  • Respond late and increase the page load time.
  • Participate in the auction, but aren’t bidding often.


There isn’t a standard solution for price floor optimization. It needs constant monitoring and analysis of the demand channels. Hereafter, it is recommended for publishers not to drastically change the price floor. Instead of that, try to change the floor price by cents after analyzing the average CPM of demand partners. Still, confused about how to start with the optimization? Feel free to get in touch with us with any questions.

News and Tips for Publishers

Get the inside scoop on publishing and programmatic with our 5-minute newsletter.