Found in AI answers?Hire Theory Road
Theory Road.

TikTok Pixel Not Firing? The Diagnostic Order We Use.

A TikTok pixel that loads but records nothing is worse than one that is missing, because the account looks set up. Here is the order we check it in, on our own stores and on accounts we take over.

By October 18, 202610 min read

When a TikTok pixel is not firing or events are not recording, the cause is almost always one of seven things: the pixel ID in the code does not match the pixel in Events Manager, a consent banner is holding the pixel, an ad blocker is dropping the request, the pixel is installed twice (Shopify app plus pasted code), the Purchase event never runs on the confirmation page, the event name is wrong or missing parameters, or browser and Events API copies are not deduplicated. You confirm which one with TikTok Pixel Helper, the Test Events tab in Events Manager, and the Diagnostics tab, then fix the gap and add the Events API with a shared event_id. This piece walks the checks top to bottom.

The TikTok pixel is a JavaScript snippet that loads a script from analytics.tiktok.com, initializes with your pixel ID through ttq.load, records a page view with ttq.page, and sends each event you call with ttq.track, for example ttq.track('Purchase', {value, currency, contents}). TikTok uses those events to attribute conversions to ads, optimize delivery and build audiences. The Events API is the server-side counterpart: your server posts the same events to TikTok's Events API endpoint with an access token, and TikTok merges the two copies when they carry the same event name and event_id.

The seven causes we find most often.

We run these audits on our own stores and on accounts we take over. The list is close to the one in our Meta pixel diagnosis, with a few TikTok specific twists.

  • Wrong or missing pixel ID: the code loads a pixel from an old ad account, a test pixel, or an empty environment variable, so events land somewhere you are not looking
  • Consent gate: the consent platform or TikTok's pixel consent mode holds the pixel until the visitor opts in, and many visitors never do
  • Ad blockers and browser restrictions: the browser blocks the request to TikTok's script host, which no client-side fix recovers
  • Duplicate pixels: the TikTok app on Shopify (or another platform integration) and a pasted snippet or tag manager tag both fire, doubling page views and purchases
  • Purchase never called on the confirmation step: the thank-you page belongs to a checkout template the pixel code never reaches, which is common on Shopify since additional scripts were sunset on the Thank you and Order status pages
  • Wrong event name or missing parameters: a custom event spelled differently from the standard event, or a Purchase with no value, currency or content_id
  • No deduplication between pixel and Events API: both copies arrive without a shared event_id, so TikTok counts both

How to verify whether the TikTok pixel is firing.

TikTok Pixel Helper. Install the Chrome extension from TikTok For Business, load your site and click the icon. It flags issues at three levels: pixel (missing code, invalid pixel ID, first-party cookies disabled), event (empty or unsupported event names) and parameter (invalid value, missing or unsupported currency, missing content IDs). It is the fastest way to spot two pixel IDs on one page.

Events Manager Test Events. In TikTok Ads Manager go to Tools, then Events Manager. Under Website Pixel click Manage, select the pixel, and open the Test Events tab. Enter your site URL; TikTok gives you a QR code to scan with the TikTok app so you browse the site the way an ad click would. Each event appears in real time and can be expanded to show its parameters. The same tab gives you a test_event_code for Events API requests, and lets you filter browser versus server test events.

The Diagnostics tab. On the same pixel, open Diagnostics and then Active issues. Each card shows the issue, severity, affected dataset and impacted ads, and Learn more gives fix instructions with sample events. This is where missing parameters and content ID problems show up across real traffic, not just your test session.

Diagnose top to bottom.

Confirm the pixel ID in the page source.
Load the production site, view source, and search for ttq.load. The ID must match the pixel you opened in Events Manager and the pixel your ad groups optimize on. An empty string means the environment variable was never set on the host. A different ID usually means an old pixel or one owned by another ad account.
Load the page with consent accepted and declined.
Clear cookies, open developer tools, go to Network and filter on tiktok. Load the page before touching the banner, then accept and watch again. If requests to analytics.tiktok.com only appear after you accept, the consent setup is holding the pixel. That may be the correct policy. Configure it deliberately in the consent tool or with TikTok's pixel consent mode, and do not exempt the pixel to recover numbers.
Test in a clean browser.
Use a window with extensions disabled. If events fire there and not in your daily browser, the pixel works and blockers are the loss. You recover that traffic with the Events API, not by editing the pixel.
Remove duplicate installs.
Run Pixel Helper on the home page, a product page and checkout. If the same ID fires twice, or two IDs fire, find every source: the TikTok app on Shopify, a theme snippet, a tag manager tag, a Shopify custom pixel under Customer events. Keep one browser source. On Shopify we keep the TikTok app because it also sends server events with matching IDs.
Place a real test order.
Complete a purchase or lead while watching Test Events. You want Purchase (or Lead) with value, currency and content_id. If checkout completes and nothing arrives, the confirmation page has no event call. On Shopify that means the event must come from the app or a custom pixel subscribed to checkout_completed, not from theme code.
Check event names and parameters.
Compare every event name against TikTok's current standard events list, case and spelling included. Value must be a number, currency an ISO code, and content_id must match the catalog SKU ID if you run catalog or shopping ads.
Verify deduplication.
If you send server events, confirm each pixel event carries an event_id (the third argument of ttq.track, for example {event_id: order_id}) and the Events API event carries the same event name and event_id. Then compare a day of orders against reported purchases. Purchases well above real orders means dedupe is broken.
TikTok pixel symptoms, likely causes and fixes
SymptomLikely causeFix
Pixel Helper finds no pixelCode not deployed, or blocked by consent or an ad blockerCheck page source for ttq.load, then retest with consent accepted in a clean browser
Pixel found, Events Manager shows nothingttq.load points to a different pixel IDMatch the ID in source to the pixel in Events Manager
Page views record, no purchasesPurchase never called on the confirmation pageFire Purchase from the app or a Shopify custom pixel on checkout completion
Purchases roughly double real ordersDuplicate pixel, or pixel and Events API without a shared event_idKeep one browser source; send the same event name and event_id from both
Events record, value shows zerovalue or currency missing or malformedPass value as a number and currency as an ISO code on Purchase
Catalog ads report low matchcontent_id does not match catalog SKU IDsSend content_id in the same format as the catalog SKU ID
Event exists but cannot be selected in an ad groupEvent not processed yetWait for processing, which TikTok says can take up to 2 hours
Fires in incognito, not in normal browserAd blocker or browser extensionAdd the Events API as a second channel

