Forecast deal terms

As a selling party, you can run a forecast to predict how your inventory influences the likelihood of a deal being accepted. To provide insights into the metrics behind what the buying party is looking for, a forecast compares your inventory terms with what's available outside of your deal. A deal forecast predicts performance metrics such as deal quality score, CPM range, expected daily avails, and bid win rate. Running a forecast improves acceptance and performance and gives you insight so you can adjust the deal terms accordingly before sending it.

IMPORTANT: This page focuses on predictive forecasts for deal proposals. To forecast using data from live deals, see Deal measurement queries.

Here's what you need to know about predictive deal forecasts:

Forecast inventory

To retrieve forecast metrics for a deal before sending it to the buying party, you must copy the inventoryComposition object into the dealForecast query. Forecasting uses predictive data about the potential performance of a deal based on the inventory composition terms and any contributing deals. Predictive data includes the deal quality score, CPM range, volume, and expected win rates, helping you make data-driven decisions during deal negotiation.

Here's what you must have to query for a deal forecast:

Your account ID assigned during onboarding.
An exact copy of the inventory composition terms used in your deal.

Forecast endeavor inventory

The following example dealForecast query retrieves forecast metrics based on a set of inventory composition terms used in an endeavor deal.

query GetEndeavorDealForecastExample {
  dealForecast(input: {
    accountId: "ACCOUNT_ID_PLACEHOLDER"
    inventoryComposition: {
      endeavorTerms: {
        financialTerms: { currencyCode: "USD" }
        flight: { endAt: "2026-01-30", startAt: "2025-11-30", timeZone: "UTC" }
        inventoryComposition: {
          inventoryChannelComposition: {
            ctvChannel: {
              adEnvironments: {
                base: {
                  excluded: [MOBILE_OPTIMIZED_WEB]
                  included: [IN_APP, WEB]
                }
              }
              ctv: {
                liveStream: {
                  base: true
                }
                startDelay: {
                  base: {
                    excluded: [MID_ROLL]
                    included: [POST_ROLL,PRE_ROLL]
                  }
                }
                podSeq: {
                  base: {
                    excluded: [ANY]
                    included: [FIRST, LAST]
                  }
                }
                slotInPod: {
                  base: {
                    excluded: [ANY]
                    included: [FIRST_OR_LAST]
                  }
                }
              }
              deviceTypes: {
                base: {
                  excluded: [OTHER, OUT_OF_HOME]
                  included: [MOBILE, TABLET]
                }
              }
              channels: {
                base: {
                  excluded: ["CHANNEL_NAME_PLACEHOLDER_1"]
                  included: ["CHANNEL_NAME_PLACEHOLDER_2", "CHANNEL_NAME_PLACEHOLDER_3"]
                }
              }
              networks: {
                base: {
                  excluded: ["NETWORK_NAME_PLACEHOLDER_1"]
                  included: ["NETWORK_NAME_PLACEHOLDER_2"]
                }
              }
            }
          }
        }
      }
    }
    contributingDeals: ["OPTIONAL_CONTRIBUTING_DEAL_ID_PLACEHOLDER"]
    dealMeasurementsReportingType: OVERALL
  }) {
    dealQualityScore
    inventoryChannel
    maxCpm
    minCpm
  }
}

Forecast commitment inventory

The following example dealForecast query retrieves forecast metrics based on a set of terms used in a commitment deal.

TIP: To create a forecast for a deal that includes expanded terms, set dealMeasurementsReportingType to EXPANDED_TERMS.

