> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apostra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Guaranteed buys over the ad server forecast

> Choose whether a guaranteed buy that asks for more than your ad server forecasts is sent anyway or held for your review in Approvals, and what the review shows.

A guaranteed buy promises an amount of delivery, such as a number of
impressions. Your ad server forecasts how much of that it can deliver for the
buy's inventory, flight and targeting. When a buy asks for more than the
forecast, someone has to decide whether to sell more than the ad server expects
to have. Your over-forecast policy makes that decision.

This page applies to guaranteed packages on Google Ad Manager connected
through Apostra. A package is guaranteed when the pricing option the buyer
selected is guaranteed, as your ad server reports it; a product can offer both
kinds. Non-guaranteed packages, other ad servers and other sources are not
checked.

## Overbook or hold for review

* **Overbook** (the default). Apostra sends the buy as it arrives, and the ad
  server books it anyway. Nothing waits on you, and the buy may under-deliver
  if the forecast is right.
* **Hold for review.** Before sending a guaranteed buy, Apostra asks your ad
  server for its availability. A buy that fits the forecast is sent as usual.
  A buy that asks for more than the forecast for any package waits in your
  Approvals, and nothing is booked until you decide.

To hold such buys for your review, choose **Hold for my review** under
**Guaranteed buys over the ad server's forecast** in the approval gates on the
AI Business Rules page, ask Apostra, or save it on V3 with
`save_business_rules`:

```json theme={null}
{ "guaranteedOverForecast": "hold_for_review" }
```

Save `"overbook"` to go back. Neither direction asks you to confirm anything,
because holding adds review rather than removing it. The setting applies to
your whole storefront and to buys created after you change it; read it with
`get` and `kind: "business_rules"`. It stays in Apostra: your ad server is
only asked for its forecast, and never holds or decides a buy itself.

When you hold for review, a buy whose availability the ad server cannot
confirm is held too, with the reason, so you are never overbooked on an answer
the ad server could not give. That happens when:

* the ad server returns no forecast for a package;
* the ad server does not forecast a package's goal, for example a
  share-of-voice goal;
* some of the buyer's targeting values do not exist in the ad server yet, so
  the forecast leaves them out and may overstate availability;
* the ad server does not answer in time (about 35 seconds), cannot be reached,
  or fails;
* the ad server refuses the request, for example because it cannot book the
  buyer's targeting (the ad server's reason code is shown);
* the buy has no flight or budget to forecast.

The check adds a short wait, up to that time limit, before the buyer gets an
answer for a guaranteed buy. Your storefront's own operator booking its own
supply is not checked, because that booking is already your decision.

## Decide a held buy

A held buy is an ordinary media-buy approval in your Approvals queue: it uses
the same routing, notifications and decision as any other buy. Open the Page
with `open_approvals`, or ask Apostra to open your approvals. The row is
marked **Over forecast** or **Availability unconfirmed**, and opening it shows,
for each guaranteed package:

* the goal unit (impressions, viewable impressions or clicks);
* what the buy requested;
* what the ad server forecasts is available;
* the shortfall.

Then choose one:

* **Approve.** Apostra sends the buy as submitted, and the ad server books the
  full order, even though it may not deliver all of it.
* **Reject.** Nothing is sent to the ad server, and the buyer sees the buy as
  rejected.

If your storefront already reviews every media buy, a guaranteed buy is
reviewed once: the same review shows its availability, including "Within the
ad server forecast" when it fits. If the buyer changes a held buy before you
decide, the review says its figures describe the earlier version.

## Decide through V3

An agent can run the same review without the Approvals Page. A held buy is a
`media_buy_approval` work item:

* `search` with `kind: "work_item"` lists it, and its text names each buy the
  policy held with its outcome (`shortfall` or `unverified`).
* `get` with `kind: "work_item"`, `workItemKind: "media_buy_approval"` and the
  buy's id returns `availabilityReview`: the outcome, when it was checked,
  whether the buyer has changed the buy since, and for each package the goal
  unit, requested, available and shortfall, the ad server's reason when it had
  no forecast, and any buyer targeting the forecast left out. Failed checks
  list the ad server's error code and the packages left unchecked.
* `save_work_item` with `kind: "media_buy_approval"` and `status: "approved"`
  sends the buy as submitted; `status: "rejected"` sends nothing.

An approved buy then appears with the rest of your buys on the
[Media Buys Page](https://docs.apostra.com/v3/seller-media-buys-page.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.