Mastering AdX Price Rules: Dynamic Pricing Strategies for 2026
For over six years, every floor price in Google Ad Manager applied to every buyer identically. That constraint ended on December 17, 2025, when Google removed unified pricing rules under antitrust pressure: a publisher can now require one buyer to bid at least $5 while every other buyer competes at a $2 floor. Most large accounts still carry pricing architecture built for the equal-treatment constraint, and rebuilding it is the most direct revenue work available in an AdX account this year.
This piece walks the mechanics in order: what the 2019 first-price switch did to floor logic, what the December 2025 removal of unified pricing rules gives back, how target CPM and optimized floors differ from static floors, where Prebid granularity decides whether a floor binds at all, and the operating sequence we run across Google Ad Manager, AdX and MCM inventory.
The 2019 switch ended second-price floor logic
In 2019 Google moved Ad Manager to a unified first-price auction and replaced the legacy second-price AdX price rules with unified pricing rules, with an initial limit of 100 rules per network. Google's 2019 auction announcement states the consequence plainly: the old rules applied only to the second-price auction and stopped working, and floor strategies built to influence the second-price closing stopped being relevant.
Under second-price logic, a floor mostly moved the clearing price. A floor sitting between the first and second bids raised what the winner paid, so publishers tuned floors to squeeze the spread between the top two bids, and small floor changes moved closing prices at once. First-price logic ends that. The winner pays their own bid, so a floor cannot nudge the price upward; it can only reject. Bids below the floor lose, bids above it clear at the bid level, and the closing price stays pinned to the winner's number regardless of the floor.
Floor strategy therefore shifted from price squeezing to demand shaping. A first-price floor earns revenue by rejecting underpriced wins until the buyer's bid-shading model reprices your inventory across later requests. The payoff arrives after the rejections, not inside the same auction, so floor tests deserve multi-week windows rather than daily verdicts.
Unified pricing rules also brought their own discipline. Rules keyed to inventory segments such as ad units and geographies, under an initial budget of 100 per network, forced publishers to decide which segments deserved a rule at all. That allocation problem produced a generation of pricing setups built around broad segments, because fine-grained coverage was impossible, and broad segments produce average floors.
The second half of the 2019 change mattered just as much: unified pricing rules applied floors to all partners equally, and you could not set a floor for an individual buying platform. From 2019 until December 2025, the only per-buyer pricing levers lived outside Ad Manager, in Prebid bid adjustments and in floor checks that run before the request leaves your page. Six years of muscle memory formed around that constraint, and most accounts still show it.
December 2025: bidder-specific floors return
The shift landed on December 17, 2025, when Search Engine Land's December 2025 report confirmed that Google removed unified pricing rules after antitrust pressure and rebranded them as simply pricing rules. The backdrop: a 2.95 billion euro ($3.45 billion) European Commission fine, plus US antitrust findings. The mechanism matters more than the naming: publishers can now set bidder-specific floor prices.
The example from the report gives the right mental model: one buyer required to bid at least $5 while the others compete at a $2 floor. Under unified rules you faced two bad options. Floor everyone at $5, and every $2 to $4 bid dies along with the target buyer's shaded bids. Floor everyone at $2, and the underpriced winner keeps clearing at $2 and change. Pricing rules now split the cases: apply pressure to the buyer whose shading costs you money, and keep the rest of the pool open.
Price a bidder-specific floor against the runner-up cluster, not against the target buyer's current bids. If the floored buyer reprices, you collect the difference between the new bid and the old clearing level. If they walk, the runner-up clears near the floor anyway, so the downside stays bounded by the spread between the old clearing price and the floor. A floor set far above the runner-up cluster lacks that protection: a walk-away leaves the impression clearing far below the floor, or not at all.
Treat the floor as a negotiation rather than a trap. The buyer observes the rejections, and their shading model responds across subsequent requests. Buyers also monitor clearing prices per supply path, so a repricing conversation will reference your floor directly. Document the reasoning per rule, and the number survives the conversation.
One architectural caution: the initial 2019 cap of 100 rules per network predates the rebrand, so confirm the current limit in your own account before designing a matrix of buyer-specific rules. Ad Manager resolves conflicting rules by specificity. Encode inventory, buyer and price in every rule name, or you will ship floors nobody can attribute six months later.
Static floors, target CPM rules, optimized floors
A static floor sends one instruction on every request: bids below the number lose. The official target CPM mechanics describe a different instrument. A target CPM rule sets a dynamic floor instead of a static one: Ad Manager sets floor prices on individual bid requests, sometimes higher and sometimes lower than the indicated target, aiming for an average CPM equal to or greater than the target.
The scope matches the inventory where floors do the most work. Target CPM rules apply to non-guaranteed demand: Authorized Buyers, exchanges competing through Open Bidding, and remnant line items. Guaranteed inventory prices by insertion order, so the dynamic floor owns exactly the part of the stack that sells by auction.
Use target CPM where demand moves. A static floor tuned to protect weekday peak over-rejects overnight and weekend traffic. The dynamic version raises the threshold when competition strengthens and lowers it when the pool thins, trading some cheap clears for sustained fill. Judge the rule on its own terms: it intentionally loses auctions below target, so audit the achieved average CPM against the target, plus fill rate and segment revenue, across full weekly cycles rather than single days.
Static floors still win where demand behaves predictably. High-fill segments with a known bid distribution deserve an auditable number, and a static threshold also protects direct deals cleanly, since the sales team can quote it and it stays put.
Optimized floor prices, currently in Beta, sit one step further out. This per-rule option has Google's machine learning model optimize the floor price to maximize long-term revenue, with no target to name and no threshold to audit. You state an objective and accept the model's per-request decisions. Deploy it on high-volume segments where the model has enough data to learn, and keep static or target CPM rules on thin segments, where a model reading a trickle of requests mostly adds noise.
Three rule types answer three questions. A static floor answers: what is this inventory worth at minimum. A target CPM rule answers: what average price should this segment hold. An optimized floor answers: what maximizes long-term revenue, on the model's judgment. Bidder-specific floors answer a fourth question the other three could never address: which buyer needs a different number.

