Real Time Bidding differences for Programmatic Guaranteed Deals


A Programatic Guaranteed (PG) deal is a fixed number of impressions the buyer has committed to purchasing. CPM, ad sizes, and start / end date for the deal are all fixed. 

The buyer must bid sufficiently to meet the impression goal agreed upon in the deal terms. The number of deal callouts may be less than the number of ad requests from the publisher if the bidder is not optimally setup.  Quota and error based throttling for PG callouts are enforced. A buyer hitting either of these throttles will see less than 100% of ad requests as callouts.

A callout may include more than one PG deal ID. When this happens, a bidder is expected to respond with a bid for each deal ID. If more than 5 deal IDs are in the callout, the bidder may choose any 5 to bid on, but they should try to respond to as many deal IDs as possible to ensure an accepted bid.

Learn more about the Real-Time Bidding Protocol


  1. Contact your support representative to enable Programatic Guaranteed
  2. Bidders must turn on the option to always include Guaranteed deals in their pretargeting settings (in the Authorized Buyers user interface).
  3. We recommend bidders to create a separate ad group configured to always match PG deal traffic.

Additional Real Time Bidding fields for Programatic Guaranteed

  • direct_deal_id 
    • Consistent with PA/PD, every PG deal is addressed by a deal id.
  • deal_type 
  • Fixed_cpm_micros 
    • Represents the deal terms CPM that was agreed by both parties. At this time, we ignore the bid price (in the response) in the auction and always clear the bid at the deal terms CPM. 
  • Publisher_blocks_overridden 
    • This value will be always set be true for PG deals. Consistent with PA/PD, this setting overrides publisher blocking setting but not override AdX policies or Ad Review Center decisions.
  • must_bid
    • While buyers must meet the impression goal on the PG deal, buyers don’t always have to bid on every call out. This allows buyers to layer optimization on their end which is not possible to set as targeting in the deal terms (e.g. global frequency capping across multiple programmatic buys including PG).

      To help buyers determine when they pass on callouts or bids to meet PG goals, a signal is exposed that will let the buyer know if the deal is pacing towards its goals or not. If the deal is pacing towards its goals (value = false) the buyer can choose not to bid. If the deal isn’t pacing towards its goals (value = true) the buyer must bid.

    • Buyers must reply to 5 must_bid deals (must reply to up to 5 must_bid=1 deals)

All other RTB fields (e.g. ad slot size, creative attributes etc.,) remain the same for Programatic Guaranteed.


For OpenRTB, programmatic guaranteed deals use the OpenRTB standard PMP object.

For example:

pmp {
   deals {
     id: "364236728761843960"
     bidfloor: 16.64
     bidfloorcur: "USD"
     at: 3
​ }

  • is the same as direct_deal_id

  • Deals.bidfloor is the same as fixed_cpm_micros (with bidfloorcur indicating the currency)

  • indicates the “auction type”. PG/PD will always be set to 3 for “fixed price”.

  • DealExt.must_bid is the same as must_bid.

Additions to MatchingAdData in the bid request

Additions to the bid request are highlighted below:

// Information about the pre-targeting configs that matched.
message MatchingAdData {

// Information about any deals that matched for this inventory.
message DirectDeal {
// An id identifying the deal.
optional int64 direct_deal_id = 1 [
(datapol.semantic_type) = ST_PUBLISHER_ID

// The fixed CPM deal that applies to your account for this adslot. If
// you choose to bid on this impression, then you must bid at least the
// value of fixed_cpm_micros, and if you win, you will always be charged
// fixed_cpm_micros. The value is in micros of your account currency.
// For example, if the fixed cpm is 1290000 (1.29 in your account
// currency), then you need to bid at least this amount. If you win, you
// will be charged a CPM of 1.29 in your account currency.
optional int64 fixed_cpm_micros = 2;

// The type of the deal.
enum DealType {

optional DealType deal_type = 3 [default = UNKNOWN_DEAL_TYPE];

// Whether the publisher has exempted this deal from configured blocks.
// This setting does not override AdX policies or Ad Review Center
// decisions.
optional bool publisher_blocks_overridden = 4 [default = false];

Negotiate deals

  • Deals can be negotiated via the Authorized Buyers user interface. Learn more 
    • Search for transaction type "Programatic guaranteed" in the search box of the Discover tab in Authorized Buyers Marketplace.
  • Deals can also be negotiated via the AdX Buyer REST API v2

Finalize deals with setup complete 

Once a deal proposal is finalized, you can choose to upload creatives and associate them to the deal (using the Buyer REST API v1.4).

  • This is done using the addDeal method in the Rest API
Was this helpful?
How can we improve it?

Need more help?

Sign in for additional support options to quickly solve your issue