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

# Choose how your storefront gets supply

> Choose an ad-server connection, external sales agent, linked storefront, modular source, or storefront adapter based on the systems you already operate

Every storefront draws inventory from one or more **inventory sources**. The
source path depends on what you already run and which system owns the sell-side
lifecycle. This page is the canonical decision guide for setup.

## Open Inventory Sources

Choose **Inventory** in Apostra seller navigation. The Storefront name
means you are working at the overall Storefront level; a source name means you
are managing that exact source. Choose **All inventory sources** to open the
storefront-wide source list, or choose a named source to open its established
detail page. The rest of the storefront navigation remains available in either
context.

Use **Add inventory source** at the bottom of the same selector to open the
existing list with its provider choices expanded. You can start an
ad-server connection, external sales agent, or modular source there without
opening a second workspace.

A shared source link restores the exact source ID. If that source is unavailable
or you lack access, Apostra shows it as unavailable instead of opening a
different source. Source-specific credentials, actions, and diagnostic state stay
isolated to that source. Protocol diagnostics are only exposed for an external
sales agent you operate, not for managed integrations or official adapters.

On a new storefront, Seller Setup shows one **Add your first inventory
source** area rather than repeating the same action in the readiness checklist.
Choose who operates the connection: **Apostra-managed**, **Certified partner**,
or **Operator-managed** (bring your own agent). Custom modular composition is
available as an advanced path. After the first source is connected, this area
becomes a compact source-and-status list with **Add another source** collapsed
under it.

Certified partner agents are a supported inventory source. Self-serve binding
covers an agent your own organization runs; connecting a certified partner's
agent is a cross-organization connection, so it is currently arranged with
Apostra rather than self-serve in Seller Setup. Ask Apostra to connect a
certified partner's agent to your storefront.

The current **Certified partner** label combines two facts that remain distinct
in the underlying model: whether an Agent is visible in a marketplace and whether
its exact production revision is certified. Partner commercial standing is a
third fact. A marketplace listing does not certify an Agent, certification does
not publish it, and neither one authorizes an unrelated-client production
connection. Seller Setup does not yet expose non-certified marketplace Agents or
provider-controlled auto-accept across declared authentication methods; until that
experience ships, the assisted cross-organization path above remains the available
path.

The ownership label and status mean different things. The ownership pill stays
with the source; the status light changes as the connection moves from setup to
connected or develops an observed issue. Setup is neutral. Yellow and red are
only used for problems observed after the storefront is live.

<Note>
  Your storefront **is** your sales agent to buyers — they call your storefront
  and your Merchandising Agent answers. An external sales-agent **source** is a
  *separate* AdCP agent you registered as upstream supply. Don't confuse the two:
  buyers never see your sources, only your storefront.
</Note>

## Decision table

Start from what you operate today.

| You already run…                                                                                                                                                | Pick                     | `executionType`                                                 |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ | --------------------------------------------------------------- |
| An ad server with a supported direct or Apostra-managed integration — Google Ad Manager, FreeWheel, SpringServe, AdsWizz, or a standard recipe such as CitrusAd | **Ad-server connection** | Managed connection; implementation varies by provider           |
| Your own AdCP-compatible sales agent at a URL                                                                                                                   | **External sales agent** | `AGENT`                                                         |
| Wholesale supply from other listed, transacting storefronts                                                                                                     | **Linked storefront**    | Not currently admitted; pending canonical Source representation |
| Inventory and execution split across files, back-office systems, or people                                                                                      | **Modular source**       | `MODULAR_SOURCE`                                                |
| One supported expert provider should run the entire buyer-facing storefront                                                                                     | **Storefront adapter**   | Storefront `ADAPTER` routing; not an inventory source           |

## The five setup paths

The authoritative definition of each family:

> `AGENT` is an external AdCP-compatible sales agent the Merchandising Agent connects to; `MANAGED_SALES_AGENT` is an operator-owned ad server with Apostra-managed sales-agent plumbing; `LINKED_STOREFRONT` is reserved for wholesale inventory from another storefront but is not currently admitted because ambient sellers have no canonical Source row; `MODULAR_SOURCE` is a private composed implementation assembled from modules such as avails, booking, trafficking, and reporting. A standard modular recipe such as CitrusAd is presented as an ad-server connection, while custom compositions use the advanced modular-source workflow. Storefront-level `ADAPTER` dispatch is configured on the storefront, not as an inventory source.

### Ad-server connection

Pick this when you own an ad server — Google Ad Manager, FreeWheel,
SpringServe, AdsWizz, or a provider with a standard recipe such as CitrusAd — and want to sell its inventory through your
storefront. Buyers transact against your storefront while a supported direct
integration or Apostra-managed sales agent reads the ad server's existing
ad units, placements, and products. The setup surface may hide that
implementation difference because the seller outcome is the same. These
sources use the ad-server connection and
lifecycle endpoints (connect, save config, test, launch, deactivate,
reactivate), not the generic external-agent create flow. Some providers use a
managed ESA tenant; others, including CitrusAd, use a preconfigured private
module recipe. That implementation detail does not change the seller or buyer
experience.

