A price floor is one of the few auction settings a publisher controls directly, and one of the easiest to get wrong. A floor can look like it is working, because average CPM went up, while quietly costing money, because fewer ads are sold. This guide explains what a floor does, where you can set one, and how to decide on one with evidence.
What a price floor is
A price floor (also called a reserve price) is the minimum price, usually expressed as a CPM (cost per 1,000 impressions), that a bid must meet to be eligible to win your ad slot. Bids below the floor are not considered. If no bid clears the floor, the impression goes to whatever comes next in your set-up, such as another line item or a house ad, or it is left unfilled.
How a floor works in a first-price auction
Google moved Ad Manager to a unified first-price auction in 2019. It announced the change in March 2019, and the Authorized Buyers release notes record that Ad Exchange traffic completed the transition as of 25 September 2019, with the closing price determined by the highest net bid.
In a first-price auction the highest eligible bid wins and pays its own bid. Google's Ad Manager auction model page says the winner is chosen by highest net bid and is never charged more than the bid it submits, and that sellers receive no less than the floor they set.
This changes what a floor can do. In second-price auctions the winner paid roughly the second-highest bid, so a floor could lift the price paid by a much higher bid; Google told publishers in 2019 that floor strategies built to influence the second-price closing would no longer be relevant. In a first-price auction, a bid already above the floor pays the same with or without it. A floor now does two things:
- It removes bids below it. Those impressions go to other demand or go unfilled.
- It tells buyers the minimum. Ad Manager sends the floor to buyers in the
bidfloorfield of the bid request, so they know what they must bid to be considered. Whether any buyer bids differently as a result, only your own data can show.
The trade-off: fill rate against price
Raising a floor moves two numbers in opposite directions. Fewer bids qualify, so fill rate (the share of ad requests that end up showing a paid ad) falls. The bids that remain are higher, so the average CPM of what you do sell rises. Revenue depends on both:
Revenue = impressions sold × average CPM ÷ 1,000
As a floor rises, revenue can go up while the price gained outweighs the impressions lost, then fall as more impressions go unsold. Where that turning point sits differs by site, slot, device and country, and moves over time.
The table below is a hypothetical example with made-up numbers for 100,000 ad requests on one slot. It shows the shape of the trade-off, not what will happen on your site.
| Floor (hypothetical) | Fill rate | Impressions sold | Average CPM | Revenue | Revenue per 1,000 ad requests |
|---|---|---|---|---|---|
| No floor | 90% | 90,000 | $0.90 | $81.00 | $0.81 |
| $0.50 | 80% | 80,000 | $1.10 | $88.00 | $0.88 |
| $1.00 | 62% | 62,000 | $1.45 | $89.90 | $0.90 |
| $2.00 | 30% | 30,000 | $2.60 | $78.00 | $0.78 |
| $4.00 | 6% | 6,000 | $4.80 | $28.80 | $0.29 |
Two things to notice. Average CPM rises at every step, even where revenue collapses, which is why CPM alone misleads. And revenue rises at the first steps only because some buyers are assumed to bid higher once a floor is in place. If no buyer changed its bid and nothing else filled the lost impressions, a first-price floor could only reduce revenue. That is why floors have to be tested, not assumed.
Read the transcript
A price floor is the lowest price you'll accept for an ad. Set it too low and it does nothing. Set it too high and ads go unsold. Each bar is one ad, and its height is the price paid. This is a made-up example. As the floor rises, bids below it are turned away. Buyers who value the ad more may raise their bid to meet it. So revenue climbs at first, then falls once too many ads go unsold. Where the peak sits is different for every site, and every kind of traffic. So change floors one segment at a time. Compare total revenue per thousand page views, not just the average price, and check floors again regularly.
Floors in Google Ad Manager: pricing rules
Ad Manager manages floors through pricing rules, which Google introduced in 2019 as unified pricing rules alongside the move to first price. They centralise floor prices for your non-guaranteed demand. Key points from Google's documentation:
- What they apply to: Open Auction, Private Auctions, First Look, third-party exchanges in Open Bidding, the remnant line item types Price Priority, Network and Bulk, AdSense backfill, header bidding trafficking and SDK Bidding. Private Auction deals have an optional setting to skip pricing rules.
- What they do not apply to: campaigns negotiated through Programmatic Direct (including Programmatic Guaranteed and Preferred Deals), house line items, and line items with a zero rate and no Value CPM.
- Targeting: a rule targets inventory, and can price everything or specific demand channels, bidders (Authorized Buyers is one selectable demand source), advertisers and brands, sizes, and creative types (display or video).
- Overlaps: if two rules target the same inventory, the rule with the higher price applies.
- Net, not gross: floors are compared with the publisher's share of a bid after Google's revenue share is removed. Google's example: with an 80/20 split, a $1.00 bid is worth $0.80 to you and is filtered by any floor above $0.80.
- Limit: up to 200 pricing rules per Ad Manager network.
- Pricing options: you can set fixed floor prices, or set a target CPM (the default option), where Google adjusts the floor dynamically while aiming to maintain an average minimum price. A beta option lets Google set floors per query.
- Reporting: the Pricing rule report dimension shows activity by rule.
AdSense: no floor setting
AdSense does not give publishers a minimum price or minimum CPC setting. Its controls are about which ads can show: Google's guide to allowing and blocking ads lists blocking by advertiser URL, general and sensitive category, and authorized buyer, along with ad serving settings. The same page warns that blocking ads can reduce your earnings and that allowing all ads creates the most competitive auction. If AdSense runs as backfill inside Ad Manager, Ad Manager pricing rules do apply to that backfill.
Prebid: the Price Floors module
If you run header bidding with Prebid.js, the Price Floors module lets you set floors for the Prebid auction. Rules can be defined by ad unit, GPT slot, media type, ad size and domain, either written into the page or fetched from an endpoint before the auction (a fetch can delay the auction, so check it against your header bidding timeouts). It can pass floors to bidders, reject bids below them and send floor data to analytics adapters. It also has a skipRate setting that skips floors on a chosen share of auctions, which is useful for testing.
Prebid floors and Ad Manager pricing rules are separate systems. A Prebid bid that clears the Prebid floor can still be filtered by an Ad Manager pricing rule, since pricing rules apply to header bidding trafficking.
How to test a floor change safely
- Write down every floor you have. Ad Manager pricing rules, Prebid floors, and any floors set inside your SSP accounts. The highest one that applies is the one that matters.
- Change one segment at a time. Pick one ad unit, device type or country with enough traffic to measure, and change nothing else during the test.
- Split traffic if you can. A random split (for example with Prebid's
skipRate) compares like with like. Before-and-after comparisons are weaker because demand changes with the season, weekday and end of month or quarter; if you must use one, compare matching weekdays and avoid holidays. - Run for at least a full week so both weekdays and weekends are covered.
- Judge on revenue per 1,000 ad requests and page RPM, not CPM. Track fill rate and unfilled impressions alongside them so you can see where any change came from.
- Keep the change only if the evidence supports it, and recheck later. Demand shifts between quarters.
Expect some noise: Google's auction model page notes that Ad Manager may run experiments that adjust publisher settings, including CPM prices.
Common mistakes
- Judging by CPM alone. Higher CPM with lower fill can mean less money. If revenue fell after a floor change, our guide on why your RPM dropped covers how to separate the causes.
- High floors on low-traffic segments. Few bids means a floor can remove most of the competition, and the data is too thin to show whether it helped.
- Setting and forgetting. Floors never revisited drift out of line with demand.
- Conflicting floors across systems. With floors in Prebid, Ad Manager and an SSP account, the effective floor is the highest that applies, which may be higher than anyone intended. Separate floors also make reports harder to reconcile; see ad server vs SSP discrepancies.
Common questions
What is a good price floor?
There is no single good value. It depends on your demand, slots, devices and countries, and changes over time. Test one segment at a time and judge on revenue per 1,000 ad requests, not CPM.
Does a higher floor raise the price buyers pay?
In a first-price auction, a bid already above the floor pays the same with or without it. A floor removes lower bids and tells buyers the minimum; whether that leads to higher bids on your inventory is something to measure, not assume.
Can I set a price floor in AdSense?
No. AdSense offers blocking controls rather than a minimum price, and Google warns that blocking ads can reduce earnings. If you use AdSense as backfill in Ad Manager, Ad Manager pricing rules apply to it.
Why did my fill rate drop after I added a floor?
Bids below the floor are no longer eligible, so some impressions go unsold. That is expected; what matters is whether revenue per 1,000 ad requests rose or fell.