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.

  1. 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.
  2. Accept cookies.
  3. In each request’s payload, event is the event name and context.pixel.code is 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”).
  4. 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

  1. Check every place a Webflow site can load the pixel. Search the published page source for analytics.tiktok.com and ttq.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.
  2. 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.js requests for two containers that both contain TikTok tags, every event is sent twice.
  3. Keep one installation, remove the rest. Deleting only the ttq.track(...) lines is not enough if ttq.load(...) and ttq.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.
  4. 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 AddToCart or Purchase, keep one source.
  5. 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 Lead from one place only: from code that reacts to the Success message, or from the thank-you page, not both. Also look for a GTM Lead tag and a Lead snippet in the page’s custom code firing for the same form.
  6. Add event IDs where you can. With your own event_id on 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.
  7. 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 Lead event 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

  1. 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.
  2. Re-run the check on IsPixelWorking. The issue should be gone.

Sources

More TikTok guides