TikTok · Web Pixels API replacement · confidence: medium
Dies 2026-08-26
analytics.subscribe('checkout_completed', (event) => {
const { checkout } = event.data;
if (!checkout || !checkout.totalPrice) return;
// window.ttq does not exist in the sandbox (no DOM). Forward to TikTok's
// Events API (server-side) instead — sandbox-correct equivalent of
// ttq.track('CompletePayment'). Replace PIXEL_CODE and ACCESS_TOKEN
// (TikTok Events Manager > your pixel > Settings > Events API).
fetch(`https://business-api.tiktok.com/open_api/v1.3/event/track/`, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'Access-Token': 'ACCESS_TOKEN' },
keepalive: true,
body: JSON.stringify({
pixel_code: 'PIXEL_CODE',
event: 'CompletePayment',
event_id: checkout.token,
timestamp: new Date().toISOString(),
context: { page: { url: undefined } },
properties: {
value: checkout.totalPrice.amount,
currency: checkout.totalPrice.currencyCode,
content_ids: checkout.lineItems.map((i) => i.variant && i.variant.id).filter(Boolean),
content_type: 'product',
},
}),
});
});What this does NOT cover
What this does NOT cover: ttclid (TikTok click ID) attribution — see the paired tiktok-events-api-server-side template for capturing that via browser.cookie.
TikTok Pixel + Events API · Both the client ttq pixel and the server-side TikTok Events API integration.