Yield

The floor you set is a bid you refuse

A price floor is not a safety net. In a first-price auction it is an instruction you hand to every bid-shading algorithm buying your inventory — and most publishers still write it once a quarter and then forget it.

APH Yield Desk ·7 min read Share Print
In this piece

    Every publisher I talk to has price floors. Almost none of them can tell me when the numbers were last changed, or what question the numbers were an answer to.

    The floor was set during an integration, it looked defensible, and it has been sitting there ever since — collecting nothing, because a floor does not collect. It refuses.

    That distinction matters more than it used to. When Google Ad Manager completed its move to a unified first-price auction through 2019, it changed what a floor is. Under second-price rules a floor was mostly a guard rail: bid what you like, you will pay one cent over the runner-up, and the floor only bites at the bottom of the distribution. Under first-price rules the winner pays exactly what it bid — so every buyer now has to guess how little it can offer and still win. Your floor is the single most useful clue you give them.

    Exhibit 1 · modelled Revenue does not rise with the floor. It peaks, then falls off a cliff. Indexed revenue against floor price for a single placement, where fill decays as the floor passes what demand will pay.
    FILL RATE REVENUE $2.07 · PEAK $2.31 · −7% $2.55 · −31% $1.20 FLOOR PRICE $3.60 0 MAX
    Revenue Fill rate Sold too cheaply Refused outright
    Illustrative model on a hypothetical placement, not measured APH results. The shape is the point, not the values.

    01What a floor actually does

    A price floor is the lowest price you will accept for an impression. Said that way it sounds protective, and that framing is where the money goes missing. Turn it around: a floor is a standing instruction to reject every bid beneath a number you chose in advance, without seeing the bids.

    On the other side of that instruction sits bid shading. Demand-side platforms run shading algorithms precisely because first-price auctions punish overbidding: the algorithm's job is to find the lowest price that still wins, and it will use whatever signal it can get about where that line sits. A published floor is the cleanest signal available. Set one at $2.40 and you have told every shading model in the market that $2.40 clears — which is also a fairly strong hint that it need not offer $3.10.

    A floor does two jobs at once, and they pull in opposite directions. It stops you selling too cheaply, and it caps what the market will bother to offer. Any floor you cannot revisit is only doing the second job.

    02The two ways a floor loses money

    Set it too low and you sell inventory below what the auction would have paid. That loss is invisible: the impression cleared, the report looks healthy, and nothing anywhere records the bid you would have received had you asked for more.

    Set it too high and the bid never arrives. The impression goes unfilled, or drops to a lower-paying backfill. That loss is visible — as a fill-rate dip — which is why publishers who get burned once tend to over-correct downward and stay there. The asymmetry is the trap: one failure mode announces itself and the other never does.

    $2.07Modelled optimum floorPeak of the curve
    88%Fill at that floorNot the highest fill
    −7%Revenue at a 10% higher floor$2.31
    −31%Revenue at a 21% higher floor$2.55

    The arithmetic is unforgiving at scale. Take a placement doing 40 million monthly impressions at a $2.10 average CPM:

    Illustrative arithmetic on a single placement. Three of the four rows land within a few thousand dollars of one another — and nothing on the surface of a standard report tells you which one you are living in.
    ScenarioCPMFillMonthly revenuevs baseline
    Baseline$2.1092%$77,280
    Floor raised, demand absorbs it$2.3192%$85,008+10.0%
    Floor raised, demand walks$2.3181%$74,844−3.2%
    Floor lowered to protect fill$1.9596%$74,880−3.1%

    You cannot reason your way to the answer. The inventory has to tell you, repeatedly.

    03Why one number cannot fit

    The deeper problem is not that the floor is stale. It is that a single number is being asked to describe inventory that is not uniform. The same ad slot, in the same week, carries impressions worth wildly different amounts — and the tooling already assumes you know that.

    Exhibit 2 · sourced Six things a floor is allowed to know. Dimensions available to the Prebid Price Floors module — five configured out of the box, plus anything you can read at auction time.
    AD UNIT DEFAULT GPT SLOT DEFAULT MEDIA TYPE DEFAULT AD SIZE DEFAULT DOMAIN DEFAULT CUSTOM DIMENSION FUNCTION device type · geography · session position · consent state · time of day — anything you can read at auction time FIVE PRE-CONFIGURED DIMENSIONS
    Source: Prebid Price Floors module documentation. The framework assumes segmentation; most implementations of it use a single value.

    Geography, device, format, time of day, session position and consent state all move the clearing price of the same slot. A quarterly number cannot see any of it.

    04What a moving floor looks like

    The alternative is not a cleverer constant. It is a floor recomputed from the auction's own history, per segment, on a schedule short enough to track demand rather than trail it. Prebid supports this directly: with dynamic floors enabled, the library fetches floor data from a provider endpoint at auction time instead of reading a static config.

    Exhibit 3 · schematic The market moves every day. A quarterly floor moves four times a year. A clearing price that drifts, against a static floor and a floor repriced every four days.
    DAY 1 DAY 28 MEAN GAP TO THE CLEARING PRICE — STATIC $0.29 · DYNAMIC $0.18
    Market clearing price Static floor Repriced every 4 days
    Schematic, not measured data. In this model the repriced floor closes about 36% of the gap — the honest claim is the direction, not the figure.

    What matters is what sits behind that endpoint. A floor engine worth running has to do three unglamorous things well:

    1. Segment honestly. Slice until the segments are behaviourally different, then stop. Over-segmentation starves each bucket of the data it needs to be right.
    2. Keep a control group. If some share of traffic is not being optimised, you have no counterfactual, and every uplift number you report is a story rather than a measurement.
    3. Respond, then wait. A floor that chases every hourly wobble teaches the shading models on the other side that your prices are noise.

    Dynamic flooring is not free money, and anyone selling it that way is selling something else. It is a measurement discipline. The gain comes from finding the price the market was already willing to pay and no longer refusing it.

    05How to tell whether yours are costing you

    06Where we land

    We built Archon Cortex because this is arithmetic nobody has time to do by hand, at a frequency no human schedule survives. It reprices floors per segment against the auction's own history, and holds back a control group so the number it reports is a measurement rather than a claim. That is the whole pitch.

    If your floors have not moved this quarter, the first useful thing is not our product — it is opening the report and finding out how many distinct floor values you are actually running. If you would like us to do that with you, the free yield audit starts exactly there.

    Sources

    1. AdExchanger — Google Switches To First-Price Auction
    2. DoubleVerify — What Google's Move to a Unified First-Price Auction Means for Publishers
    3. Prebid — Price Floors module (dimensions, dynamic provider endpoint)
    4. Prebid Server — Price Floors for header bidding
    5. Publift — A guide to bid shading
    The weekly

    One letter a week, from the desk that runs the auctions.

    What actually moved in yield, CTV and curation across our publishers — written by the people who saw it, not a content team. No digests, no roundups, one email.

    One email a week. Unsubscribe in one click. We never share or sell the list.

    Keep reading

    Three more from the yield desk.