Skip to content

Server-side events · Platform reference

TikTok Events API: events, fields and dedup rules

TikTok Events API 2.0 sends events from your server to an event source (for a website, your Pixel code), usually alongside the TikTok Pixel. Events tend to arrive but not attribute when the ttclid click ID or _ttp cookie isn't captured, when IP and user agent are left out (the Pixel shares them by default, the Events API doesn't), or when event_id doesn't match the Pixel so the two copies don't deduplicate.

Read from the official documentation on 9 November 2026. Sources are listed at the end.

Endpoint and authentication

POST https://business-api.tiktok.com/open_api/v1.3/event/track/

Access token for Events API 2.0, generated in TikTok Events Manager (Settings > Generate Access Token)

Standard event names

Spelled exactly as TikTok expects them. A near miss is treated as a different event.

EventUse it for
Purchaserenamed from CompletePayment; the legacy name still works and is supported indefinitely, but reports show Purchase. Send value + currency
Leadrenamed from SubmitForm; the legacy name is supported indefinitely
CompleteRegistrationsign-up completed
InitiateCheckoutcheckout started
AddToCartrecommended params: content_type, quantity, description, content_ids, currency, value
AddPaymentInfopayment details added
ViewContentrecommended params as AddToCart
Subscribesubscription
StartTrialnew event; recommended params content_ids, currency, value
SubmitApplicationnew event: application submitted
ApplicationApprovalnew event: application finally confirmed
Contactcontact made
Scheduleappointment booked
Searchrecommended param search_string
Downloaddownload
AddToWishlistwishlist add
PlaceAnOrdersoft-deprecated: still fully supported, sunset in 2027; historical data can't move to a new event
ClickButtonsoft-deprecated: still fully supported, sunset in 2027

Required and recommended fields

FieldWhat it needs
event_sourceWhich kind of event source. For a website Pixel it is "web" (TikTok's own server GTM template sends event_source: "web" with the Pixel code as event_source_id)
event_source_idFor web, the Pixel code; for offline, the offline event set ID; for app, the TikTok App ID
eventStandard or custom event name
event_timeTime the event happened
event_idMust be shared through both Pixel and Events API, with the identical event name, for deduplication
user (email, phone, external_id, ttclid, ttp, ip, user_agent)Match keys; IP and user agent need manual configuration for the Events API
properties.value + properties.currencyRecommended for Purchase, AddToCart, ViewContent and StartTrial

Match keys and hashing

KeyNormalise and hash
emailHashing required (SHA-256 per partner integration docs)
phoneHashing required (SHA-256)
external_idHashing required (SHA-256). Advertiser IDs such as loyalty IDs, customer IDs or your own cookie IDs
ipNot hashed. The Pixel shares it by default; the Events API needs it configured manually
user_agentNot hashed. The Pixel shares it by default; the Events API needs it configured manually
ttpFirst-party _ttp cookie value, limited to the advertiser's domain; send the cookie value as read
ttclidNot hashed

Click ids

Click idWhere it comes from
ttclidTikTok Click ID appended to the landing page URL when someone clicks a TikTok ad. The Pixel also keeps it as a first-party cookie named ttclid. Each Click ID follows the CTA window set in Attribution Manager
_ttpFirst-party cookie the Pixel sets on your domain (on by default, can be turned off in pixel settings); used to match website visitors to TikTok ads. Cookies expire 13 months after they were set or last used

Deduplication

Time limits and batch sizes

How to test before you trust it

Why events arrive but don't attribute

Sources

Platforms change these rules without notice. If a source says something different from this page, the source wins.

Other platforms

All platforms