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:
- You can run a deal forecast using the exact inventory composition of a deal.
- Forecast results contain estimated financial terms and a Deal quality score evaluation of the inventory.
- You can add deal specific terms into the forecast, such as Contributing deals in commitments.
- You can compare expanded inventory from before and after expansion by changing the reporting type to
OVERALL,BASE_TERMS, orEXPANDED_TERMS.
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
dealMeasurementsReportingTypetoEXPANDED_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. |