What TikTok Events API does
TikTok's Events API sends conversion and engagement events (ViewContent, AddToCart, CompletePayment, and others) from your server to TikTok directly, the same events your TikTok Pixel already tracks client-side. It exists for the same reason Meta's Conversions API exists: pixel-only delivery loses events to browser and network conditions the server does not depend on.
How delivery works
A server-side HTTP POST to TikTok's Events API endpoint carries the event name, timestamp, matched customer parameters (hashed email/phone where available), and an event ID shared with the corresponding client-side Pixel event for the same action.
- Server-side GTM. If a server-side Google Tag Manager container is already in place, TikTok Events API becomes another tag reading from the same event stream.
- Shopify. TikTok's Shopify channel app includes native server-side event delivery - the fastest path for Shopify merchants.
- Direct integration. A backend call from your application server for custom platforms.
Dedupe with the TikTok Pixel
Send the same event ID from both the Pixel and the Events API call for the same real-world action. Without it, TikTok either double-counts the conversion or reports the server event as unmatched to any browser signal - neither is correct, and both muddy optimization decisions TikTok's algorithm makes off this data.
Consent handling
Gate the server-side event on the same consent record your Pixel implementation respects. A visitor who declined tracking consent should not generate a server-side event any more than a client-side one.
How to verify it worked
- Open TikTok Ads Manager -> Assets -> Events, and check the connection status and delivery health for your Events API source
- Use TikTok's Test Events tool to confirm a sent event registers with the correct parameters
- Confirm match rate is reported and reasonable - a very low match rate usually means missing or improperly formatted hashed customer data, not a broken connection
- Fire a real or controlled test conversion and confirm it appears once, not duplicated across Pixel and server sources