Fix guide · Webflow · easy · about 20 min
Duplicate TikTok Pixel events on Webflow
For the finding “Duplicate TikTok events”. Also for: Any website, Shopify, WordPress, Framer.
What this means
The same event (for example a page view or Lead) was sent twice for the same TikTok pixel within about a second. Webflow has no built-in TikTok integration, so every TikTok Pixel on a Webflow site was added by hand or by a tool, and Webflow offers several places to do it. This nearly always means the pixel, or one of its event calls, sits in two of them.
TikTok discards repeats only when they carry the same event name and the same event_id. The pixel does not fill in an ID by itself (you can see the empty event_id field in the Network tab), and TikTok asks advertisers to choose a unique ID for each event, so two copies of the same event without IDs look like two separate conversions.
Why it costs you money:
- TikTok counts some conversions twice, so reports look better than reality and your cost per result looks lower than it is.
- Campaigns learn from inflated data and may spend budget on the wrong people.
This is about two identical browser events. A browser event plus a server (Events API) event for the same action is expected; TikTok merges that pair when both carry the same event_id (see “TikTok events have no event ID”).
How to confirm it yourself
Our check runs from a browser in the EU and accepts the cookie banner before looking for duplicates.
- Open your published site in a private (incognito) window, open developer tools (F12), go to Network and filter by
analytics.tiktok.com/api/v2/pixel. - Accept cookies.
- In each request’s payload,
eventis the event name andcontext.pixel.codeis the pixel ID. Two requests with the same pixel code and the same event at almost the same moment are a duplicate. Two different pixel codes are two pixels, which may be intended; TikTok recommends one pixel per website, though (see “More than one TikTok Pixel”). - Submit a test form and check that
Lead(or your form event) appears once.
The TikTok Pixel Helper extension lists the pixels and events on a page, which makes a second installation easy to spot.
How to fix
- Check every place a Webflow site can load the pixel. Search the published page source for
analytics.tiktok.comandttq.load(, then check:- Site settings > Custom code: Head code, Footer code and code added there by installed Apps.
- Page settings > Custom code of individual pages and CMS template pages. With Webflow Localization, check each locale: page code can differ per locale.
- Code Embed elements, especially inside components used on every page (a navbar or footer), and code in Rich text or CMS items.
- The OneTrust App: if you moved the pixel into its Blocked Scripts section, remove the old copy from Webflow’s custom code.
- Your Google Tag Manager (GTM) container: TikTok Pixel tags and Custom HTML tags containing
ttq. - Third-party Apps that add TikTok tracking. Pixelflow’s and Signal Beam’s listings in the Webflow Apps marketplace, for example, say they run the TikTok browser pixel as well as the Events API. Check the App’s settings before keeping a manual copy.
- Check that GTM is installed only once. GTM can be added as a snippet in Head code or by the Google site tools for Webflow App, which connects a Tag Manager container for you. If both are present, or you see
gtm.jsrequests for two containers that both contain TikTok tags, every event is sent twice. - Keep one installation, remove the rest. Deleting only the
ttq.track(...)lines is not enough ifttq.load(...)andttq.page()are still there twice. Choose one:- A third-party App that runs both the browser pixel and the Events API, if you use one: it can share event IDs between the two. Remove the manual base code and any GTM copy.
- GTM, if you manage your tags there: remove the base code from custom code and embeds.
- Custom code, if you have neither: one copy of the base code in Site settings > Custom code > Head code, and nowhere else.
- Check shop events. Webflow Ecommerce sends no events to TikTok by itself. Shop events come from your own code or an App, and some Apps track Webflow Ecommerce events out of the box. If an App and your custom code or GTM both send
AddToCartorPurchase, keep one source. - Check form events. A Webflow form either shows its Success message on the same page or redirects to a page you choose (form Settings panel). Send
Leadfrom one place only: from code that reacts to the Success message, or from the thank-you page, not both. Also look for a GTMLeadtag and aLeadsnippet in the page’s custom code firing for the same form. - Add event IDs where you can. With your own
event_idon each action, an accidental second copy carries the same ID and TikTok discards it. That is a safety net, not a replacement for removing the extra copy; see the general guide. - Publish the site to your custom domain (and publish GTM if you changed it).
Common causes
- Base code in Head code and a TikTok setup in GTM.
- Base code in both Site settings and a page’s custom code, or in a Code Embed inside a component on every page.
- A third-party App installed its own TikTok pixel, and the manual base code was never removed.
- The pixel was moved into OneTrust’s Blocked Scripts, but the old copy stayed in custom code.
- GTM added by the Google site tools App and also pasted into Head code.
- A
Leadevent fired on the Success message and another on the thank-you page. - A template or cloned project came with a pixel already in its custom code or embeds.
How to verify the fix
- In a private window on the published site, accept cookies and check that each event appears once per pixel code: on page load, after a test form submission, and on any shop pages.
- Re-run the check on IsPixelWorking. The issue should be gone.
Sources
- TikTok API for Business, Install Pixel using code (base code,
ttq.trackgoes to every loaded pixel): https://business-api.tiktok.com/portal/docs?id=1739585702922241 - TikTok API for Business, Event Deduplication (same event and
event_idwithin 48 hours): https://business-api.tiktok.com/portal/docs?id=1771100965992450 - TikTok Business Help Center, Event deduplication (pixel-to-pixel duplicates): https://ads.tiktok.com/resources/help/article/event-deduplication?lang=en
- TikTok API for Business, Create a pixel (one pixel per website recommended): https://business-api.tiktok.com/portal/docs?id=1740858779758593
- TikTok Business Help Center, TikTok Pixel Helper: https://ads.tiktok.com/resources/help/article/tiktok-pixel-helper-2.0?lang=en
- Webflow, TikTok integration (no native TikTok Pixel; Webflow Ecommerce events are not sent to TikTok automatically): https://webflow.com/integrations/tiktok
- Webflow Help, Custom code in head and body tags: https://help.webflow.com/hc/en-us/articles/33961357265299-Custom-code-in-head-and-body-tags
- Webflow Help, Custom code embed (reuse embeds as components): https://help.webflow.com/hc/en-us/articles/33961332238611-Custom-code-embed
- Webflow Help, Custom code in the CMS: https://help.webflow.com/hc/en-us/articles/33961236623635-Custom-code-in-the-CMS
- Webflow Help, Localize page settings (custom code per locale): https://help.webflow.com/hc/en-us/articles/33961235760531-Localize-page-settings
- Webflow Help, Connect Google site tools to your Webflow site (adds a Tag Manager container): https://help.webflow.com/hc/en-us/articles/33961193954835-Connect-Google-site-tools-to-your-Webflow-site
- Webflow Help, Install and use the OneTrust app (Blocked Scripts): https://help.webflow.com/hc/en-us/articles/49624805369491-Install-and-use-the-OneTrust-app
- Webflow Help, How do I add forms in Webflow? (Success message, redirect after submission): https://help.webflow.com/hc/en-us/articles/33961347548563-How-do-I-add-forms-in-Webflow
- Webflow Developers, Working with custom code (scripts added by Apps): https://developers.webflow.com/data/docs/working-with-custom-code
- Webflow Apps, Pixelflow Meta & TikTok Pixel (third-party; installs browser pixels and Events API, tracks Webflow Ecommerce events): https://webflow.com/apps/detail/pixelflow-fb-conversions-api-multi-pixel
- Webflow Apps, Signal Beam (third-party; TikTok Pixel plus Events API, e-commerce events out of the box): https://webflow.com/apps/detail/signal-beam
More TikTok guides
- TikTok Pixel fires before cookie consent on Webflow
- TikTok Pixel not firing after cookie consent on Webflow
- Repeated TikTok event IDs drop real conversions: how to fix
- TikTok Pixel event_id missing on Webflow
- TikTok click ID (ttclid) lost on Webflow
- TikTok Pixel tracks a button on desktop but not on mobile
- Two TikTok Pixels on one site: when it's fine, how to fix
- TikTok Events API deduplication: match the pixel's event_id
- How to set up the TikTok Events API (with deduplication)