Migrating pricing
AdCP 3.0 renames pricing fields for clarity and separates hard constraints (prices the publisher enforces) from soft hints (historical data to help buyers bid).What changed
| v2 field | v3 field | Change type |
|---|---|---|
fixed_rate | fixed_price | Renamed |
price_guidance.floor | floor_price | Moved to top level |
pricing_model, currency, pricing_option_id, and price_guidance percentiles (p25, p50, p75, p90) are unchanged.
Hard constraints vs soft hints
v3 makes an explicit semantic distinction: Hard constraints — publisher-enforced prices that cause bid rejection if violated:fixed_price— the exact price per unit (fixed-price deals)floor_price— minimum acceptable bid (auction pricing)
fixed_price (guaranteed rate) or floor_price (auction with minimum), never both.
Soft hints — historical percentiles to help buyers calibrate bids:
price_guidance.p25— 25th percentile of recent winning bidsprice_guidance.p50— median of recent winning bidsprice_guidance.p75— 75th percentile of recent winning bidsprice_guidance.p90— 90th percentile of recent winning bids
Deal type mapping
These fields map to standard programmatic deal types:| Deal type | AdCP field | Description |
|---|---|---|
| Programmatic Guaranteed (PG) | fixed_price | Fixed CPM, guaranteed delivery |
| Preferred Deal | fixed_price | Fixed CPM, non-guaranteed (buyer has first look) |
| Private Marketplace (PMP) | floor_price | Auction with minimum bid |
| Open Auction | Neither | No floor or fixed price — open bidding |
fixed_price. The distinction between them is in delivery commitment, not pricing — PG guarantees delivery volume while Preferred Deals offer first-look access without volume guarantees.
Fixed-price deals
v2:fixed_rate to fixed_price. No structural changes.
Auction pricing
v2:price_guidance.floormoves to top-levelfloor_priceprice_guidanceretains only the percentile hints
Price guidance object
The v3price_guidance object contains only statistical percentiles:
Flat-rate pricing
v2 (DOOH with parameters, no type discriminator):fixed_raterenames tofixed_price(same as other pricing models)parametersgains a required"type": "dooh"discriminator for DOOH inventory
parameters in v2 continue to omit it in v3. Note that fixed_price is optional on flat-rate options — when absent, the flat-rate is auction-based (uncommon but valid for some DOOH inventory).
Minimum spend
v3 adds an optionalmin_spend_per_package field to all pricing options:
Transition period handling
During migration, readers may encounter both old and new field names. Consider checking for both:test=false
fixed_rate, price_guidance.floor) are not recognized by v3 schema validation. Remove the v2 fallback once all upstream sellers have migrated to v3 schemas.
Migration steps
Update readers
Update code to look for new field names. Consider temporary fallback for both during transition.
Media products
How products declare pricing options, channels, and capabilities.
Related: Channels | Geo targeting | Creatives | Catalogs | Attribution | AdCP 3.0 overview