The TikTok pixel reports what happens in the browser: a purchase, a page view, an add-to-cart. It is exposed to the same signal loss as every other browser pixel, an ad blocker, Safari's ITP, a shopper who closes the tab before the script fires. The Events API is TikTok's server-to-server counterpart, built for exactly the events the browser can lose.
What the Events API is
Instead of relying only on the browser to report an action, your server sends the same event directly to TikTok: the event name, when it happened, and whatever customer information you can attach. A purchase captured from the order itself reaches TikTok whether or not the pixel ever fired in that shopper's browser.
Running both, without double-counting
As with every server-side setup, the Events API is meant to run alongside the pixel, not replace it, with the two deduplicated against each other. Both the browser event and the server event for the same action need a shared, deterministic event ID, so TikTok can recognize them as one conversion instead of two. Skip that step and a single purchase can be reported twice, inflating conversions and the ROAS calculated from them.
What raises match quality
TikTok matches a server-side event to a real ad-exposed user using whatever identifiers you attach:
| Signal | Role |
|---|---|
| Email (hashed) | Primary match key |
| Phone (hashed) | Strong secondary match key |
TikTok click id (ttclid) | Ties the event directly to the ad click |
| external_id | Your own stable customer id |
Every identifier is hashed (SHA-256) before it leaves your server. TikTok never receives a plaintext email or phone number.
Consent, and TikTok's limited data use mode
Consent has to be resolved before an event is built, not after: opt-in enforced where it's required, opt-out honored where it applies, including a US visitor's Global Privacy Control signal. Where a US opt-out applies, TikTok supports a Limited Data Use mode: the event is still sent for basic measurement, but flagged so TikTok restricts how it can use the data, instead of either sending it in full or dropping the conversion outright.
Why server-side delivery keeps the conversion
A server-side event built from the order itself carries the customer's real, current email and phone, not whatever fragments the browser happened to hold at that moment, and it is sent independent of whether the shopper's browser cooperated. Fed from a unified first-party profile, even a purchase with thin browser-side data arrives at TikTok as a strong match.
What you need
- A TikTok Business account with a pixel and Events API access configured.
- An Events API access token.
- A shared
event_idon the browser and server event, for deduplication. - Consent resolved, and identifiers hashed, before anything is sent.
The Events API does not change what TikTok can do with a conversion. It changes whether the conversion reaches TikTok at all, and that gap is exactly where ad blockers and browser privacy features do the most damage.