Events API and event_id deduplication.

TikTok recommends running the Events API alongside the pixel because connectivity issues and browser inconsistency cost the pixel conversions. The two copies are reconciled by event name plus event_id. Use the order number or transaction ID as the event_id when you have one, and generate a random ID for events without one, passing that same value to both channels.

The rules are specific. TikTok deduplicates identical event and event_id pairs within the same channel inside a 48 hour window from the first event. Across pixel and Events API, it deduplicates matching events that arrive after 5 minutes and within 48 hours of the first, and keeps the first event received for reporting. Duplicates that arrive within 5 minutes of each other are merged, with fields missing from the first event filled in from the later one. If either side omits event_id, nothing is deduplicated.

On Shopify the shortest path is the TikTok app with the data sharing level set to Enhanced or Maximum. TikTok's documentation says Standard uses the pixel only, Enhanced adds the Events API and Advanced Matching, and Maximum adds Shopify APIs on top. Custom stacks send events from a server function or a server tag manager container. The discipline is the same as our Meta Conversions API setup, and if your tags live in tag manager, our tag manager troubleshooting guide covers triggers and load order.

Required parameters: value, currency and content_id.

TikTok lists value and currency as parameters for Purchase, AddToCart and ViewContent, along with content type and content IDs. Value is the total order amount, not the unit price. Currency must be a supported ISO code.

These fields gate bidding options. Value-based Optimization for web requires at least 20 attributed unique purchase events with value and currency over any consecutive 7 days. If your Purchase events lack value, the account will never qualify. For catalog and shopping ads, content_id must equal the SKU ID in your catalog. In Catalog Manager, open Event Sources, select the pixel, and export the content IDs that do not match the catalog, or the events without a content ID.

What is normal and what is a red flag.

Some gaps are expected. After you trigger a test event, TikTok says to allow up to 10 minutes for the event count in Events Manager to update, and up to 2 hours for a new event to be fully processed and available for campaign creation. TikTok also attributes with its own click, engaged view and view-through windows, so its purchase count will not match Shopify's order count. We explain the mechanics in why ad platforms and Shopify report different conversions.

  • Normal: a short delay before Test Events or event counts update
  • Normal: TikTok reports fewer purchases than Shopify, because blocked and unattributed orders never reach it
  • Red flag: TikTok reports more purchases than you had orders, which points to a duplicate pixel or broken dedupe
  • Red flag: page views record but purchases are zero for days while orders come in
  • Red flag: active issues in the Diagnostics tab that nobody has opened

We put these checks into the same conversion tracking audit checklist we run before any budget goes live, on every platform.

How do I know if my TikTok pixel is working?

Install TikTok Pixel Helper and load your site to confirm the pixel ID and events. Then open Events Manager, select the pixel, go to Test Events, and complete a test purchase or lead. Purchase or Lead should appear in real time with value and currency. Finally, check the Diagnostics tab for active issues.

Why is my TikTok pixel firing but not recording purchases?

Usually the Purchase event never runs on the confirmation page. On Shopify, theme code does not reach the Thank you page, so the event must come from the TikTok app or a custom pixel under Customer events. Other causes are a misspelled event name and a pixel ID that differs from the one your ad group uses.

Why does TikTok show more conversions than I had orders?

Two pixels are installed, or the pixel and Events API send the same purchase without a shared event_id. Keep one browser source and pass the same event name and event_id, such as the order number, from both channels. TikTok deduplicates within a 48 hour window and keeps the first event.

Do ad blockers stop the TikTok pixel?

Yes. TikTok's own Shopify documentation says browser-based ad blockers can prevent the pixel from collecting data. You cannot fix that in the browser. Send the same events through the Events API with a shared event_id so blocked conversions are still recorded.

Work with us

Let’s talk about what’s next.

A short note on where the business is and where it needs to go. A senior partner replies within one business day.

t@theoryroad.com

Step 1 of 2

How can we help you get found?

What do you need help with?

Next: name, email and budget. That’s it.