Destinations
A destination is somewhere your data goes. Connect them under Websites → your site → Destinations. Each one is independent: connect one, or all ten, in any order.
The three families
They are not interchangeable: what a destination receives depends on what it is.
| Family | Destinations | Receives |
|---|---|---|
| Ad platforms & analytics | Meta, Google Ads, GA4, TikTok, Snapchat, Pinterest, Reddit | SHA-256 hashes only, never an email in clear text |
| CRM & email | Klaviyo, HubSpot, Mailchimp, ActiveCampaign | email and phone in clear text, and only with consent |
| Your own infrastructure | BigQuery, Snowflake, S3/R2, webhook | raw events; personal data only if you switch it on |
CRMs get clear text because they operate on your own customer relationships and can't work with hashes. Ad platforms never do, whatever you pass us.
What each one needs
| Destination | For events | Extra, only for audience activation |
|---|---|---|
| Meta | Pixel ID + access token (see below) | Ad Account ID + token with ads_management |
| Google Ads | Customer ID of the operating account (not a manager) + conversion action + Enhanced conversions for leads turned on | account eligible for Customer Match |
| GA4 | Measurement ID + API secret | n/a (measurement only) |
| Mixpanel | Project token (+ US/EU residency) | n/a (product analytics only) |
| TikTok | Pixel code + token | Advertiser ID + Audience (DMP) permission |
| Snapchat | Pixel ID + Conversions API token | Ad Account ID + Marketing API OAuth (client ID/secret + refresh token) |
| Ad account ID + token | nothing extra | |
| Account ID + conversion access token | OAuth credentials from a developer app — on request | |
| Klaviyo | Private API key | key scoped lists:write + profiles:write |
| HubSpot | Private App token | token scoped crm.lists.write |
| — | activation only (Matched Audiences). On request: needs a LinkedIn-approved developer app | |
| X (Twitter) | — | activation only (Custom Audiences). On request: needs an approved X Ads API developer account |
| Mailchimp | API key + Audience ID | activation only: syncs contacts into your Audience, tagged with the segment name |
| ActiveCampaign | API URL + API key + List ID | activation only: syncs contacts into your list, tagged with the segment name |
| Warehouse | target + its credentials | n/a (export only) |
Why there's a second column
Sending conversions and building audiences are different APIs at the same provider. Meta delivers events to your pixel, but Custom Audiences live on your ad account, two different objects.
So a destination can legitimately show Active for tracking and Needs setup for audiences. It's one connection, not two: usually just one extra field to fill in on the tab you already configured. The Segments page tells you exactly which field is missing.
Tokens that expire, and the one that doesn't
Most credentials on this page never expire: a Klaviyo, HubSpot, Mailchimp or GA4 key keeps working until you revoke it. A few ad platform tokens do expire — and when one does, nothing announces it. Deliveries start coming back 401, conversions stop arriving, and the first thing you notice is a ROAS drifting down for reasons that look like the market.
| Destination | How long its token lasts |
|---|---|
| Meta | Events Manager token: ~60 days · system user token: no expiry |
| ~60 days — unless you fill the three OAuth fields, then we renew it for you | |
| Snapchat | Conversions API token: no expiry. The OAuth used for audiences lasts 30 minutes, and we renew it |
| Conversion access token: no expiry. The OAuth used for audiences lasts 1 hour, and we renew it | |
| Everything else | no expiry |
Meta: generate a system user token
The token Events Manager offers under Generate access token belongs to you as a person: it dies after about 60 days, and also when you change your password. A system user token belongs to the business and has no expiry date. It takes ten minutes, once:
- Business settings → Accounts → Apps. Empty? Create an app at developers.facebook.com (type: Business) and add it here. No app review is required while only you use it.
- Business settings → Users → System users → Add. Any name, role Employee.
- Assign assets → your pixel (full control), plus your ad account if you want audience sync and automatic ad-spend import.
- Generate new token → pick the app → tick
ads_managementandbusiness_management→ leave the 60-day expiry box unticked → copy the token (shown once).
Paste it into the Meta tab, save, then press Check token: we ask Meta directly and tell you which of the two tokens you have and when it expires.
Test event codes
Meta, TikTok, Snapchat and Pinterest accept an optional test event code. With one set, events show up in that platform's live debug view instead of counting in reporting.
Remove it when you go live. A test code left in place means your real conversions never reach reporting, and the campaign optimises on nothing.
Deduplication with your browser pixel
You do not need to remove your existing pixel. Browser and server events carry the same event_id; the platform sees the pair and counts one conversion. Keeping both is more robust: if the browser is blocked, the server still delivers.
Verify before you rely on it
Test all destinations on the Destinations tab fires one synthetic purchase to every configured platform in its test mode and reports what each answered:
- ✅ accepted
- ⏭️ skipped, with the reason (missing credentials, no click ID for this event, no consent…)
- ❌ rejected, with the platform's error
Then watch Delivery for real traffic. See Testing & troubleshooting.
Disconnecting
Disconnect platform at the bottom of each tab removes the credentials and stops delivery immediately. Data already sent to that platform lives there under their retention rules; we can't recall it.