Skip to main content
A browser pixel only fires if the viewer’s browser lets it. Ad blockers, Safari’s tracking prevention, and a viewer who declined cookies all take a bite out of what a client-side Meta Pixel or TikTok Pixel ever reports. TrackPlay’s server-side senders skip the browser entirely: when a lead, a click or a sale happens, TrackPlay’s own servers call Meta’s Conversions API, TikTok’s Events API and GA4’s Measurement Protocol directly. Three integrations, configured the same way: Meta CAPI, TikTok Events, GA4.
Known issue: the credential does not save. On all three integrations the pixel or measurement ID saves correctly, but the secret that authenticates the send (the Meta and TikTok access_token, the GA4 api_secret) is discarded before it is stored. The integration then reports Active while every send fails authentication.Setting these up will not work until that is fixed. If you have already configured one and seen no events arrive at Meta, TikTok or GA4, this is why, and it is not something you can work around from your side. Contact support@trackplay.io before spending time debugging your token.Everything else on this page (the event mapping, the revenue-only rule, and the dedup behaviour) is accurate and unaffected.

Connect one

1

Open Integrations

Click Integrations in the sidebar, find Meta CAPI, and click Connect.
2

Paste your pixel ID

From Events Manager in Meta Business Suite.
3

Paste your access token

A CAPI system-user token, generated in Events Manager under Settings → Conversions API.
4

Optional: test event code

Paste a test event code from Events Manager to route events to Test Events instead of your real dataset while you verify the connection.
5

Save

The integration goes Active immediately. There is no postback to wait for.
string
required
Your Meta pixel ID.
string
required
A Conversions API system-user access token. Treat it like a password.
string
Routes every event to Events Manager’s Test Events tab instead of your live dataset.

What fires, and as what

Every server-side sender shares one canonical event set. Not every canonical event reaches every platform: engagement events go to GA4 for funnel reporting, but only conversions and leads are worth a dedicated pixel event on Meta and TikTok. lead.hot and lead.known_customer are watch-behavior predictions, not standard purchase intent, so they go out as custom events on Meta and TikTok rather than being mapped onto Lead or Purchase. Sending them as a standard event would pollute the optimization signal your real conversions train on. As a custom event they are still usable: build a Website Custom Audience (Meta) or a custom event audience (TikTok) on the event name and retarget or build a lookalike from it.

Conversions fire on real revenue only

A conversion.created send only happens for a genuine purchase or rebill. A refund, a chargeback, and anything flagged as a test sale never reach Meta, TikTok or GA4, whichever cart or API sent it.
A refund is never un-fired. TrackPlay does not send a compensating “Purchase reversed” event to any of the three platforms, because none of them has one. Reconcile refunds on the ad platform’s own side if you need your reported revenue to net out.

Matching a viewer to a person

Meta and TikTok match a conversion to a person using whatever identity TrackPlay has for that session. Email and phone are SHA-256 hashed before they leave TrackPlay’s servers. fbc, fbp and ttclid (the ad-click identifiers) are sent raw, because Meta and TikTok match on the raw values directly.
  • Email, phone, first name, last name: hashed. A cart postback’s buyer name is split on the first space; everything after it becomes the last name. Wrong for some names, but it is what Meta’s own examples do, and a wrong-but-present last name still matches more often than an absent one.
  • fbc / fbp / ttclid: read from the click identifiers TrackPlay’s player captured when the viewer landed, resolved from the converting session. Never fabricated: a made-up click identifier matches nobody and actively damages match quality.
  • IP and user agent: sent, but never counted as a match key on their own. Meta documents them as insufficient alone, so an event with no email, phone, name, fbc, fbp or ttclid is not sent to Meta at all rather than shipped as a guaranteed reject.

Deduplication

If you also fire your own Meta or TikTok pixel from the thank-you page, both platforms dedupe a pair of events that share the same event name and the same event_id. TrackPlay derives that ID deterministically:
This deterministic ID is only applied to conversions you send through the Conversions API (POST /api/v1/conversions). Set your own event_id field on that call, or omit it and TrackPlay derives the value above from your conversion_id.A conversion that arrives through a cart integration (ClickBank, Kiwify, Digistore24 and the rest) does not currently carry this derived ID. Each server-side Purchase from a cart postback ships with a fresh, unpredictable ID, so a thank-you-page pixel cannot be set up to match it. If you run a cart integration and your own browser pixel also fires Purchase on the thank-you page, expect Meta and TikTok to report the sale twice until one of the two is turned off.
If you are not firing your own pixel on the thank-you page, none of this matters: TrackPlay’s server-side send is the only Purchase event Meta or TikTok ever sees, and there is nothing to dedupe.

When it does not work

Confirm the pixel ID or measurement ID is for the same account you are checking. Then confirm the access token or API secret was not rotated on the platform’s side after you saved it here. TrackPlay does not surface a per-event delivery log for these three integrations today, so a revoked token or a malformed credential fails on Meta’s or TikTok’s side with nothing visible on TrackPlay’s. Contact support if pixel ID and credentials both check out and events still do not appear.
“No Meta match key on this event” means the viewer carried no email, phone, name, fbc, fbp or ttclid. This is common on play.milestone and cta.clicked events from a viewer who has not submitted a lead form and has no ad-click identifier on their session; it is not sent rather than shipped as a guaranteed 400.
Check the viewer has a _ga cookie. GA4’s Measurement Protocol requires a real client_id to count a session; TrackPlay refuses to send a fabricated one, so a viewer with GA blocked or never loaded produces no event rather than a phantom user.
See Deduplication above. This happens when a cart-postback conversion’s server-side Purchase and your own browser pixel’s Purchase both fire with different event IDs.