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.
| Symptom | Likely cause | Fix |
|---|---|---|
| Pixel Helper finds no pixel | Code not deployed, or blocked by consent or an ad blocker | Check page source for ttq.load, then retest with consent accepted in a clean browser |
| Pixel found, Events Manager shows nothing | ttq.load points to a different pixel ID | Match the ID in source to the pixel in Events Manager |
| Page views record, no purchases | Purchase never called on the confirmation page | Fire Purchase from the app or a Shopify custom pixel on checkout completion |
| Purchases roughly double real orders | Duplicate pixel, or pixel and Events API without a shared event_id | Keep one browser source; send the same event name and event_id from both |
| Events record, value shows zero | value or currency missing or malformed | Pass value as a number and currency as an ISO code on Purchase |
| Catalog ads report low match | content_id does not match catalog SKU IDs | Send content_id in the same format as the catalog SKU ID |
| Event exists but cannot be selected in an ad group | Event not processed yet | Wait for processing, which TikTok says can take up to 2 hours |
| Fires in incognito, not in normal browser | Ad blocker or browser extension | Add 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.