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

# Ad Platform Resource Capabilities

> Which audiences, signals, and event sources each connected ad platform can report — and how complete each read is

When Apostra reads audiences, signals, or event sources from a connected ad
platform account (see [Connecting Ad Platform
Accounts](/v2/guides/connecting-ad-platforms)), what comes back depends on the
platform. Some platforms return the account's complete inventory. Others can
only see objects that were created through Apostra, or return a single derived
entry rather than a real inventory read. This page documents that coverage per
platform so you know when a result is the whole picture and when it is not.

<Note>
  This page covers direct ad platform adapter connections (Meta, TikTok,
  Google Ads, and similar). On platform-composed storefronts, the same question
  is answered by the `get_account_resources` tool, which labels capability and
  coverage per source on every response — see
  [AdCP on the buy side](/v2/concepts/adcp-on-the-buy-side#linked-account-scope).
  Direct adapter storefronts do not expose that tool.
</Note>

## Reading the tables

Each read falls into one of three coverage classes:

| Coverage           | Meaning                                                                                                                                                    |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Full inventory** | A discovery read returns every eligible object in the account. Treat the result as the account's complete inventory.                                       |
| **Synthesized**    | The result is a single entry derived from the account itself (for example, a tag id computed from the account id), not a read of the platform's inventory. |
| **Seller managed** | The platform returns objects it manages natively — you did not create them and cannot modify or delete them through Apostra.                               |

Two more distinctions matter when interpreting any of these reads:

* **Discovery is not attachment.** These reads answer "what exists in the
  account right now" by asking the platform directly. An object appearing in a
  discovery read does not mean it is attached to, or usable by, any particular
  campaign — and an object synced through Apostra remains tracked even if a
  later discovery read cannot see it.
* **Only a full-inventory read is authoritative.** A synthesized or
  seller-managed result is still real data, but absence from it proves nothing
  about the account. Never treat a partial read as evidence that an object
  does not exist.

## Audiences

Audience inventory is read with a discovery-mode `sync_audiences` call (no
audience list supplied, so nothing is created or modified). No audience
membership data is ever returned — identity, status, and match counts only.

| Platform   | Coverage       | Notes                                                                         |
| ---------- | -------------- | ----------------------------------------------------------------------------- |
| Meta       | Full inventory | All customer-list Custom Audiences in the ad account                          |
| Google Ads | Full inventory |                                                                               |
| Reddit     | Full inventory |                                                                               |
| Spotify    | Full inventory |                                                                               |
| Pinterest  | Full inventory |                                                                               |
| LinkedIn   | Full inventory |                                                                               |
| TikTok     | Full inventory | All Customer File audiences in the ad account                                 |
| Snap       | Full inventory | All Customer List audiences in the ad account                                 |
| Amazon Ads | Not available  | Amazon DSP audience reads require AMC integration, which is not yet supported |

### Audience write and deletion boundaries

Inventory coverage does not imply that every platform supports the same write
lifecycle. Apostra advertises only the operations that the official adapter can
confirm against the provider:

| Platform                        | CRM sync boundary                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Meta, Snap                      | Create, add/remove members, retry to the same provider identity, check readiness, crash-safe exact-run recovery, and provider-confirmed deletion                                                                                                                                                                                                                                                                                                                               |
| TikTok                          | Customer File create/update/readiness/deletion uses durable tenant-owned identity and crash-safe exact-run recovery. Audience targeting is dark for ordinary buyers and is exercised only by the signed staging canary until fresh end-to-end evidence is signed.                                                                                                                                                                                                              |
| Reddit                          | Create, add/remove members, readiness, targeting, and provider-confirmed deletion work in-process. Governed destructive canaries remain blocked because provider inventory exposes only the provider ID and a one-way buyer-identity marker, so crash cleanup cannot yet recover the exact buyer IDs.                                                                                                                                                                          |
| Google Ads                      | Create, add/remove members, retry to the same tenant-owned Customer Match identity, check readiness, target Search and Display buys by canonical buyer audience ID, and perform provider-confirmed deletion.                                                                                                                                                                                                                                                                   |
| LinkedIn                        | Existing eligible Matched Audiences remain discoverable as read-only full inventory. Apostra-managed creation, membership updates, targeting, and deletion are unavailable until LinkedIn approves the separate private Audiences application; this optional capability does not block campaign, measurement, professional-signal, or Lead Gen support.                                                                                                                        |
| Pinterest                       | A targetable Customer List Audience wraps a separate customer-list source. The staged adapter can create the pair, add/remove members, check both resources for readiness, retain durable tenant-owned identity, and archive the exact target audience. Pinterest v5 exposes no deletion operation for the backing customer-list source, so the governed lifecycle and audience targeting remain withheld pending cleanup policy and staged proof with a matchable CRM cohort. |
| Spotify                         | Complete custom-audience inventory and explicit deletion only; customer-list creation fails before provider mutation                                                                                                                                                                                                                                                                                                                                                           |
| Amazon Ads                      | Not available; Amazon DSP/AMC integration is required                                                                                                                                                                                                                                                                                                                                                                                                                          |
| AudioStack, Figma, Flashtalking | Audience sync is outside these creative and ad-serving integrations' scope                                                                                                                                                                                                                                                                                                                                                                                                     |

The governed staging lifecycle exercises the full create,
target-in-a-paused-buy, update, and crash-safe delete path for Google Ads,
Meta, Snap, and Reddit. TikTok runs that same path only inside its signed,
bounded staging probe; it does not advertise ordinary audience targeting until
the resulting evidence is complete and signed.
Adapters with a boundary above remain fail-closed instead of inheriting that
parity claim.

## Signals

Signals are read with `get_signals`, a read-only projection of the platform's
audience inventory into AdCP signal references. Pinterest does not synthesize a
fallback signal: an empty provider inventory stays empty, and an account or
provider error fails the read.

| Platform                                                             | Availability                             |
| -------------------------------------------------------------------- | ---------------------------------------- |
| Meta, Google Ads, TikTok, Snap, Reddit, Pinterest, LinkedIn, Spotify | Available                                |
| Amazon Ads                                                           | Not available — requires AMC integration |

Signal coverage follows the platform's audience coverage above.

## Event sources

Event sources (pixels, tags, conversion actions) are read with a
discovery-mode `sync_event_sources` call. No event payloads are returned. Setup
code is included only where the platform supplies that exact account-scoped
artifact.

| Platform   | Coverage       | What comes back                                                                                                                                                      |
| ---------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Meta       | Full inventory | All pixels in the account                                                                                                                                            |
| TikTok     | Full inventory | All pixels in the account. **TikTok Sales — Website Catalog Ads** readiness additionally proves that the selected Pixel is explicitly bound to the selected catalog. |
| Snap       | Full inventory | All pixels in the account                                                                                                                                            |
| Reddit     | Full inventory | All pixels in the account                                                                                                                                            |
| Spotify    | Full inventory | One pixel per measurement dataset in the ad account                                                                                                                  |
| Google Ads | Seller managed | Conversion actions, all managed by the platform — visible but not created, modified, or deleted through Apostra                                                      |
| Amazon Ads | Seller managed | A single built-in entry for Amazon Attribution; Amazon has no external conversion API                                                                                |
| Pinterest  | Full inventory | Complete Conversion Tag inventory as returned by Pinterest for the selected ad account                                                                               |
| LinkedIn   | Full inventory | Every enabled `CONVERSIONS_API` conversion rule on the selected account, one AdCP event source per eligible rule                                                     |

Seller-managed entries describe measurement the platform performs natively.
Synthesized entries confirm the platform's tagging surface exists for the
account but say nothing about which tags are actually installed.

LinkedIn conversion rules are managed in LinkedIn Campaign Manager, not
through Apostra. `sync_event_sources` reads each enabled `CONVERSIONS_API` rule
the account already has and maps its LinkedIn conversion type to the closest
AdCP `event_type` (an unrecognized or newly introduced LinkedIn type maps to
`custom`, named after the conversion rule, rather than failing the read).
Insight Tag rules remain valid for native campaign optimization and
association, but are not returned by this direct-event sync and logging
surface. A disabled rule that is explicitly requested by `event_source_id`
fails with `EVENT_SOURCE_DISABLED` instead of being silently synced. Creating,
renaming, or deleting a conversion rule through `sync_event_sources` is not
supported and fails with
`CONVERSION_RULE_MUTATION_UNSUPPORTED` or `EVENT_SOURCE_UPDATE_UNSUPPORTED` —
manage the rule itself in Campaign Manager, then re-sync to pick up the
change. `log_event` accepts events only for a rule that is enabled and owned
by the selected account, and rejects an event whose type does not match the
rule's mapped `event_type`. A full-inventory `sync_event_sources` call (no
`event_sources` in the request) fails with
`LINKEDIN_EVENT_SOURCE_DISCOVERY_TOO_LARGE` for an account with more than 500
enabled `CONVERSIONS_API` rules, instead of silently returning only some of
them — request the specific `event_source_id` you need instead of full
discovery on an account that large.

