What kind of change?
Add a field
Which section?
5.6 — Commercial terms
Field(s) involved
pricing[] (new OPTIONAL key guidance)
Current text
pricing[] entries carry gross_rate and an OPTIONAL seller-set floor ("the seller's offer floor: the lowest rate it will consider at proposal time", per #16 / PR #18). Nothing describes where the line item actually transacts.
Proposed text
Add an OPTIONAL, seller-set pricing[].guidance object alongside floor:
pricing: [{
gross_rate, floor?,
guidance?: { p25, p50, p75, p90 } # same units and currency as gross_rate
}]
Semantics: the seller's own observed transacting prices for this line item over a seller-chosen trailing window, expressed as percentiles. Like addressable_scale (§ 3.3), guidance is recomputed against the buyer's current selection when the seller can (e.g. per selected geo once #14 part 1 lands), and otherwise describes the line item as offered. It is informational: it creates no obligation and is not an offer.
Suggested field description: "OPTIONAL. Seller-published percentiles of the rates at which this line item has recently transacted, in the units of gross_rate. Informational only; a counter at or above floor is evaluated on its own terms regardless of guidance."
Why
floor tells a buyer the lowest rate the seller will consider; it does not tell the buyer whether a rate above the floor will clear once the line item is live. For exchange-sold inventory those two numbers can be an order of magnitude apart, and they move with the buyer's selection (see the Indonesia / Malaysia example in #14). Without guidance the buyer either overpays to be safe or commits at a rate that cannot clear — the same failure floor exists to prevent, one step later.
We publish exactly this on our own catalog today (per-geo p25/p50/p75/p90 next to the floor). It was added after a buyer agent committed a worldwide rate into a market where nothing clears at it; the buyer side asked for it, and it removed that failure mode.
On the concern raised in #14 about publishing clearing distributions: guidance is the same class of disclosure as floor — each seller's own numbers, published unilaterally and optionally, with nothing shared between sellers and nothing a seller is required to publish. A seller that does not want to publish simply omits the key. We'd welcome the working group confirming that reading under the GOVERNANCE.md note.
Knock-on effects
- § 2.1 summary representation: unchanged (
gross_rate only); guidance belongs to the full representation.
- § 3.3: if
guidance is recomputed against the selection, it joins addressable_scale in the list of selection-dependent seller-computed fields.
- Appendix A: one optional key under
pricing[].
- No downstream change: the agreed rate, not the guidance, is what the Deals API line carries.
Would this break an implementation already built to this draft?
No — additive and optional.
Alternatives you considered and rejected
- A single
expected_rate number: hides the spread, which is the information a buyer needs to size a counter.
- Publishing only
floor and letting the buyer discover clearing behaviour in flight: that is the failure this prevents.
- Free-text pricing notes in
content_detail: not machine-evaluable.
Concrete scenario
Buyer brief targets ID + MY. The seller's shelf lists the placement at worldwide gross_rate: 1.20, floor: 0.70; with #14 part 1 the ID/MY selection carries a geo delta, and guidance for that selection reads { p25: 14.0, p50: 21.0, p75: 27.0, p90: 32.0 }. The buyer's agent now sizes its counter against where the line item actually transacts for its selection, instead of against a worldwide floor that cannot clear there.
You are commenting as
SSP — an in-app supply-side exchange (mobile + CTV) selling preferred-deal / private-auction / open-market inventory to buyer agents; we run the seller side today.
Before you submit
What kind of change?
Add a field
Which section?
5.6 — Commercial terms
Field(s) involved
pricing[](new OPTIONAL keyguidance)Current text
pricing[]entries carrygross_rateand an OPTIONAL seller-setfloor("the seller's offer floor: the lowest rate it will consider at proposal time", per #16 / PR #18). Nothing describes where the line item actually transacts.Proposed text
Add an OPTIONAL, seller-set
pricing[].guidanceobject alongsidefloor:Semantics: the seller's own observed transacting prices for this line item over a seller-chosen trailing window, expressed as percentiles. Like
addressable_scale(§ 3.3),guidanceis recomputed against the buyer's current selection when the seller can (e.g. per selectedgeoonce #14 part 1 lands), and otherwise describes the line item as offered. It is informational: it creates no obligation and is not an offer.Suggested field description: "OPTIONAL. Seller-published percentiles of the rates at which this line item has recently transacted, in the units of
gross_rate. Informational only; a counter at or aboveflooris evaluated on its own terms regardless ofguidance."Why
floortells a buyer the lowest rate the seller will consider; it does not tell the buyer whether a rate above the floor will clear once the line item is live. For exchange-sold inventory those two numbers can be an order of magnitude apart, and they move with the buyer's selection (see the Indonesia / Malaysia example in #14). Without guidance the buyer either overpays to be safe or commits at a rate that cannot clear — the same failurefloorexists to prevent, one step later.We publish exactly this on our own catalog today (per-geo p25/p50/p75/p90 next to the floor). It was added after a buyer agent committed a worldwide rate into a market where nothing clears at it; the buyer side asked for it, and it removed that failure mode.
On the concern raised in #14 about publishing clearing distributions:
guidanceis the same class of disclosure asfloor— each seller's own numbers, published unilaterally and optionally, with nothing shared between sellers and nothing a seller is required to publish. A seller that does not want to publish simply omits the key. We'd welcome the working group confirming that reading under theGOVERNANCE.mdnote.Knock-on effects
gross_rateonly);guidancebelongs to the full representation.guidanceis recomputed against the selection, it joinsaddressable_scalein the list of selection-dependent seller-computed fields.pricing[].Would this break an implementation already built to this draft?
No — additive and optional.
Alternatives you considered and rejected
expected_ratenumber: hides the spread, which is the information a buyer needs to size a counter.floorand letting the buyer discover clearing behaviour in flight: that is the failure this prevents.content_detail: not machine-evaluable.Concrete scenario
Buyer brief targets ID + MY. The seller's shelf lists the placement at worldwide
gross_rate: 1.20,floor: 0.70; with #14 part 1 the ID/MY selection carries a geo delta, andguidancefor that selection reads{ p25: 14.0, p50: 21.0, p75: 27.0, p90: 32.0 }. The buyer's agent now sizes its counter against where the line item actually transacts for its selection, instead of against a worldwide floor that cannot clear there.You are commenting as
SSP — an in-app supply-side exchange (mobile + CTV) selling preferred-deal / private-auction / open-market inventory to buyer agents; we run the seller side today.
Before you submit