Dynamic Floor Pricing: How It Works
Static floor prices leave money on the table. Here is how dynamic floor pricing uses auction data to improve yield for gaming publishers.
Christian Dobish
Director, Publisher Success · · 9 min read
On this page
A floor price is the minimum bid you accept for your ad inventory. Set it too high and you kill fill rate — impressions go unsold. Set it too low and you leave revenue on the table — bidders pay less than they were willing to.
If you are using static floor prices on your gaming site, you are doing one or both of those things at any given moment. A $2 floor that works perfectly for US desktop traffic at 8 PM is simultaneously too high for Indian mobile traffic at 3 AM and too low for UK users during Christmas week.
Dynamic floor pricing solves this by adjusting your floor in real time based on the actual conditions of each impression. Here is how it works, what technology powers it, and how to implement it on a gaming site.
The Problem With Static Floors
A static floor is a single number, say $1.50, applied to every impression on a given ad unit. You set it in Google Ad Manager or your SSP, and it stays there until you manually change it.
Here is why that fails:
Geography. A US impression might attract bids of $3–8. Your $1.50 floor is irrelevant — bids clear it easily. But an impression from the Philippines might attract bids of $0.30–0.80. Your $1.50 floor blocks every bid. That impression goes unfilled. You earn nothing instead of a $0.50 CPM, which is only $0.0005 for that one impression, but across millions of impressions a month it adds up.
Time of day. Campaigns pace their spend unevenly through the day, and demand for a US impression at 2 AM ET looks very different from demand at 8 PM ET. Your static floor does not adjust.
Day of week. Some advertisers spend more on weekdays; others push harder on weekends. A static floor ignores this.
Seasonality. Q4 CPMs typically run 30–50% above Q1. A floor set in November is far too high in January.
Page context. Your most popular game page may attract 10× the traffic of a long-tail game page. The popular page has higher demand and higher clearing prices. A single floor across all game pages is suboptimal for both.
The math is simple: every impression has a different market value, and a static floor treats them all the same.
How Dynamic Floors Work
Dynamic floor pricing replaces that single number with a real-time calculation. For each impression, the system evaluates multiple signals and sets a floor designed to maximize yield: high enough to push bids up, low enough to avoid losing the impression entirely.
The Input Signals
A dynamic floor system ingests:
- Historical clearing prices for this ad unit, geo, device, and time of day over the past 7–30 days
- Current demand density: how many bidders are active in this auction right now
- Geographic data: country, region, sometimes city-level
- Device type: desktop, mobile, tablet (desktop CPMs often run higher than mobile)
- Day of week and hour: factored against historical bid patterns
- User signals: new vs returning, session depth, cookied vs cookieless
- Page-level data: which game page, content category, URL parameters
- Seasonal adjustments: Q4 uplift, Q1 dip, event-driven spikes
The Calculation
The floor is typically set at a percentile of the historical clearing price distribution. For example:
- If the 25th percentile clearing price for US/desktop/evening is $2.80, the dynamic floor might be set at $2.50, just below that percentile, ensuring most bids clear while pushing the lowest bids up.
- If the 25th percentile for India/mobile/morning is $0.20, the floor adjusts to $0.15.
More sophisticated systems use machine learning to optimize the percentile itself. Rather than always targeting the 25th percentile, the model learns that for high-demand segments, a higher percentile (40th, 50th) captures more revenue without significantly reducing fill rate, while for low-demand segments, a lower percentile (10th, 15th) maximizes total revenue by keeping fill rate high.
The Feedback Loop
Dynamic floors keep learning. The system continuously measures:
- Revenue impact: did raising the floor increase or decrease total revenue?
- Fill rate impact: did the floor change cause impressions to go unfilled?
- Yield curve: what is the optimal balance point between floor height and fill rate?
This data feeds back into the model, refining the floor calculation over time. A well-tuned dynamic floor system improves its performance over weeks and months as it accumulates more data about your specific inventory.
Implementation Options
1. Google Ad Manager Unified Pricing Rules
If you use GAM, Unified Pricing Rules (UPRs) are the built-in floor-setting mechanism. UPRs let you set different floors based on:
- Geography (country, region)
- Device category
- Ad unit
- Inventory type
UPRs are not truly dynamic; they are rules you configure manually. But you can create granular rule sets that approximate dynamic behavior:
- US desktop: $2.00 floor
- US mobile: $1.50 floor
- UK desktop: $1.80 floor
- India mobile: $0.30 floor
- All other: $0.50 floor
The limitation: you are managing these rules by hand. With 10 geos, 3 device types, and 20 ad units, that is 600 potential rules. It does not scale.
2. Prebid Floor Module
Prebid.js includes a floor module (pbjs.setConfig({ floors: {...} })) that lets you define floor rules in your header bidding configuration. The module supports:
- Schema-based rules: Define floors by mediaType, size, geo, device, and domain
- Dynamic floor data: Fetch floor rules from a server endpoint on each page load, so you can update them without redeploying
- Custom schema fields: Add your own dimensions, such as time of day or page type, to the rule schema
The Prebid floor module is powerful because it passes the floor to bidders with the bid request and rejects bids that come in below it, so every bidder in your header bidding stack respects the floor. This is important: without a Prebid-level floor, individual bidders may bid below your GAM floor and waste auction time.
Example configuration:
pbjs.setConfig({
floors: {
enforcement: { floorDeals: true },
data: {
currency: 'USD',
schema: { fields: ['mediaType', 'size', 'gptSlot'] },
values: {
'banner|300x250|/1234/game-page': 1.50,
'banner|728x90|/1234/game-page': 1.00,
'video|*|/1234/game-page': 5.00,
'banner|300x250|/1234/category-page': 0.80,
'banner|*|*': 0.50
}
}
}
});
For dynamic behavior, point the module at a server endpoint that returns floor rules recalculated from your latest auction data.
3. ML-Based Floor Optimization Services
Several ad tech vendors offer machine learning-based floor optimization as a managed service. These include:
- Dedicated floor optimization platforms that plug into your GAM or Prebid setup
- SSP-provided optimization tools that adjust floors within their own auctions
- Full-stack monetization partners (like Yolla) that manage floors as part of a comprehensive yield strategy
The advantage of ML-based solutions: they handle the complexity of multi-variable optimization automatically. You do not need to manage 600 rules or build your own data pipeline. The system learns your inventory's dynamics and adjusts continuously.
The disadvantage: you are trusting the optimization to a third party. Make sure you retain visibility into what floors are being set and the ability to override when needed.
Gaming-Specific Floor Strategies
Your gaming site has unique characteristics that should shape your floor pricing approach:
Different Floors for Different Game Pages
Your top 10 game pages probably generate a large share of your traffic. These pages have high demand and high clearing prices. Set higher floors on these pages: you have the demand to support it.
Your long-tail pages (hundreds of games with modest traffic each) have lower demand. Set lower floors here to maximize fill rate and capture whatever revenue is available.
Floors by Device Type
Many gaming sites now get more mobile traffic than desktop, and desktop CPMs often run higher. Your floors should reflect this. Illustrative starting points, to refine against your own bid data:
- Desktop floors: about 30% higher than your baseline
- Mobile floors: baseline or 10% below
- Tablet floors: 10–20% above mobile
Floors by Session Depth
A user on their fifth game play in a session is a more valuable impression than a bounce visitor. If your ad server supports session-depth targeting, consider higher floors for deep-session users: advertisers will pay more for engaged audiences.
Floors for Video vs Display
If you run both video and display formats, your video floors should be several times your display floors. Outstream video typically clears $8–15 CPM, while standard display typically clears $2–6. Illustrative US ranges from our experience; your rates depend on geography, format and season. Applying a display floor to video inventory leaves substantial revenue on the table.
What to Expect
What changes when you move from static to dynamic floors follows directly from the mechanism:
- Higher CPMs on high-demand impressions, where floors rise and push bids up
- Higher fill on low-demand impressions, where floors fall and bids your static floor used to block now clear
- A blended CPM that can move either way, because you are now selling more low-priced impressions alongside higher-priced ones
- Some fill-rate swings early on, while the system learns where floors are set too high
The revenue gain comes from those first two effects together: (1) pushing bids up on high-demand impressions where you were leaving money on the table, and (2) accepting bids on low-demand impressions where your static floor was blocking viable bids. How large the gain is depends on how far your static floors were from the market. Judge it on total revenue and revenue per session, not on average CPM.
Start Optimizing
If you are running static floors or no floors at all, you are almost certainly leaving programmatic revenue on the table, and on a site with meaningful traffic it adds up fast. Start with geo and device rules, move them into the Prebid floor module, and then decide whether to build or buy the dynamic layer. For the other configuration settings that interact with floors, read why header bidding configuration matters more than partners, or see publisher results from gaming sites we work with.
Ready to see what managed monetization can do for your gaming site?
Get a Revenue EstimateRelated articles
A/B Testing Your Ad Setup: What to Test and How to Measure
What to A/B test in your gaming site's ad setup, how to run valid experiments, and the mistakes that invalidate your results.
Yen WangSVP, Tech & Operations
10 min read
Seasonal Ad Revenue Patterns: Monthly Planning Guide
Ad revenue follows predictable seasonal patterns. A month-by-month guide for gaming publishers to plan content, reserves, and site changes around the cycle.
Christian DobishDirector, Publisher Success
10 min read
Direct Deals vs Programmatic for Gaming Publishers
When to pursue direct deals with gaming-endemic advertisers and when to rely on programmatic, and how to layer both for the best yield.
Christian DobishDirector, Publisher Success
9 min read