TikTok Events API via Server-side GTM: Server-side Tracking for E-commerce
Plenty of people still underrate TikTok as a channel, and they shouldn't — for e-commerce it delivers cheap traffic, provided you feed the algorithm the right data. And feeding it right means server-side tracking, not a bare browser pixel that gets cut by blockers and by iOS.
The logic is the same as with Meta CAPI: you duplicate events from the server, recover what was lost, and raise match quality. TikTok is simply a bit less popular, so hands-on guides with actual code are hard to come by.
Why send events server-side at all
The browser pixel loses events. Blockers, ITP, iOS restrictions — all of it eats part of your conversions before they ever reach TikTok. The algorithm gets less data and optimizes worse. Server-side delivery goes around the browser and brings back what was being lost.
Architecture
Client → your server-side GTM container → TikTok Events API. The server container is usually deployed on Stape, pointed at your own subdomain, and events flow through it straight into TikTok, bypassing the browser's whims.
The subdomain is not there for looks — events in a first-party context live longer and get stripped less often. Run them through a third-party domain and you give up part of the advantage.
Event mapping
For the catalog and dynamic ads, content_id, value and currency are mandatory. Plus event_id for deduplication. Skip content_id and you won't get dynamic product remarketing. Skip value and you can't optimize for revenue, only for the fact of a purchase.
This is the part where people get lazy and then wonder why DPA isn't running. The catalog demands precise mapping; a rough job simply won't work.
Deduplication — event_id again
If an event fires both from the browser pixel and from the server API, you need a single event_id so TikTok doesn't count the purchase twice. The same principle as in Meta. Generate one ID and pass it into both channels.
TikTok differs a little from Facebook in the implementation details, but the idea is identical: one event, one ID, in both sources.
Verification
Test event code in TikTok Events Manager. Fire a test event and check whether it arrives with the right parameters. If the parameters are empty or the event doesn't show up, the mapping has broken somewhere in the server container.
The take: TikTok without server-side tracking is TikTok at half power. Their algorithm learns aggressively from data, and the cleaner and fuller you feed it, the cheaper the conversions it gives back. Most advertisers run on a bare pixel and complain about “expensive TikTok.” It is expensive because it is blind.
SKAdNetwork and SKAN 4.0: Why Your iOS Attribution Lies, and What to Do About It
SKAN 4.0 without the fluff: conversion values, three postback windows, the lock window. How to set up iOS attribution for a fintech app.
Read →Enhanced Conversions for Leads: How to Stop Paying for Leads That Never Make You Money
Set up Enhanced Conversions for Leads in Google Ads via GTM and server-side upload. Send CRM deal status back so Google optimizes for money, not forms.
Read →Consent Mode v2: Do You Need It in the CIS, or Is It Another Google Scare Story?
Consent Mode v2 in GTM without the panic: Basic vs Advanced, when a CIS project really needs it, and how many conversions you lose without it.
Read →