query GetCommitmentDealForecastExample {
  dealForecast(input: {
    accountId: "ACCOUNT_ID_PLACEHOLDER"
    inventoryComposition: {
      commitmentTerms: {
        contributingDeals: {
          id: "CONTRIBUTING_DEAL_ID_PLACEHOLDER", 
          ownerId: "DEAL_OWNER_KNOWN_AGENT_ID_PLACEHOLDER" }
        cancellationTerms: { threshold: 0.5, period: 3 }
        financialTerms: {
          currencyCode: "USD"
          mediaSpendGoal: 100
          minDailyAvails: 10000
          floorPrice: 1.5
          minWinRate: 0.25
          auctionType: FIRST_PRICE_AUCTION
        }
        expansionTerms: { threshold: 0.5, floorPrice: 1.0, period: 5 }
        flight: { endAt: "2025-11-20T04:59:00.000Z", startAt: "2025-11-05T16:49:30.370Z", timeZone: "UTC" }
        inventoryComposition: {
          biddingTerms: ["IMP_EXT_GPID", "SOURCE_TID", "USER_ID", "AUDIO_PODID", "VIDEO_PODID"]
          systemLanguages: {
            base: {
              excluded: ["12"]
              included: ["11"]
            }
          }
          contentComposition: {
            contentCategories: {
              base: {
                excluded: ["644", "551"]
                included: ["360", "366"]
              }
              expansion: {
                excluded: ["544"]
                included: ["347"]
              }
            }
            genres: {
              base: {
                excluded: ["Law", "Late Night"]
                included: ["Mystery", "Action"]
              }
            }
            contentLanguages: {
              base: {
                excluded: ["12"]
                included: ["11"]
              }
            }
            contentRatings: {
              base: {
                excluded: ["NC-17", "TV-MA", "X", "R 18+"]
                included: ["PG-13", "TV-PG", "R 15+", "FSK-16"]
              }
            }
            series: {
              base: {
                excluded: ["Generic Horror Show"]
                included: ["Generic Music Show"]
              }
            }
            contentKeywords: {
              base: {
                excluded: ["death", "political", "alcohol"]
                included: ["pet", "kids"]
              }
            }
            titles: {
              base: {
                excluded: ["Generic Horror Title"]
                included: ["Generic Music Title"]
              }
            }
          }
          customAttributes:{
            base: {
              excludedValues: ["abcd123"]
              includedValues: ["xyz456"]
              key: "key1"
              section: IMPRESSION
            }
            expansion: {
              excludedValues: ["abcd123"]
              includedValues: ["xyz456"]
              key: "key2"
              section: SITE
            }
          }
          deviceComposition: {
            browsers: {
              base: {
                excluded: ["13"]
                included: ["6"]
              }
            }
            deviceMakes: {
              base: {
                excluded: ["1"]
                included: ["2"]
              }
            }
            mobileCarriers: {
              base: {
                excluded: ["1"]
                included: ["2"]
              }
            }
            operatingSystems: {
              base: {
                excluded: ["6"]
                included: ["5"]
              }
              expansion: {
                included: ["6"]
              }
            }
          }
          # These values are geo segment IDs.
          consumerGeos: {
            base: {
              excluded: ["q5xb319t45"]
              included: ["8t9awngqi4"]
            }
            expansion: {
              included: ["q5xb319t45"]
            }
          }
          publisherCategories: {
            base: {
              excluded: ["644", "551"]
            included: ["360", "366"]
            }
          }
          publisherKeywords: {
            base: {
              excluded: ["drugs"]
              included: ["summer"]
            }
          }
          apps: {
            base: {
              excluded: ["com.bundle.com"]
              included: ["123456789"]
            }
          }
          placementIds: {
            base: {
              excluded: ["/1111/homepage#div-rightnav#2"]
              included: ["/1111/homepage#div-leftnav"]
            }
          }
          publisherIds: {
            base: {
              excluded: ["BLOCKED_PUBLISHER_KAID_PLACEHOLDER"]
              included: ["ALLOWED_PUBLISHER_KAID_PLACEHOLDER"]
            }
          }
          sellerIds: {
            base: {
              excluded: ["BLOCKED_SELLER_KAID_PLACEHOLDER"]
              included: ["ALLOWED_SELLER_KAID_PLACEHOLDER"]
            }
          }
          sites: {
            base: {
              excluded: ["finance.example.com"]
              included: ["example.com"]
            }
          }
          inventoryChannelComposition: {
            ctvChannel: {
              adEnvironments: {
                base: {
                  excluded: [MOBILE_OPTIMIZED_WEB]
                  included: [IN_APP, WEB]
                }
              }
              ctv: {
                liveStream: {
                  base: true
                }
                startDelay: {
                  base: {
                    excluded: [MID_ROLL]
                    included: [POST_ROLL,PRE_ROLL]
                  }
                }
                podSeq: {
                  base: {
                    excluded: [ANY]
                    included: [FIRST, LAST]
                  }
                }
                slotInPod: {
                  base: {
                    excluded: [ANY]
                    included: [FIRST_OR_LAST]
                  }
                }
              }
              deviceTypes: {
                base: {
                  excluded: [OTHER, OUT_OF_HOME]
                  included: [MOBILE, TABLET]
                }
              }
              channels: {
                base: {
                  excluded: ["CHANNEL_NAME_PLACEHOLDER_1"]
                  included: ["CHANNEL_NAME_PLACEHOLDER_2", "CHANNEL_NAME_PLACEHOLDER_3"]
                }
              }
              networks: {
                base: {
                  excluded: ["NETWORK_NAME_PLACEHOLDER_1"]
                  included: ["NETWORK_NAME_PLACEHOLDER_2"]
                }
              }              
            }
          }
        }
      }
    }
    contributingDeals: ["OPTIONAL_CONTRIBUTING_DEAL_ID_PLACEHOLDER"]
    dealMeasurementsReportingType: BASE_TERMS
  }) {
    dealQualityScore
    inventoryChannel
    maxCpm
    maxDailyAvails
    maxWinRatePercent
    minCpm
    minDailyAvails
    minWinRatePercent
  }
}

