Group deals with upfronts
An upfront is an object that serves as a grouping mechanism—defined by an ID and a descriptive name—that you, as the selling party, can use to organize multiple deals under a shared label for consolidated reporting and performance analysis. Upfronts help you aggregate spend, track performance, and analyze transacted inventory.
IMPORTANT: You cannot assign upfronts to deals without media spend goals.
Benefits of upfronts
The following table lists the benefits of assigning upfronts to deals.
| Benefits | Description |
|---|---|
| Retroactive reporting | When a deal has an upfront, all historical spend for that deal's past and present duration is retroactively attributed to the upfront for reporting purposes. |
| Flexible assignment | During deal creation or deal revision, you can assign one upfront to a deal. Sellers and intermediaries can assign an upfront to deals they have created. |
| Reporting dimension | Upfronts appear as a reporting dimension, enabling you to aggregate deal performance by grouping upfronts with the name or ID. |
| Simple structure | Upfronts require only the known agent ID of the seller or intermediary that's creating the upfront, and a descriptive name. |
Upfront management
The following table lists tasks you can perform when managing your upfronts.
| Task | Description |
|---|---|
| Create an upfront. | Create an upfront to organize your deal reports. |
| Assign an upfront to a deal. | Groups deals together using an upfront. |
| Rename an upfront. | Rename upfront groupings. |
| Delete an upfront. | Remove upfront from all deals. |
| List all upfronts for a selling party. | Retrieve all upfronts created by an account. |
Create an upfront
To create an upfront, use the upfrontCreate mutation. The following example creates an upfront named "Q4 2025 Premium Video Package," and requires your known agent ID.
IMPORTANT: Each upfront name has a maximum of 256 characters.
mutation {
upfrontCreate(input: {
ownerId: "SELLING_PARTY_KAID_PLACEHOLDER",
name: "Q4 2025 Premium Video Package"
}) {
data {
id,
name,
owner {
... on KnownAgent {
id
name
type
}
}
}
errors {
... on MutationError {
__typename
message
field
}
}
}
}
TIP: After creating an upfront, keep track of the ID to make changes to other deals.
Assign an upfront to a deal
Choose the upfront by either the name or ID, then use the dealCreate mutation for a newly created deal, or use the dealRevise mutation for an existing deal.
mutation {
dealCreate(
input: {
...
upfront: {name: "Q4 2025 Premium Video Package"}
upfront: {id: "UPFRONT_ID_PLACEHOLDER"}
}
) {
errors {
... on MutationError {
__typename
message
field
}
}
}
}
Rename an upfront
To rename an update, use the upfrontUpdate mutation. The following example renames the upfront from "Q4 2025 Premium Video Package" to "Q4 2025 Open Internet Package." This name change retroactively applies to all previously assigned deals.
mutation {
upfrontUpdate(
input: {
id: "UPFRONT_ID_PLACEHOLDER"
name: "Q4 2025 Open Internet Package"
}
) {
errors {
... on MutationError {
__typename
message
field
}
}
}
}
Delete an upfront
To delete an upfront, use the upfrontDelete mutation. The following example deletes an upfront by passing the upfront ID.
NOTE: Deleting an upfront automatically dissociates it from all assigned deals.
mutation {
upfrontDelete(
input: {
id: "UPFRONT_ID_PLACEHOLDER"
}
) {
errors {
... on MutationError {
__typename
message
field
}
}
}
}
List all upfronts for a selling party
The following example upfronts query shows how you can query for a list of all upfronts associated with a selling party known agent, such as an intermediary, publisher, or seller.
query GetSellingPartyUpfrontsExample {
upfronts(input: {ownerId: "SELLING_PARTY_KAID_PLACEHOLDER"}) {
nodes {
id
name
}
}
}
TIP: To view upfronts unassigned to deals, add the
wherefilter forincludeUnassociatedUpfronts: true.
The following example upfronts query shows all upfronts, including unassigned upfronts.
query GetAllSellingPartyUpfrontsExample{
upfronts(
input: {ownerId: "SELLING_PARTY_KAID_PLACEHOLDER"}
where: {includeUnassociatedUpfronts: true}
) {
nodes {
id
name
}
}
}