Provider-account campaign mirroring is available to buyers with an eligible
connected account. It is read-only: Interchange does not create,
update, pause, reactivate, or cancel campaigns in the connected account.
Tracked campaigns
Connecting a provider account lets Interchange materialize its campaigns as read-only,management: "tracked" projections. The connected provider remains
the source of truth. Interchange periodically reconciles the
projection and provides shared identity, audit, relationship rollups, and live
delivery access around it.
The compatibility API value for these projections is mode: "directed".
directed is a deprecated wire discriminator, not a product name. Use the
management field to understand who operates a campaign:
management: "tracked"means it was mirrored from provider-account activity that Interchange did not author. The projection is read-only.management: "managed"means the campaign uses the canonical Interchange buyer lifecycle. Discover products and create, read, update, pause, or cancel its media buys through the buyer media-buy APIs.
media_buy_id and the storefront’s adcp_media_buy_id.
Tracked campaigns return
directed.provenance: "connected_account" with connection/account IDs,
provider, mirror freshness, and upstream media-buy identity.
Connect and subscribe an account
First connect the official adapter and map its discovered account to an advertiser. For an agent-driven setup:- Call
list_storefronts, thenconnect_storefrontto obtain the human OAuth handoff URL. - Call
list_storefront_connectionsandlist_storefront_connection_accountsto choose a buyable account. - Read
list_storefront_connection_account_mappings. If needed, callmap_storefront_connection_account_to_advertiserwith the intended advertiser. - Call
subscribe_directed_campaignswith the mapped connection and account IDs to start the read-only mirror.
backfillStart, lastSyncedAt, lastSyncStatus,
lastSyncError, and mirrored/retired/skipped counts. Read the same state later
with:
backfillStart is a fixed metadata-history boundary, not a progress meter. A
subscription remains durable when enumeration is unsupported or temporarily
unhealthy; the status reports ERROR and the worker retries. Existing valid
mirrors survive a failed or incomplete snapshot.
When a broad account read omits a known nonterminal campaign, Interchange
performs a bounded direct read before retiring its projection. A complete
terminal response preserves campaign and package history even if the provider
returns no packages. A failed or incomplete direct read retains the last valid
mirror.
To stop mirroring, call unsubscribe_directed_campaigns. Interchange pauses
the sweep and retires local projections; it does not delete upstream campaigns.
Registered AdCP storefront sources
A buyer may project a registered third-party AdCP storefront source into the same connection plane. Register source credentials, discover the source account withlist_available_accounts, map it to an advertiser, then
call connect_adcp_storefront:
connectionId and connectionAccountId; use them with
the normal subscribe, subscription-status, campaign-read, and delivery-read
operations. The operation accepts only sources already registered on an active
storefront. It never accepts an arbitrary endpoint URL or raw secret.
For registered sellers, a snapshot is complete only when every requested page
returns boolean pagination.has_more, every cursor advances, every buy carries
a valid ISO currency, and any returned account ID matches the pinned account.
Incomplete snapshots never retire an existing projection.
List and inspect mirrors
Use the shared campaign surface and compatibility mode filter:GET /api/v2/buyer/campaigns/{campaignId} returns the tracked campaign and its
single mirrored media buy. Discovery, execute, pause, reactivate, and ordinary
campaign mutations reject tracked projections.
To prioritize a fresh upstream snapshot without changing the provider account, send the
refresh-only compatibility request:
Meta: observed automation controls during refresh
Tracked Meta campaigns that use Advantage+ audience targeting can return provider-observed automation controls during refresh. The Meta adapter validates and retains those controls in its provider readback evidence so a known control does not make the complete refresh fail as unsupported. The shared directed campaign response does not expose raw Meta automation controls, and they do not appear in the package’s canonicaltargeting_overlay or grant write
authorization. The tracked surface remains read-only, and the values reflect
provider state rather than an Interchange-authored targeting decision.
Active individual_setting controls are reported only when advantage_audience: 1
is also present; an active individual control without the automation anchor is not
representable and causes the upstream read or refresh to fail closed. All other
active automation dimensions (e.g. creative_audience_pairing) and any
malformed or unrecognized values are likewise not representable. Adapter-created
packages with an expected ledger use full durable product/request/confirmation
authorization rather than provider-observed readback.
Relationship rollup
Scale lives on the provider-account relationship rather than the default campaign list. Each account may return acampaignRollup:
Money never rolls up across accounts because accounts on one connection may
use different currencies.
Presences: audiences and event sources
Connected accounts may expose first-party audiences and event sources as account presences. UseGET /api/v2/buyer/storefront-connections/{connectionId}/accounts/{accountId}/presences
or list_account_presences. This is a read-only discovery surface; it does not
sync an audience or authorize a provider mutation.
Read delivery through the provider
Use the normal campaign delivery endpoint:get_media_buy_delivery. Raw payloads and time series are not cached. Only the
latest aggregate media-buy/package metrics, exact requested window, and refresh
time are persisted. Subscription and metadata sweeps never pull delivery.
If dates are omitted, the read requests the one-year window through yesterday.
Provider window limits may cause Interchange to split the request into
consecutive chunks before merging aggregate results.
Errors and recovery
- Account or mapping not found: re-list the official connection and discovered accounts, then use only returned IDs.
lastSyncStatus: "ERROR": inspect safeerrorCode,errorField,errorReason, andupstreamCodefields. Reconnect only for authentication or authorization failures; retry provider-shape or availability failures.mirrored: 0with successful sync is an empty eligible history window, not a failed backfill.
Boundaries
- The tracked-campaign surface is subscription, mirror, refresh, presence, relationship-rollup, and delivery read-only.
- Campaigns created or managed through Interchange use the canonical buyer product and media-buy lifecycle, not a tracked-campaign write path.
- Change webhooks, scheduled delivery/export, invoice-grade reporting, and BigQuery delivery history are not part of tracked-campaign mirroring.
- Availability never subscribes an account and never grants authority to mutate its campaigns.