Floors price, curation decides what competes
A floor judges price, not quality. Made-for-advertising inventory clears high floors without complaint, and a $5 floor on it makes a bad impression expensive rather than absent. Filtering has to happen before pricing, which is why a curation layer sits in front of our auction: managed floors, demand mapping, whitelists, pre-bid brand safety filtering and MFA filtering aligned with the IAB Content Taxonomy.
The auction then ranks bids by expected value: first price with bid shading, reserve prices, goal-based pacing. The auction mechanics and expected-value ranking matter for floors because a floor and a reserve are both rejection thresholds, and the curation layer decides which demand ever faces them. Pricing without curation ships junk at higher prices; curation without pricing leaves money with buyers who would have paid more.
At OnlyMedia we run Google Ad Manager, AdX and MCM for thousands of publishers, each above one million monthly pageviews, so a change like the December 2025 removal lands on live inventory at once: every account carries floors written under the equal-treatment constraint, and each one deserves re-derivation from current bid data.
Supply side, that stack runs as one unified auction per impression: AdX via MCM, Prebid header and server-side demand through OpenRTB 2.6 seats, all facing the same managed floors. The interesting part of 2026 is that price discrimination per buyer now also lives inside the Google auction, not only in front of it.
Prebid granularity decides whether floors bind
Header bids never reach the ad server at their exact value. Prebid price granularity rounds header bids down into buckets, and rounding affects only the ad server auction, not the price paid: a buyer who bids $2.45 and wins still pays $2.45 even when the bid competed inside the ad server as $2.00.
The default tiers define the resolution:
- Low: $0.50 increments, capped at $5, 11 line items per bidder
- Medium: $0.10 increments, capped at $20, 201 line items
- High: $0.01 increments, capped at $20, 2001 line items
- Dense: a sliding scale with 425 line items total

