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

# Publisher properties and coverage

> How network sellers describe the publisher domains a managed storefront can sell, and how buyers see that coverage in get_products

## Overview

A **property** is the individual site, app, or CTV app whose inventory can be
sold. For a web publisher network, the property is usually one site domain. A
managed storefront's **coverage** is the set of publisher domains its sales
agent is authorized to sell.

For managed storefronts configured to disclose authorized publisher coverage,
that coverage is buyer-visible. When a buyer calls `get_products`, products
that carry authorized coverage return `publisher_properties` so the buyer can
see what a run-of-network or curated product actually covers before they buy.

## The network model

Do not use the operator domain as a shortcut for coverage. In a network, the
company that sells the inventory, the domain that manages authorization, and
the sites being sold can be different.

| Layer            | Example                          | What it means                                                              |
| ---------------- | -------------------------------- | -------------------------------------------------------------------------- |
| Operator         | `raptive.com`                    | The seller account or company operating the storefront                     |
| Manager domain   | `cafemedia.com`                  | The network domain that hosts the shared `adagents.json` for managed sites |
| Publisher domain | `wholesomeyum.com`               | A site whose inventory is covered by the storefront                        |
| Property         | `property_id`, identifiers, tags | The concrete entry in `adagents.json` that describes that site or app      |

For network-managed sites, a publisher can delegate to the manager domain with
an `ads.txt` `MANAGERDOMAIN=<manager-domain>` line or an
`authoritative_location` pointer. The manager's `adagents.json` then describes
the managed publisher properties.

## What buyers see in `get_products`

For configured managed storefront products that cover the authorized network,
Interchange discloses one selector per real publisher domain:

```json theme={null}
{
  "product_id": "run_of_network",
  "publisher_properties": [
    {
      "publisher_domain": "wholesomeyum.com",
      "selection_type": "all"
    },
    {
      "publisher_domain": "tastesbetterfromscratch.com",
      "selection_type": "all"
    }
  ]
}
```

`selection_type: "all"` means the product covers all authorized inventory for
that publisher domain. A run-of-network product for a large network can have
thousands of entries. That is expected: each entry is a buyer-verifiable
publisher domain, not a fabricated storefront placeholder.

<Note>
  A placeholder such as `*.storefront.scope3.com` is not coverage. If a managed
  product has real authorized properties and coverage disclosure is enabled for
  that storefront, buyers should see those publisher domains instead.
</Note>

## Where coverage comes from

Coverage comes from the publisher's `adagents.json`, resolved through the normal
identity-document path:

1. The publisher or network publishes `adagents.json` with `properties[]` and
   `authorized_agents[]`.
2. Interchange resolves the publisher file directly, through an
   `authoritative_location` pointer, or through the publisher's `ads.txt`
   `MANAGERDOMAIN` delegation.
3. The managed sales agent ingests the authorized properties for the storefront.
4. When coverage disclosure is enabled for the managed storefront,
   `get_products` renders those authorized properties as `publisher_properties`.

Changes to the publisher file are picked up when the publisher identity is
re-resolved and the managed source refreshes its authorized properties. Keep the
file clean: a test property in `adagents.json` is indistinguishable from a real
property and can appear as disclosed coverage.

If coverage disclosure is not enabled for a storefront, authorization can still
exist without a full per-publisher list appearing in `get_products`.

## Why this matters

Publisher coverage gives buyers a concrete answer to "where can this product
run?" For sellers, it makes run-of-network products easier to trust because the
buyer can verify the actual publisher domains covered by the storefront.

Coverage is still separate from ad-server targeting. A product can disclose the
publisher domains it covers while the seller's ad server uses GAM key-values,
ad units, or placements internally to organize site lists.

## Related

<CardGroup cols={2}>
  <Card title="adagents.json guide" href="/v2/storefront/inventory-sources/adagents-json" icon="file-code">
    Publish properties and authorized agents for a network or publisher.
  </Card>

  <Card title="Custom targeting and properties" href="/v2/storefront/esa/custom-targeting-properties" icon="sliders">
    Use GAM custom targeting keys and values as seller-managed signals.
  </Card>

  <Card title="Identity documents" href="/v2/concepts/identity-documents" icon="id-card">
    How Interchange resolves adagents.json, manager domains, and authorization.
  </Card>

  <Card title="Property lists" href="/v2/guides/property-lists" icon="list">
    Buyer-owned include and exclude lists.
  </Card>
</CardGroup>
