§ 02
Connecting CAPI platforms
Wire Meta CAPI, TikTok Events API, Google Ads, GA4, Pinterest, Snapchat, LinkedIn, Reddit, Criteo, Awin, Taboola, and Outbrain. One schema in, 12 platforms out, deduplicated.
Connecting CAPI platforms
TrackLayer fans out every incoming event to the CAPI (Conversions API) destinations you configure. You manage credentials once in the dashboard; we handle per-platform payload shaping, identity stitching, click-ID restoration, and retry.
Supported platforms
| Platform | Endpoint used | Credentials required |
|---|---|---|
| Meta (Facebook + Instagram) | graph.facebook.com/v{N}/{pixel_id}/events | pixel_id, access_token |
| TikTok | business-api.tiktok.com/open_api/v1.3/event/track/ | pixel_id, access_token |
| Google Ads (Enhanced Conversions) | googleads.googleapis.com/v{N}/.../uploadClickConversions | customer ID, conversion action ID, developer token, OAuth client ID/secret + refresh token |
| Google Analytics 4 (Measurement Protocol) | google-analytics.com/mp/collect | measurement_id, api_secret |
api.pinterest.com/v5/ad_accounts/{id}/events | ad_account_id, access_token | |
| Snapchat | tr.snapchat.com/v3/{pixel_id}/events | pixel_id, access_token |
api.linkedin.com/rest/conversionEvents | ad_account_id, access_token, conversion_id | |
ads-api.reddit.com/api/v2.0/conversions/events/{account_id} | account_id, access_token | |
| Criteo | api.criteo.com/2024-07/events | partner_id, OAuth client credentials |
| Awin | api.awin.com/advertisers/{id}/transactions | advertiser_id, api_token |
| Taboola | api.taboola.com/1.2/{account_id}/s2s-action | account_id, access_token |
| Outbrain | api.outbrain.com/v1/conversions | marketer_id, access_token |
Connect a platform
- Open Platforms in the dashboard sidebar.
- Pick a destination from the 3×4 grid. Connected platforms show their live status pill (OK / DEGRADED / DROPPED); unconnected show
+ CONNECT. - Click
+ CONNECT. The inline wizard walks through the 3-step flow:- Intro — what the platform expects + a link to the provider's docs for each credential
- Credentials form — per-platform validation runs on blur (Meta pixel_id must be numeric, Google Ads customer_id must match
\d{3}-\d{3}-\d{4}, etc.) - Review — confirm + test. A 200 from the provider's test-connection endpoint activates the platform.
Credential-format tips
Meta
pixel_id— numeric ID from Events Manager → Data Sources → Pixel → Settingsaccess_token— generate a system-user token in Business Manager → Users → System Users → Generate New Token. Required permissions:ads_management,business_management.
TikTok
access_token— Events Manager → Web Events → Set Up Events API → Generate Access Token- Token must be regenerated if the owning Business Center user loses the Events role.
Google Ads
- Requires both a developer token (Ads API developer access) and an OAuth refresh token with
https://www.googleapis.com/auth/adwordsscope. - We use the Enhanced Conversions for Leads API (
uploadClickConversions), soconversion_action_idmust be an existing conversion action in the target customer account.
GA4
measurement_idisG-XXXXXXXXXX(not the UA-prefixed legacy ID).api_secretis generated at Admin → Data streams → Web → Measurement Protocol API secrets.
- Requires LinkedIn Conversions API access (separate from Page/Profile API). The
conversion_idis from Campaign Manager → Conversions.
Duplicate prevention
TrackLayer does not dedupe events across platforms — every destination sees every matching event. Deduplication happens within a platform using the event_id you provide (or we generate). Meta's pixel-and-CAPI dedup relies on this; same for TikTok, Pinterest, and others.
For routing subsets — "send purchases only to Meta + Google Ads" — use routing rules.
Testing a connection
The TEST button on every platform card fires a synthetic test_event to that provider's sandbox (where available). Response status + latency surface directly in the card.
For platforms without a sandbox (Awin, Criteo), the test hits the real API with a minimally-valid payload — providers log it as a test but don't charge it against your conversion budget.
Status pills — what they mean
- OK — last attempt succeeded within the 24h window.
- DEGRADED — 5–50% of recent deliveries failed. Usually a token about to expire or a field validation issue.
- DROPPED — most recent deliveries failed. Check Quality → Contributing Factors for the specific field triggering reject.
- IDLE — credentials valid, but no events sent yet.
Next steps
- Define routing rules — override the default "fan out to everyone" behavior per event type
- Event quality reference — understand Match Quality Score + per-field completeness