Guides

TikTok Pixel purchases on WooCommerce: event_id, duplicate code and what the browser sends

October 2026 · 5 min read

In a WooCommerce test store with a manual TikTok Pixel installation, reloading the order confirmation page sent the purchase again, and pasting the base code twice doubled almost every event. Whether TikTok can merge those repeats depends on event_id. We used a fictitious pixel ID and pixel.js 2.2.1, and answered every event request locally: we did not verify what TikTok receives or counts.

What we tested

A WordPress and WooCommerce lab, without a TikTok account, with the base code that TikTok publishes in the page header and four events: ViewContent on the product page, AddToCart on the button, InitiateCheckout on the checkout and CompletePayment on the order received page, with the order total. Each run went home → product → add to cart → checkout → cash-on-delivery order → order received → one reload. Only the downloads of TikTok's library left the machine.

What the browser sent

Lab setupPurchase requests for one order (first load and one reload)
One installation, event_id set to the order number2, both with the same event_id
One installation, no event_id2, without event_id
Base code pasted twice, one copy with event_id4: 2 with the order's event_id and 2 without it
One installation and a WhatsApp button2 with the same event_id, plus an automatic click request with the full WhatsApp URL

With the code pasted twice, ViewContent, AddToCart, InitiateCheckout and the purchase each left twice; Pageview left once per page. These are requests sent by the browser, not sales counted by TikTok.

Why event_id matters

TikTok documents that pixel events with the same event name and the same event_id are deduplicated within 48 hours. Event deduplication. A repeated purchase without event_id, or two copies with different values, does not meet that documented mechanism. We did not verify TikTok's treatment of either case.

A stable value for the same order, such as the order number, is what lets repeats be recognised. A random value per page load does not.

CompletePayment arrives as Purchase

Our code called ttq.track('CompletePayment', …) and the request said Purchase. TikTok documents this mapping among its reserved events. Reserved events. If you search the network log for the name you wrote in your code, you may think the purchase is not sent.

Automatic clicks can carry a WhatsApp link

In this lab, with a fictitious pixel ID and pixel.js 2.2.1, the library generated an automatic click-collection request that included the full WhatsApp URL, with the fictitious number and prefilled message. We intercepted it and answered it locally: we did not verify its receipt by TikTok or that every real configuration behaves this way.

TikTok describes this collection of click content and attributes (Enhanced Data Postback) and that it can be turned off in the account. Enhanced Data Postback. We did not test turning it off.

Check your own store

  1. Use a test order with fictitious data. Open Chrome DevTools → Network, enable Preserve log and filter by analytics.tiktok.com.
  2. On the order received page, open the request to /api/v2/pixel whose payload has "event":"Purchase". Check event_id, properties.value and properties.currency.
  3. Reload the page once. If another purchase request appears, compare its event_id with the first one.
  4. Count the requests per event on one page. Two AddToCart requests for one click suggest the base code is installed twice, for example by a plugin and by Google Tag Manager.
  5. Click a WhatsApp, phone or email link and inspect requests to /api/v2/pixel/act for destination.

Finding no request is inconclusive: other library versions, plugins and account settings can behave differently.

Limits of this lab

One fictitious pixel ID, without TikTok Events Manager; pixel.js 2.2.1 on 24 October 2026; one browser; a manual installation. We did not test the official TikTok for WooCommerce plugin, an installation through Google Tag Manager, the Events API, automatic advanced matching or what TikTok does with the requests it receives.

Tracklint 0.3, our Chrome DevTools panel, reads TikTok Pixel events next to GA4 and the Meta Pixel and warns about purchases without event_id, possible duplicate sends and WhatsApp links with a number. If you would rather have the duplicate code and the missing event IDs fixed on your store, see our fixed-scope Fiverr offer.

Montherion Labs. Analysis and writing assisted by Claude and Codex. TikTok and WooCommerce are trademarks of their respective owners. Tracklint is not affiliated with, endorsed or sponsored by TikTok.