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

# Custom targeting and properties

> How GAM custom targeting relates to publisher properties, site lists, and signal components

## Overview

Large publisher networks often organize inventory inside Google Ad Manager with
custom targeting keys and values. A key-value can represent a site list, a
section, a package, or another seller-defined group.

In Interchange, those GAM key-values are **ad-server targeting**: source-native
material that a seller can use to create **signal components**. They are
separate from publisher coverage:

| Concept            | What it answers                                            | Source                                    |
| ------------------ | ---------------------------------------------------------- | ----------------------------------------- |
| Publisher coverage | Which publisher domains a product covers                   | `adagents.json` and authorized properties |
| GAM key-values     | How the seller groups or targets inventory in GAM          | The connected GAM network                 |
| Signal components  | Which ad-server targeting the storefront exposes to buyers | The ad-server signal-component endpoints  |

Use this guide when the seller question is "How do I set up key-value targeting
for my site lists?"

## The live workflow

Start with the ad-server signal-component endpoints. They let you inspect the
connected source and create GAM-backed components.

1. **Read source capabilities.** Confirm the source supports GAM custom
   targeting and which mapping kinds are available.
2. **Browse custom targeting keys.** Search for the key that represents your
   site list or group.
3. **Browse values for that key.** Pass the key's `externalId` as `parent_id`
   when browsing `custom_targeting_value` candidates.
4. **Create a signal-component draft.** Use `custom_key_value` for a single key/value
   mapping, or `gam_targeting_groups` for grouped GAM logic.
5. **Dry-run before saving.** Add `?dry_run=true` to validate the draft and read
   any adapter issues before it is persisted.

See [Ad-server signal components](/v2/storefront/esa/signals) for the exact
endpoints, ad-server-targeting parameters, and request shapes.

## Direct key-value signal component

Use a direct key-value signal component when one GAM custom targeting value
maps to one seller-defined segment.

```json theme={null}
{
  "signalId": "food_site_list",
  "name": "Food site list",
  "valueType": "binary",
  "adapterConfig": {
    "type": "passthrough",
    "kind": "custom_key_value",
    "keyId": "17467172",
    "valueId": "451422266753"
  }
}
```

## Grouped GAM targeting

Use grouped targeting when the signal needs multiple criteria. Groups are OR'd
together; criteria inside one group are AND'd together; multiple values inside
one criterion are OR'd by GAM for that key.

```json theme={null}
{
  "signalId": "food_or_home_weekday",
  "name": "Food or home weekday inventory",
  "valueType": "binary",
  "adapterConfig": {
    "type": "passthrough",
    "kind": "gam_targeting_groups",
    "groups": [
      {
        "criteria": [
          {
            "keyId": "17467172",
            "values": ["451422266753"]
          },
          {
            "keyId": "98765",
            "values": ["12345", "67890"]
          }
        ]
      }
    ]
  }
}
```

Read the adapter's `targetingSemantics` before combining grouped GAM targeting
with other signals. Some adapters mark grouped GAM targeting as exclusive for
the buyer targeting field it consumes.

## How this relates to properties

Publisher properties are still the source for buyer-visible coverage. If a
product covers `wholesomeyum.com`, buyers should see that domain in
`publisher_properties` even if your GAM line item uses an internal key-value to
reach it.

GAM key-values are how your ad server can describe or address seller-defined
groups. Creating a signal component from a key-value makes that ad-server
concept visible to your storefront workflows. It does not replace
`adagents.json`, and it does not by itself prove which publisher domains a
product covers.

## Buyer property lists today

Buyers can attach property lists to campaigns. When that happens, the seller's
agent receives a property-list reference and can resolve it on demand. Initial
product discovery carries it as `property_list`; campaign or media-buy execution
carries it as `targeting_overlay.property_list`. Today, honoring that list is
seller-side: your agent decides how to map the requested domains or app
identifiers to the inventory and ad-server controls you operate.

If the buyer asks for a subset that your storefront cannot honor through its
current products or ad-server setup, say so and offer the closest product that
you can execute. Do not imply that Interchange automatically traffics every
buyer property-list subset into GAM key-values.

For the seller-side flow, see
[Property-list briefs for sellers](/v2/storefront/property-list-briefs).

## Related

<CardGroup cols={2}>
  <Card title="Ad-server signal components" href="/v2/storefront/esa/signals" icon="wave-pulse">
    Browse GAM targeting, then create signal components.
  </Card>

  <Card title="Publisher properties and coverage" href="/v2/storefront/inventory-sources/publisher-properties-coverage" icon="globe">
    Explain what publisher domains buyers see in `get_products`.
  </Card>

  <Card title="Property-list briefs for sellers" href="/v2/storefront/property-list-briefs" icon="list-check">
    What happens when a buyer's campaign carries a property list.
  </Card>

  <Card title="Signal components" href="/v2/storefront/signals/overview" icon="wave-pulse">
    Storefront signal concepts and task reference.
  </Card>
</CardGroup>
