← All resources Guide

TikTok Events API through your server container

TikTok matches conversions to ads with the ttclid click ID, the _ttp cookie and hashed customer data. Sending events from your server container as well as from the pixel keeps those signals when the browser copy is blocked, and it is what TikTok recommends for every advertiser. This guide sets up both sides from Measurebase.

What you need

Step 1 · Add it to your measurement setup

Open the domain in your dashboard, go to its Settings page and find Measurement setup. Tick the destination card and fill in the IDs below. Tokens and API keys are stored encrypted, outside the setup itself. The setup sends nothing on its own: it is the reference the tracking audit and the template builder work from, so what you fill in here is what the audit expects to find in your containers.

Step 2 · Generate and import the containers

Go to Resources → GTM templates in the dashboard. Under Destinations, tick the platform (Google Analytics 4 and the e-commerce events are on by default; pick the Shopify, WordPress or Shopware data layer if your site runs one of our plugins). Fill in the same IDs on the next step, choose Web + server under Containers and download the two JSON files.

In Google Tag Manager, open each container, go to Admin → Import Container, choose the matching file, pick a new workspace and Merge. The import only adds: new tags, triggers and variables with their own names, plus the gallery templates they need. Check the result in Preview, then publish.

Step 3 · What the import contains

Web container: the TikTok pixel template from the gallery with the pixel's base code and the events ViewContent, AddToCart, InitiateCheckout and CompletePayment, a constant with your pixel code and the Unique Event ID variable.

Server container: the TikTok Events API template from the gallery with Page View, View Content, Add to Cart, Initiate Checkout and Complete Payment as server tags on the GA4 events. They send value, currency and contents, hash email and phone, and forward the IP address, user agent, ttclid and _ttp.

Step 4 · One event ID for browser and server

A platform that receives the same event from a browser pixel and from a server tag counts it twice unless both carry the same event ID. The import takes care of that: the Unique Event ID variable creates one ID per event in the web container, the GA4 event settings send it to your server container as event_id, and both the pixel tag and the server tag send that same value in their deduplication field. The platform keeps one copy and discards the other.

With the Shopify app, the WordPress plugin or the Shopware plugin, a purchase that is also forwarded server-side carries the order number as mb_event_id, so the two purchase copies can be paired as well.

TikTok deduplicates on event name plus event_id within 48 hours.

The imported tags carry the consent settings of the reference containers they were copied from. Check them against your own consent setup before you publish: a browser pixel should require ad_storage under Additional consent checks or fire on your consent tool's event, and the server tags should only send when the hit carries ad consent. The audit's consent checks and the guide on tags that fire before consent show how to verify both.

Step 6 · Test it

In Events Manager, open Test events and paste the test code into the server tag while testing; browse your site and check that each event appears once from the browser and once from the server with the same ID, and that TikTok marks them as deduplicated.

On the Measurebase side, open the domain's Request logs: a browse through your site should show GA4 events arriving at your server container with a green 200. Open the server container's Preview mode to see the server tag fire on those events, with the event ID and the user data it picked up.

Click IDs and cookies

Safari strips ttclid from landing URLs. The TikTok switch in Click ID Restorer captures it in a first-party cookie as the visitor lands and restores it on later requests, so the server events keep it. Cookie Keeper keeps the _ttp cookie alive past Safari's 7-day cap.

What the tracking audit checks

Every night the tracking audit compares your measurement setup with your live containers and your site. For every destination it checks that the tags exist in the container your setup expects, that the ID in the container matches the one in your setup, that a browser pixel and its server tag share an event ID, and which of the platform's cookies are still set after a visitor rejects. Findings open an alert the first time they appear; what the audit can fix, it proposes as a change in a separate Measurebase workspace in your container.

Frequently asked questions

Where does the page view come from on the web side?

The pixel's base code sends it when it loads; the server tag sends the matching Page View on the GA4 page view, with the same event ID.

Can I run the Events API without the pixel?

You can, but match rates drop without _ttp and the browser context. Run both, deduplicated.

Continue reading

Ready to move your tagging to Europe?

Start free, no credit card required. Live in about 15 minutes.

Start free