Forecast deal results

The following table shows the results of running the deal forecast, with metrics for estimated financial terms and deal metrics.

Field Data Type Description
dealQualityScore Decimal A score from 0–100 that reflects how the deal compares to similar inventory available in the marketplace. For details, see Deal quality score.
inventoryChannel Object The inventory channel associated with the deal, such as display, video, or CTV.
maxCpm Decimal The maximum estimated CPM for the deal's inventory.
maxDailyAvails Integer The maximum estimated number of daily available impressions for the deal.
maxWinRatePercent Decimal The maximum estimated win rate percentage for bids placed on this deal's inventory.
minCpm Decimal The minimum estimated CPM for the deal's inventory.
minDailyAvails Integer The minimum estimated number of daily available impressions for the deal.
minWinRatePercent Decimal The minimum estimated win rate percentage for bids placed on this deal's inventory.

Deal quality score

When the deal forecast compares the inventory with what's available, it looks at core deal metrics, then summarizes them to give a score. These metrics and individual scores are shared with the buying party when evaluating deals. Deal Quality score reflects how inventory compares with the open market on a 100-point scale, expressed as a decimal from 0 to 1. A score in the middle indicates the deal is on par with the open market. Deal Quality with scores above or below the average indicate better or worse value from the open market.

The following table lists what a buying party sees in the platform depending on the range.

Score Range Meaning
0.6 - 1.0 A good deal with either great prices, inventory, reach, or transparency.
0.4 - 0.6 An average deal. Consider adding onto this deal with more inventory access.
0.0 - 0.4 There are better offers in the open market. The can be overpriced, offer less support for audience targeting or weaker signal fidelity, or overlap with inventory already available through marketplace options.

NOTE: Deal quality score isn't an assessment of inventory quality. It represents estimated deal performance compared to other always available deals.

Each component metric of the Deal Quality score tells the buying party something different about the proposed deal's value. The following table shows the metrics used to evaluate whether a deal meets the expectations of the buying party.

Metric Description
Inventory exclusivity Measures how much of the inventory composition is exclusive to this deal. A high score means your inventory isn't commonly available in the open market.
Price competitiveness Compares the expected CPM to prices paid for the same inventory in the marketplace. A high score can represent a good discount, while a low score can indicate you might be overcharging for inventory.
Addressability Reflects what proportion of avails can link to a user or household ID in an identity graph. A high score means the deal contains active identifiers such as UID2.
Signal fidelity Shows how much detail the deal provides about its inventory. A high score means bid signals such as site and placement data are consistently sent on avails. For signal details, see Bidding terms enumeration values.
Relevance Indicates whether the deal is reaching users that match the buying party's target audience. A high score means the deal contains inventory that's relevant.
Contribution to campaign performance Records how the deal performs against campaign KPIs compared to other inventory. A high score means the deal drives stronger results than other inventory.