Skip to main content
After each read of your ad server, Apostra compares what it holds for a media buy with the terms you and the buyer agreed. The result is on the buy, per source, so you can see when your ad server has drifted from what was sold: a budget raised in your ad server, a flight date moved, targeting changed, or a rate edited. Apostra only reports the difference. It never changes your ad server to match the agreed terms, because the change may be intentional. You decide whether to put the line back or to agree the change with the buyer.
This check is in beta, and it is available to agents and the API for now: search and get with kind: "media_buy", and the data behind the Media Buys list. The Media Buys page does not display it yet. If your buys carry no contractConformance field, your storefront is not on the beta.

What “in line with the agreed terms” means

The agreed terms are what Apostra last sent your source for the buy and your source accepted. An accepted update to the buy replaces them. The ad server’s own state is what your source reports from it. A buy is in line when every agreed field was compared and every one matches.

The three statuses

Each routed source on a buy has one of these, and the buy shows the combined result. Not comparable is never shown as in line. A source that reports less never looks more in line than one that reports everything. A buy is out of line as soon as one source is. It is in line only when every source is. A buy you booked directly in your own ad server, without Apostra, has no agreed terms on Apostra’s side. It reads not comparable and is never flagged.

What each difference tells you

Every open difference on an out-of-line source carries: Values keep the shape AdCP gives them: amounts as numbers in the buy’s currency, times as ISO 8601, and targeting as an AdCP targeting overlay. A difference closes when a later read of your ad server no longer shows it. That happens when you put the line back, and also when you agree the change with the buyer and the update is accepted.

Which fields are compared

Your seller-side fulfilment is yours to change, so it is not compared: the ad units and placements that serve a product, exclusions, line-item priority and creative rotation. A buy’s lifecycle status follows your ad server.

Why some fields are not compared

A field that cannot be compared is listed in notCompared with a fieldPath and a reason. It keeps the buy from reading in line. Creative assignments are not compared yet. Two rules make the comparison fair rather than strict:
  • Geography is compared by the area it reaches. Google Ad Manager can store a booking of “United States plus these metro areas” as the metro areas alone. That reaches the same people, so it is in line. It is not a missing country.
  • Google Ad Manager rounds budgets. It holds a budget as a whole number of goal units priced at the line item’s rate. A budget is compared to within one goal unit, which costs a thousandth of the rate on a CPM or vCPM and the whole rate on a CPC, CPV or CPCV.

What to do about an out-of-line buy

  1. Check what changed. Read agreed and reported for each difference, money first. Your ad server’s change history shows who made it.
  2. If the change was not intended, put the line back in your ad server. The next read of your ad server closes the difference.
  3. If the change was intended, agree it with the buyer. When the buyer’s update is accepted, it becomes the agreed terms and the difference closes.
  4. If a field is only not comparable, nothing is wrong. Ask your source to report it from your ad server if you want it checked.
Billing follows the agreed terms, not your ad server. A rate raised in your ad server does not raise what the buyer pays. A budget raised there can deliver more than the buyer agreed to pay for, so settle it with the buyer. An out-of-line buy gets an attention flag in the Media Buys list data, and ranks, within the page of buys returned, above buys that are only waiting on you. A buy with a budget, rate or flight difference ranks first. The flag is a warning, not a failure: it asks you to look and does not say the buy has failed.

Read it from an agent

For a seller on the beta, search and get with kind: "media_buy" return contractConformance on each buy. search returns the buy-level status and each source’s status, differences and not-compared fields. get returns the same, beside each leg of the buy’s timeline.
A leg returns its first 25 open differences, money first, and its first 50 fields that could not be compared. differencesTotal and notComparedTotal give the full counts, so a leg with more than that tells you how many were left out.
  • Manage ads covers the seller workflows around the Media Buys page.
  • Media buy lifecycle explains the statuses a buy moves through, which are separate from whether it is in line with the agreed terms.