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 + Conversions API token | Ad Account ID + token with ads_management |
| Google Ads | Customer ID | account eligible for Customer Match |
| GA4 | Measurement ID + API secret | — (measurement only) |
| Mixpanel | Project token (+ US/EU residency) | — (product analytics only) |
| TikTok | Pixel code + token | Advertiser ID + Audience (DMP) permission |
| Snapchat | Pixel ID + token | Ad Account ID |
| Ad account ID + token | nothing extra | |
| Account ID + OAuth credentials | nothing extra | |
| Klaviyo | Private API key | key scoped lists:write + profiles:write |
| HubSpot | Private App token | token scoped crm.lists.write |
| Ad account ID + access token | activation only (Matched Audiences) — syncs the segment as a DMP segment; token needs rw_dmp_segments and expires ~60 days | |
| X (Twitter) | Ads account ID + 4 OAuth 1.0a keys | activation only (Custom Audiences) — 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 | — (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.
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.