TikTok Events API Setup
The same server-side pattern, TikTok's naming
TikTok's Events API follows the now-familiar server-to-server conversions API pattern established by Meta: a backend or server-side tag sends event data directly to TikTok, independent of the browser-based TikTok Pixel, improving resilience to ad blockers and iOS tracking restrictions while enriching match quality with first-party identifiers. If you've implemented Meta CAPI, the conceptual model transfers almost entirely — only field names and a few platform-specific quirks differ.
Required identifiers and TikTok's click ID
TikTok's equivalent of Meta's fbc is ttclid — the TikTok click ID appended to the landing page URL when a user clicks a TikTok ad. Like fbc, it must be captured client-side (from the URL query string) at landing and persisted (first-party cookie or passed server-side) so it's available when the corresponding server-side event fires later. Without a captured ttclid, server-side events can still be sent, but attribution quality drops significantly since TikTok has nothing to directly tie the event back to a specific ad click.
{
"event_source": "web",
"event_source_id": "YOUR_PIXEL_CODE",
"data": [
{
"event": "CompletePayment",
"event_time": 1735689600,
"event_id": "order_4821",
"user": {
"email": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44",
"phone": "374f6de9b1a01d8e57c0b4c9fce5e8e4a1cf6c9b8ce3b3f0e0a7f1cf7b2b8c88",
"ttclid": "C4A6D1E2.1.1735680000000",
"ip": "203.0.113.42",
"user_agent": "Mozilla/5.0 ..."
},
"properties": {
"currency": "USD",
"value": 149.50
}
}
]
}event_id deduplication works the same way as Meta's
event_id between both calls is how TikTok deduplicates them into a single counted event. Skip this, and you'll see conversion counts roughly double in TikTok Ads Manager relative to your actual order count — a common and easy-to-catch QA check when validating a new integration.Testing before going live
TikTok Ads Manager's Events Manager provides a Test Events tool that shows incoming server-side events in near real time, including field-level validation errors — malformed hashes, missing required fields, or incorrect event names that don't match TikTok's standard event taxonomy (CompletePayment, InitiateCheckout, AddToCart, etc.). Always validate new server-side integrations here before relying on live Ads Manager reporting to confirm correctness, since reporting delays make iterating directly against production dashboards slow and error-prone.
TikTok Events API vs. Meta CAPI field mapping
| Concept | Meta CAPI field | TikTok Events API field |
|---|---|---|
| Click identifier | fbc | ttclid |
| Browser identifier cookie | fbp | ttp |
| Deduplication key | event_id | event_id |
| Hashed email | user_data.em | user.email |
Standard event names must match TikTok's taxonomy exactly
purchase instead of CompletePayment) means the event is accepted but won't map to TikTok's optimization and reporting events — campaigns optimizing toward 'Complete Payment' as a goal simply won't see your events as qualifying conversions. Always map to TikTok's documented standard event taxonomy rather than inventing event names that happen to feel descriptive.What's Next?
Having implemented this pattern for Meta and TikTok, the remaining major ad platforms — Snapchat, Pinterest, and LinkedIn — follow essentially the same server-side conversions API shape, making each additional platform integration incrementally faster than the last.
I build these systems professionally.
Whether it's a RAG pipeline, analytics migration, or AI workflow — let's talk.