Pinterest treats the ad account and Conversion Tag as separate identities.
Apostra rejects request-account mismatches before Pinterest I/O, validates every
returned Tag against the selected account, and relays executable setup only
when Pinterest returns that Tag's personalized `code_snippet`. A missing,
malformed, duplicate, or cross-account inventory fails closed. Server-side
Pinterest event delivery remains unavailable until the signed dedicated-account
validation is complete.
Existing Tags can be revalidated through `sync_event_sources`; changing or
removing Pinterest Tag configuration is not supported and fails visibly.
Successful discovery returns the complete inventory and is never truncated.
Pinterest responses are limited to 500 Tags and 256 KiB, and the complete
projected result is limited to 128 KiB. If any limit is exceeded, the operation
fails before replacing the last proven binding snapshot.

## Commerce catalogs and product sets

**Meta Sales — Website Catalog Sales** discovers every commerce catalog owned
by the selected account's Business Portfolio, then reads every product set in
each catalog. A catalog is offered only with non-empty product sets, and
each product-set candidate retains its parent catalog identity. These are
activation resources for `meta_sales_website_catalog`, not audience signals.

The read is fail-closed: missing Business Portfolio context, incomplete
pagination, invalid ownership data, or a product set returned under a different
catalog makes the resource inventory unavailable rather than producing a
partial candidate list. Creation repeats the provider read before mutation.

## Related

<CardGroup cols={2}>
  <Card title="Connecting Ad Platform Accounts" href="/v2/guides/connecting-ad-platforms" icon="plug-circle-check">
    How account access is granted and what write access means
  </Card>

  <Card title="Ad Platform Accounts" href="/v2/concepts/ad-platform-accounts" icon="building">
    Organization vs advertiser accounts and how discovered accounts map to advertisers
  </Card>
</CardGroup>
