Commitment deals

Commitment deals are promises between all deal participants that both parties are responsible of delivering. These commitments have additional terms for expansion and cancellation, and require setting goals for media spend.

NOTE: Both commitment deals and Programmatic Guaranteed deals are listed under the commitment deal type when querying the API.

Retrieve commitment deal terms

A commitment deal is an agreement that specifies a target cost for media investment. It ensures that the designated investment amount is fulfilled between the participating parties. Commitment deals highlight these terms by setting minimum win rate guarantees and makegoods. To view the terms of a commitment deal, query for the targetableDeals object with the corresponding deal ID.

The following partner example is shortened due to the range of possible terms.

query GetPartnerCommitmentTermsExample {
  partner(id: "PARTNER_ID_PLACEHOLDER") {
    targetableDeals(where: {
      id: {
        eq: "COMMITMENT_DEAL_ID_PLACEHOLDER"
      }
    }) {
      nodes {
        id
        acceptedAt
        active {
          createdAt
          description
          displayName
          name
          revisionNumber
          status
          biddingTerms {
            name
            observedPercentage
            marketPercentage
          }
        }
        activityLog {
          nodes {
            actor
            body
            contact {
              name
              email
            }
            createdAt
            status
          }
        }
        displayName
        dealOwnerPartner {
          id
          name
          contact {
            email
            name
          }
        }
        externalDealId
        forecastMetrics {
          addressability
          auctionIntegrity
          campaignPerformanceContribution
          dealQualityScore
          decisionPower
          duplicationRate
          inventoryExclusivity
          priceCompetitiveness
          relevance
          signalFidelity
        }
        inventorySupplier {
          logoUrl
          id
          name
          contact {
            email
            name
          }
        }
        isArchived
        marketAverageForecastMetrics {
          signalFidelity
          duplicationRate
          auctionIntegrity
          addressability
        }
        name
        pausedByBuyer
        privateContractId
        reportingMetrics {
          cpm
          spend
          tvqi
        }
        spendingStatus
        supplyVendor {
          name
          logo
          id
        }
      }
    }
  }
}

Mutations

The following table lists all the tasks you can perform with commitment deals.

Task Mutation
Add a note to the commitment deal. inventoryCommitmentNoteCreate
Update the commitment deal name or display name. This name can contain up to 256 characters. inventoryCommitmentUpdate
Expand the commitment deal to include expanded deal terms. inventoryCommitmentExpand
Cancel the commitment deal after the cancellation threshold has been met. inventoryCommitmentCancel
Archive the commitment deal. inventoryCommitmentArchive

Add a note to the commitment deal

To add a note to a commitment deal, use the inventoryCommitmentNoteCreate mutation and enter your message in the note field.

The following inventoryCommitmentNoteCreate mutation example shows how to add a note.

mutation {
  inventoryCommitmentNoteCreate(input: {
    commitmentId: "COMMITMENT_DEAL_ID_PLACEHOLDER"
    note: "NOTE_TEXT_PLACEHOLDER"
    createdBy: {
      email: "SENDER_EMAIL_PLACEHOLDER" 
      name: "SENDER_NAME_PLACEHOLDER"
    }
  }) {
    data { id }
  }
}

Update the commitment deal

To update a commitment deal, use the inventoryCommitmentUpdate mutation and update the name or displayName fields.

The following inventoryCommitmentUpdate mutation example shows how to rename your deal.

mutation {
  inventoryCommitmentUpdate(input: {
    commitmentId: "COMMITMENT_DEAL_ID_PLACEHOLDER"
    displayName: "DISPLAY_NAME_PLACEHOLDER"
    name: "NAME_PLACEHOLDER"
  }) {
    data { id }
  }
}

Expand the commitment deal

Deal expansion is an optional term set in commitment deal terms to increase the amount of available inventory that the selling party sends. If your deal supports deal expansion, you can accept more bid requests from the sources listed in the expanded terms. To apply expansion, you must meet the following requirements:

The deal is a live commitment deal.
The lifetime pacing is below the threshold set for expansion.
The deal has been underpacing for a set period of days.
The deal terms contain expanded terms.

After a deal has met the requirements, you can use the inventoryCommitmentExpand mutation to start getting avails that match the expanded terms.

The following inventoryCommitmentExpand mutation example shows how to expand commitment deals that are pacing below the set threshold. If your commitment deal isn't pacing below the threshold or doesn't contain expansion terms, the mutation returns an error and doesn't expand the deal.

mutation {
  inventoryCommitmentExpand(input: {
    commitmentId: "COMMITMENT_DEAL_ID_PLACEHOLDER"
  }) {
    userErrors {
      message
    }
  }
}

Cancel the commitment deal

In cases where the deal underpaces and the selling party is at fault, you can cancel the deal without penalty. To cancel a deal, it must meet the following requirements:

The deal is a live commitment deal.
The lifetime pacing is below the threshold set for cancellation.
The deal has been underpacing for a set period of days.

The deal has one of the following faults:

After a deal has met these requirements, you can use the inventoryCommitmentCancel mutation to let the selling party know to send avails that match the expanded terms.

The following inventoryCommitmentCancel mutation example shows how to cancel a commitment deal.

mutation {
  inventoryCommitmentCancel(input: {
    commitmentId: "COMMITMENT_DEAL_ID_PLACEHOLDER"
  }) {
    userErrors {
      message
    }
  }
}

TIP: After canceling a deal, you should archive the deal to clean up any remaining data. For details, see Active deal management.

Archive the commitment deal

To end a deal in flight, you need the deal ID and latest revision number. To get the latest revision number, query for the latest active and pending status of the deal and use the larger revision number.

The following partner query returns the revision numbers for a commitment deal.

query GetCommitmentRevisionVersionExample {
  partner(id: "PARTNER_ID_PLACEHOLDER") {
    targetableDeals(where: {
      id: {
        eq: "DEAL_ID_PLACEHOLDER"
      }
    }) {
      nodes {
        id
        active {
          revisionNumber
        }
        pending {
          revisionNumber
        }
      }
    }
  }
}

After you have the revision number, you can archive the deal with the inventoryCommitmentArchive mutation. The following example archives a commitment deal with the latest revision number of 2.

mutation {
  inventoryCommitmentArchive(
    input: {
      inventoryCommitmentRevisions: {
        commitmentId: "COMMITMENT_DEAL_ID_PLACEHOLDER"
        revisionNumber: 2
      }
    }
  )
}