Granularity decides whether a floor binds where you place it. On low granularity, a $2.10 floor sits inside the gap between the $2.00 and $2.50 buckets. A $2.45 header bid rounds down to $2.00, loses to the floor, and pays nothing, even though the raw offer cleared the price. Set floors on bucket boundaries, or run a grid finer than the increments you test: medium granularity puts floors and buckets on the same $0.10 lattice, and high granularity exists for cent-level price points.
Match the grid to the test matrix before you pick numbers. If you test floors at dime steps, medium granularity aligns every candidate price with a bucket boundary. If you test cent steps, high granularity costs 2001 line items per bidder, and dense spreads its 425 line items across a sliding scale rather than a single increment.
Resolution costs setup. Every bucket is a line item, and buckets multiply across bidders and sizes: 201 line items per bidder becomes thousands across a full Prebid roster. Bidder-specific floors raise the stakes, because one buyer's $5 floor and another buyer's $2 floor must both land on the same grid cleanly, or one sits in a dead zone and rejects bids that already met the price.
A 2026 operating sequence
The December 2025 change turns pricing into a per-buyer negotiation, and negotiations need instrumentation. Rebuild in this order.
- Audit the rule set. Export every pricing rule and map it to the inventory it touches. Delete rules that survive because nobody removed them, then re-derive each floor from current bid data instead of carrying 2019 or 2023 numbers forward.
- Hold a baseline. Run the current setup untouched across weekday and weekend demand before any change, or every later lift claim reduces to a guess.
- Segment by value. Cut by ad unit, geography, device and buyer, and rebuild the segments that carry the most impressions and revenue first.
- Match rule type to demand pattern. Stable segments get static floors. Volatile segments get target CPM rules. High-volume segments where you accept model control get optimized floor prices. A single buyer with heavy shading gets a bidder-specific floor.
- Price bidder-specific floors against the runner-up cluster, so a walk-away clears near the floor and a repricing pays the spread.
- Guardrail the test. Track fill rate, average CPM for the affected buyer, total segment revenue, and spillover: demand the floored buyer loses should flow to the rest of the pool, not to house lines.
- Change one variable at a time. Two simultaneous changes on one segment make attribution impossible.
Attribution discipline decides the cadence. Split tests across geographies where you can: hold one region at the old floor while another runs the new one, and compare like-for-like demand rather than week-over-week totals. Where geography does not split cleanly, give time-based tests longer windows, because buyer shading models adjust to rejections gradually.
Iteration speed depends on two factors outside the auction: how fast revenue reports back, and how fast you get paid. We pay Net 30, CPM based, and the publisher monetization and reporting side of our stack includes a ten minute reporting console, so a floor test settles inside one payment cycle instead of dissolving into quarterly adjustments. Pricing also earns only on demand worth shipping: our curated programmatic demand network pairs pre-bid filtering discipline with Net 30 payouts for publishers above one million monthly pageviews.
Failure modes that cost real money
Six patterns account for most mispriced AdX inventory. Check your setup against all of them before blaming the market.
- Second-price muscle memory. Expecting a floor to move the clearing price inside the same auction wastes the mechanism: first-price floors reject, and the repricing shows up later in the buyer's shading model.
- Blanket floors. One buyer clears cheaply, so the whole network gets the $5 treatment and the $2 to $4 pool dies with it. The December 2025 change exists to solve this per buyer, so stop solving it globally.
- Dead-zone floors. A floor set between bucket boundaries rejects header bids that already met the price. Check the granularity math before the price.
- Static floors on volatile demand. A number tuned for peak hours over-rejects off-peak inventory, while a target CPM rule moves the threshold with the pool.
- Floors posing as quality filters. MFA inventory clears high floors happily, so filter it pre-bid, aligned with the IAB Content Taxonomy, before any price conversation. We filter it at the curation layer, not with a price tag.
- Rule sprawl. Conflicting rules resolve by specificity, so undocumented floors compound quietly until nobody can attribute a revenue move to a cause.
Bidder-specific floors convert pricing from a network-wide compromise into a per-buyer conversation, and the spread between what a buyer pays and what the runner-up would have paid is the prize. The auction itself has run first-price since 2019; the tooling caught up in December 2025. Audit the rules, price against the runner-up cluster, respect the bucket grid, and let measurement, not habit, set the number.