For what each ad server asks for and why, see
[Why Apostra needs access to your ad server](/v2/storefront/inventory-sources/ad-server-access).
See also [Get ad-server connection](/v2/storefront/inventory-sources/tasks/get-ad-server-connection)
and [Replace ad-server config](/v2/storefront/inventory-sources/tasks/replace-ad-server-config).

### External sales agent (`AGENT`)

Pick this when you already run — or want to connect — your own
AdCP-compatible sales agent reachable at a URL. You register it with the source
endpoint, supplying the endpoint URL, protocol (`MCP` or `A2A`), and auth. Your
Merchandising Agent then calls that agent for discovery and media buys. This is
the only family created and updated through the generic inventory-source create
and update flow.

An external sales-agent source can declare two product paths:

* **Agent-supplied:** buyer briefs are sent to your sales agent and it answers live.
  Use this when the upstream agent already knows how to sell and rank its own
  products.
* **Storefront-built:** your source exposes raw products/components that
  Apostra caches, then the Merchandising Agent composes buyer-facing
  products from those cached components and your operating instructions.

For merchandising, cache success means Apostra can read stable component
ids, pricing options, formats, publisher properties or other inventory
selectors, delivery type, and execution metadata without making a live source
call during buyer-request composition. If the source cannot provide a usable
component cache, Murph reports that as a cache/readiness complaint;
Agent-supplied brief discovery can still be healthy.

Apostra only attempts wholesale product or signal catalog requests to an
external sales agent when the Source supports the Storefront-built path and the
Agent reports AdCP 3.1+ support. With the Agent-supplied path, buyer briefs and
media buys call your sales agent live, and component-cache readiness is not used
as a health signal. An Agent may support both product paths; its Source then
selects one or both paths.

See [Create inventory source](/v2/storefront/inventory-sources/tasks/create-inventory-source)
and [Diagnose third-party sales agents](/v2/storefront/inventory-sources/diagnostics).

### Linked storefront (`LINKED_STOREFRONT`)

This type is reserved for supply from other storefronts on Apostra, but
it is not currently admitted to discovery. The former ambient pool had no Source
row to display, configure, or mark eligible, so runtime could not match Source
Health or TARS. Linked supply can return after every seller is represented in the
canonical Source and dispatch projection.

### Modular (`MODULAR_SOURCE`)

Pick this when inventory and execution do not come from one compliant upstream
agent. A modular source is composed from private modules — an avails feed, a
booking ledger, trafficking, status sync, reporting import — and presents one
buyer-facing surface. Use it when, for example, a publisher sends a periodic
avails file, confirms bookings by hand, and uploads delivery reports after the
campaign ends.

An optional ad-server module can automate trafficking for this same modular
source. That is a module change, not a reason to add a parallel inventory
source. Add another source only for a distinct inventory, authorization, or
operating boundary.

See the [Modular lifecycle guide](/v2/storefront/inventory-sources/modular-lifecycle).

### Storefront adapter (`ADAPTER` routing)

Pick this only when Apostra supports an expert provider that should dispatch the
whole buyer-facing storefront directly. The adapter is configured on the
storefront itself; it is not an inventory source and cannot be added through an
inventory-source form. This differs from an external AdCP sales agent, which is
private upstream supply behind a storefront, and from a modular source, whose
modules are combined behind the storefront. Adapter availability and lifecycle
capabilities are provider-specific, so do not assume that an adapter automates
booking, creative, or reporting unless its setup explicitly says so.

## Still unsure?

* You operate an ad server and want to sell its inventory → **ad-server connection**.
* You have an AdCP agent at a URL → **external sales agent**.
* You want inventory from the marketplace with nothing to connect → **linked storefront**.
* Your supply is stitched together from feeds and manual steps → **modular**.
* One supported provider should operate the whole storefront → **storefront adapter**.

## Related

<CardGroup cols={2}>
  <Card title="Inventory sources" href="/v2/storefront/inventory-sources/overview" icon="plug">
    Register and manage the sources behind your storefront
  </Card>

  <Card title="Create inventory source" href="/v2/storefront/inventory-sources/tasks/create-inventory-source" icon="plus">
    Register an external AGENT source
  </Card>

  <Card title="Modular lifecycle guide" href="/v2/storefront/inventory-sources/modular-lifecycle" icon="diagram-project">
    Compose a source from avails, booking, and reporting modules
  </Card>

  <Card title="Glossary" href="/v2/concepts/glossary" icon="book-a">
    Ad Server vs Sales Agent, side by side
  </Card>
</CardGroup>
