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

# Exact Age Targeting

> Write one explicit age range in a product-discovery brief and preserve it through media-buy execution and readback

## Overview

Add one closed age range to a `get_products` brief when a campaign must reach a
specific adult audience. For example:

```text theme={null}
Build an awareness campaign for people ages 21-35 in the United States.
```

The storefront copies the two numbers from the brief. It does not ask a model
to choose an age range, translate a generation label such as “Gen Z” into ages,
or widen the request to fit a platform.

This applies during product discovery and media-buy creation. It does not
change targeting on an existing media buy. In chat, ask for `ages 21-35`; your
agent uses this path automatically and does not guess when the platform cannot
represent the range.

No setup change is required for an existing brief that already contains one
exact supported range.

## Platform support

Each storefront must prove that it can execute the requested range exactly.

| Platform                 | Supported requests                                                                                                      |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| Meta                     | Any closed range from 18 through 64. Meta's provider value `65` means 65+, so it is not an exact upper bound.           |
| Spotify                  | Any closed range from 18 through 65.                                                                                    |
| Snap                     | Exact unions of the native 18-20, 21-24, and 25-34 buckets. Open-ended buckets are not treated as a closed upper bound. |
| TikTok                   | Exact unions of the native 18-24, 25-34, 35-44, and 45-54 buckets. The 55+ bucket is open-ended.                        |
| Pinterest                | Exact unions of the native 18-24, 25-34, 35-44, 45-54, and 55-64 buckets. The 65+ bucket is open-ended.                 |
| Other connected adapters | Exact age targeting is not currently supported.                                                                         |

`ages 21-35` therefore works on Meta and Spotify. It returns no product from a
bucket-only or unsupported adapter because approximating the request would
change the audience.

## Requests that need clarification

Product discovery returns no matching product when the age request cannot be
executed without guessing or broadening. Rewrite the brief as one explicit,
closed, supported adult range when it contains:

* An open endpoint, such as `ages 21+`, `under 35`, or `up to 35`.
* More than one or a disjoint range, such as `ages 21-24 or 35-44`.
* An exclusion, such as `exclude people ages 21-35`.
* A lower bound below 18.
* Conflicting or ambiguous bounds.
* A descriptive label without numbers, such as `young adults` or `Gen Z`.

This fail-closed response is expected. It prevents a storefront or model from
silently choosing a different audience.

## Unknown ages on Meta

Meta can deliver to people whose age is unknown. A constrained-age request
excludes them unless the brief explicitly says to include them:

```text theme={null}
Reach people ages 21-35 and include people whose age is unknown.
```

You can also state that they must be excluded. The choice is stored with the
product, written to the Meta ad set, and checked on readback. Other platforms
currently reject a request to include people whose age is unknown.

## Read the applied targeting

A returned product with verified age targeting includes the applied range at:

```json theme={null}
{
  "ext": {
    "scope3_product_targeting": {
      "demographics": {
        "age": {
          "min": 21,
          "max": 35,
          "includeUnknown": false
        }
      }
    }
  }
}
```

Use the returned product for media-buy creation. The storefront checks the stored
product declaration again before publishing it or writing provider state. On
Meta, requested and provider controls also show whether unknown ages were
included.

<Note>
  Age is currently carried by the selected product. It is not a
  `targeting_overlay` field, and adding age to an overlay does not activate
  this behavior.
</Note>

## Seller impact

Sellers using a built-in adapter do not need a new configuration field. A
custom or upstream sales agent must return the exact
`ext.scope3_product_targeting.demographics.age` declaration or its product is
filtered from that brief. Products with a different range, an undeclared range,
or a provider mapping that would broaden the request are not offered.
