> ## 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.

# Pass the go-live test

> Clear the Successful transaction readiness check with a sandbox campaign on your own advertiser, where that cannot create a real campaign at a provider.

Before buyers can transact with a storefront, its readiness checklist needs a
**Successful transaction**. For a storefront whose inventory is a modular
catalogue, you can pass it yourself, with no test to request: run an ordinary
sandbox campaign with your own sandbox advertiser against your own storefront.

<Warning>
  **Do not run a sandbox campaign against a source that sends campaigns to a
  provider.** A modular source with a trafficking module, such as an ad-server or
  retail-media connection like CitrusAd, dispatches the buy to that provider. A
  sandbox advertiser marks the campaign as test-only inside Apostra, but Apostra
  does not currently stop the buy from creating a real campaign at the provider,
  and the provider may charge for it. Whether the provider simulates it depends on
  its own test access, which Apostra does not check.

  If your storefront has such a source, do one of these instead:

  * If the provider gives you a sandbox or test account, connect that account to
    the source and use it.
  * Otherwise, ask Apostra Support to review your storefront. Apostra can record
    an audited approval for the storefront to transact without the test.

  The readiness checklist applies the same rule: for a storefront with such a
  source, it does not recommend a sandbox campaign.
</Warning>

## What the check needs

The **Successful transaction** check (`publish_validation`) turns complete when
one media buy on your storefront has been accepted by its inventory source and
carries that source's media buy ID. A sandbox campaign you launch from your own
account produces that buy. A successful buy from a live buyer satisfies the same
check, but a live buyer cannot connect until your storefront is ready, so for a
new storefront the sandbox campaign is the route.

The check reads the whole storefront:

* **Modular sources with no trafficking module.** The sandbox campaign is the
  evidence. Nothing else is required for the check.
* **Modular sources with a trafficking module.** Do not use a sandbox campaign.
  See the warning at the top of this page.
* **Managed ad-server sources.** A storefront whose active sources are all
  managed ad servers reports the check complete without a test. A mixed
  storefront still needs the campaign, and it covers the sources that are not
  managed ad servers.
* **External sales agents.** An external Agent source needs its own current
  proof of `create_media_buy`. A sandbox campaign does not stand in for it, and
  the check names the Agent that is still uncovered. Use that Agent's Test
  section.
* **Demo storefronts.** The check reports complete with no test while every
  connected source is part of the demo profile.

Run the sandbox campaign, where it applies, after the other blockers on the
checklist are clear.
Check your storefront status for what is still open: the checklist tells you
which blocker comes first.

## Run the sandbox campaign

This is for a storefront whose sources are modular catalogues with no trafficking
module. Use your seller account's own MCP connection. You stay in the same
account for the whole campaign; do not switch accounts.

<Steps>
  <Step title="Create a sandbox advertiser">
    Call `save_advertiser` with `sandbox: true`. A sandbox advertiser belongs to
    your own account and is test-only. Its sandbox setting is permanent: it cannot
    be changed to live later. Every Media Company can create sandbox advertisers.
  </Step>

  <Step title="Create a campaign for that advertiser">
    Call `save_campaign` with the advertiser, a brief, a flight, and a budget.
    Apostra pins the campaign to your own storefront; a product, proposal, or
    media buy from any other storefront is refused.
  </Step>

  <Step title="Choose a product from your own catalogue">
    Open your catalogue with `get` for `kind: "seller"` and include the
    products, then pass a qualified product to `save_media_buy` to stage a media
    buy. You can also ask for proposals with `request_proposals`.
  </Step>

  <Step title="Add a creative">
    Call `save_creative` with the campaign to attach a creative to it. See
    [Create and verify a campaign creative](/v2/setup/v3/tool-reference#create-and-verify-a-campaign-creative).
  </Step>

  <Step title="Launch the sandbox campaign">
    Launching is a two-call operation: preview, then confirm with the returned
    revision. See
    [Launch a campaign with explicit confirmation](/v2/setup/v3/tool-reference#launch-a-campaign-with-explicit-confirmation).
    Because the same company operates both the campaign and the storefront, your
    explicit launch is also the storefront's approval of the buy. The buy then
    goes to your inventory source.
  </Step>
</Steps>

The full buyer workflow is in
[Buyer workflows](/v2/setup/v3/buyer-workflows), and the seller-side limits are
in [Seller limitations](/v2/setup/v3/limitations#seller-limitations).

## Confirm that the check passed

Call `get_status`, or open the readiness checklist, and look at **Successful
transaction**. Readiness refreshes shortly after the buy is recorded, so give it
a moment before you read it again.

* **Complete.** The buy was accepted by its source and recorded with that
  source's media buy ID.
* **Still missing, no buy recorded.** The campaign did not launch or the buy did
  not reach the source. Read the campaign and its media buy, resolve the error
  it reports, and launch again.
* **Still missing for an external Agent.** The check names the Agent. Its proof
  comes from that Agent's own Test section, not from a sandbox campaign.

## Which sources the sandbox campaign is for

What happens after the buy leaves your storefront depends on the source:

* **A modular source with no trafficking module** (an avails feed, for example)
  has no outside system to send the campaign to. Apostra reserves the capacity
  and records the buy against your booking ledger. This is the source type the
  sandbox campaign is for.
* **A modular source with a trafficking module** sends the campaign to a
  provider. Follow the warning at the top of this page and do not use a sandbox
  campaign.

## What a sandbox campaign does and does not do

* It uses only your own storefront and your own sandbox advertiser. It cannot
  reach another company's storefront or use an advertiser that belongs to another
  account. Apostra admits a storefront that has not passed the check only for
  your own sandbox advertiser.
* It does not make your storefront live or discoverable to buyers by itself.
  Buyers connect once every blocker on the checklist is clear.
* Sandbox campaigns are not live campaigns. Running live campaigns against your
  own inventory is limited to the companies enrolled for it.

Related: [Sandbox mode](/v2/features/sandbox),
[Storefront overview](/v2/storefront/overview), and
[Demo Storefront](/v2/storefront/inventory-sources/demo-storefront).


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