POST /api/v2/buyer/advertisers/{advertiserId}/event-sources/sync
Syncs your event source configurations onto an advertiser. Each source gets an event_source_id you pass on every log-event call. Sync is idempotent — re-sending the same config returns unchanged. Events sent to an unregistered source are rejected, so sync before you log.
Request
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
advertiserId | string | Yes | Path. Owning advertiser |
account | object | Yes | { account_id }. account_id must equal the path advertiserId |
event_sources | object[] | Yes | 1–50 sources to sync |
event_sources[].event_source_id | string | Yes | Buyer-assigned ID (1–255 chars) |
event_sources[].name | string | No | Human-readable label (1–255 chars) |
event_sources[].event_types | enum[] | No | Restricts accepted types (e.g. purchase, lead, add_to_cart, custom). Omit to accept all |
event_sources[].allowed_domains | string[] | No | Domains authorized to send events for this source |
event_sources[].integration_platform | string | No | Scope3 extension for the source system, such as Hightouch, CRM, MMP, or server API |
event_sources[].mapping | object | No | Scope3 extension that records the source fields used to produce log-event payloads |
event_sources[].mapping.event_id_field | string | No | Source field mapped to events[].event_id for dedupe and retries |
event_sources[].mapping.event_type_field | string | No | Source field or expression mapped to canonical ADCP event_type |
event_sources[].mapping.event_time_field | string | No | Source timestamp field mapped to event_time |
event_sources[].mapping.user_match_fields | string[] | No | Source fields available for matching, such as click IDs or hashed identifiers |
event_sources[].mapping.value_field | string | No | Source field mapped to events[].custom_data.value |
event_sources[].mapping.currency_field | string | No | Source field mapped to events[].custom_data.currency |
event_sources[].mapping.order_id_field | string | No | Source field mapped to events[].custom_data.order_id |
event_sources[].mapping.content_ids_field | string | No | Source field mapped to product, SKU, or content identifiers |
event_sources[].mapping.consent_field | string | No | Source field used to gate consented event forwarding |
event_sources[].mapping.dedupe_strategy | string | No | How stable event IDs are generated and deduplicated |
event_sources[].mapping.notes | string | No | Human-readable implementation notes for the source contract |
event_sources[].test_event_code | string | No | Default test code to use while validating the integration |
delete_missing | boolean | No | Archive buyer-managed sources not in this payload (default false) |
Response
action is one of created, updated, unchanged, failed, or deleted. A failed result carries an error message; the rest of the batch still applies.
Errors
400 VALIDATION_ERROR—account.account_iddoes not match the path, emptyevent_sources, or more than 50 sources.404 NOT_FOUND—advertiserIddoes not exist or is not visible to the authenticated customer.
Related
Event source tasks
All event source operations
Log Events guide
How event sources and log-event fit together
Log event
Send events through a registered source
Conversion API
Identity-hashing rules and event payloads