TikTok Events API Postback Setup
A TikTok Events API postback sends conversions straight to your TikTok ad account from your server, bypassing browser limits and blockers. Without it, TikTok's algorithm trains on incomplete data and struggles to find paying users across CIS and Tier-1 GEOs. Here's how to capture ttclid, structure events, and avoid duplicate conversions.
What TikTok Events API is and why buyers need it
TikTok Events API (formerly TikTok CAPI) is a server-side channel for sending conversions, used alongside the TikTok Pixel or on its own. It doesn't depend on browser cookies or privacy settings, so data arrives more reliably — especially from mobile traffic and PWAs. For a media buyer, this is a direct path to sharper optimization: the more real conversions TikTok sees, the faster its algorithm finds similar paying users. Without Events API, campaigns often hit a CPA ceiling because they're optimizing on incomplete signals.
What to set up before you start
You'll need access to TikTok Ads Manager or Business Center with rights to the ad account, a created Pixel (Event Source), and an Events API access token generated in the event source settings. Save the token and Pixel ID in your tracker or directly in APEX's postback module. Make sure the domain sending traffic is linked to the same Business Center, otherwise events won't attach to the campaign.
Capturing and storing ttclid
TikTok appends a ttclid parameter to the link on ad click — it's what ties a conversion back to a specific ad impression. On a PWA landing page, capture ttclid from the URL on first load and store it with the click ID (subid), because once the PWA is added to the home screen, address bar parameters are no longer readable. Skip this step and the postback still fires, but without an ad link — TikTok simply can't credit it.
Postback structure: which events to send
A standard set for an arbitrage funnel is ViewContent on offer view, CompleteRegistration on lead, and CompletePayment or Purchase on deposit. Each event goes as a POST request to the Events API endpoint with an event_id, event name, timestamp, ttclid in the context object, and, where possible, hashed user data (email, phone, IP, user agent) for better matching. The closer the send time is to the real user action, the more accurately TikTok counts it.
Deduplication: making sure a conversion isn't counted twice
If a browser Pixel fires alongside the server event, both need the same event_id so TikTok treats them as one action instead of doubling it in reporting. Duplicate conversions distort CPA and confuse the optimization algorithm, so dedup isn't optional once Pixel and Events API run together. If there's no Pixel on the page and events only come from the server, dedup isn't needed — but every event still needs a unique event_id per action.
Verifying with Test Events and Event Match Quality
Before launching, send a few test events through the Test Events tool in TikTok Events Manager to confirm they arrive and fields match. Also watch Event Match Quality (EMQ) — the higher it is, the more precisely TikTok ties an event to a specific user and ad. A low EMQ usually means matching parameters are missing; adding a hashed email or phone, if collected in the funnel, is the fastest fix.
Common postback mistakes
The most frequent issues are an expired or revoked access token, a missing ttclid because the visit didn't come from a TikTok ad, and a time gap between the click and the server-side conversion. Another common one is leaving a test_event_code active after testing — TikTok accepts those events but excludes them from optimization. APEX stores ttclid with the click and passes it into the postback automatically, which removes most of these manual errors.
FAQ
- Do I need TikTok Pixel installed alongside Events API?
- No — server-only events work fine and are often more reliable on mobile. If Pixel is already installed, just match the event_id on both sides for dedup.
- What if ttclid isn't showing up?
- Check that the visit actually came from a TikTok ad, not organic or another source, and that you're reading the parameter on first load, before the PWA switches to standalone mode.
- How soon after conversion should the postback fire?
- As close to the actual user action as possible — delays of hours or days weaken optimization accuracy and match quality.
- Do email and phone need to be hashed before sending?
- Yes, TikTok only accepts these fields as SHA-256 hashes. It isn't mandatory to include them at all, but it meaningfully improves EMQ when you do.
- How do I confirm the postback is set up correctly?
- Use Test Events in Events Manager — it shows every incoming event and which fields are populated.
Cloaking, anti-bot, push, split tests and your own domains — in one service.
Get started free