TikTok Pixel Not Firing? How to Find and Fix the Cause

Quick fix: Open your site with ad blockers off and check the browser's Network tab for requests to TikTok's analytics domain. If none appear, the base code is missing, blocked by consent or a Content Security Policy, or loading the wrong pixel ID. If requests appear but your conversions don't, the event name or parameters are the problem.
A TikTok Pixel that "isn't firing" usually falls into one of two cases. Either the base code never runs, so nothing reaches TikTok. Or it runs, but the event you care about, usually a purchase, is missing, misnamed or missing parameters. These need different fixes.
This guide works through the causes from most to least common. Each step tells you what to look for, so you can stop once you find the problem.
Step 1: Confirm the base code is on the page and calls ttq.load
Every TikTok Pixel install starts with the base code. It defines the ttq queue, loads TikTok's SDK and then runs two calls:
ttq.load('YOUR_PIXEL_ID');
ttq.page();
ttq.load() tells the SDK which pixel to send data to. ttq.page() sends the page view. If either line is missing, edited or never runs, you get no events at all.
To check, open the page, view the source or the Elements panel, and search for ttq.load. Then go through these common problems:
- The code is only on some templates. Theme edits often put the snippet in the homepage template and miss the product, cart or thank-you page.
- The code was pasted inside another script or a comment. A missing closing tag or a stray
<!--can stop it from running. - Curly quotes. Copying the snippet through a word processor can turn straight quotes into curly ones, which breaks the JavaScript. The browser console shows a syntax error when this happens.
- The tag manager tag isn't published. If you installed through Google Tag Manager, check that the container version with the TikTok tag is published, not just saved.
TikTok's Pixel Helper flags a pixel that isn't in the page header as "Pixel code is not installed in header." The fix is to place the base code as early as possible, ideally inside the <head>, so it loads before your event code runs.
Step 2: Check the pixel ID
A pixel can fire correctly and still send everything to the wrong place. This happens when the ID in ttq.load() doesn't match the pixel your ads optimize for.
- In TikTok Events Manager, open your web data source and copy its pixel ID.
- Compare it character by character with the ID on your site. Agencies and old app installs often leave behind a second pixel from a previous ad account.
- If two different IDs load on the same page, decide which one is current and remove the other.
TikTok's Pixel Helper reports "Invalid Pixel ID" when the ID doesn't match a valid pixel. Fix it by copying the correct ID from Events Manager.
Step 3: Rule out consent banners
On sites with a cookie banner, a TikTok Pixel that "never fires" is often working as designed. The consent tool is holding it until the visitor accepts marketing cookies.
Test it like this:
- Open the page in a private window so no earlier consent choice is stored.
- Open the Network tab, then accept all cookies on the banner.
- Watch for TikTok requests right after you click accept.
If requests appear only after you accept, the pixel and the banner work together correctly. If they never appear, check how your consent tool controls the pixel. Some tools block the script until consent is given. Others load it straight away and send consent signals through the consent methods in TikTok's base code (holdConsent, grantConsent and revokeConsent). Check that TikTok is in the consent category the visitor actually accepts. A vendor filed under the wrong category stays blocked forever.
A lower conversion count in regions with strict consent rules is expected. Visitors who decline marketing cookies shouldn't be tracked by the browser pixel. Don't work around consent to raise your numbers.
Step 4: Turn off ad blockers and privacy extensions
Ad blockers, privacy-focused browsers and some antivirus web shields block TikTok's scripts. If the pixel works in a clean browser profile but not in your everyday one, an extension is the cause, not your site.
Always test in a profile with no extensions or a private window with extensions disabled. Blocking by real visitors' browsers is also why browser-only tracking undercounts. For a deeper look at this, see how ad blockers and ITP cause pixel data loss.
Step 5: Check for a Content Security Policy block
If your site sends a Content Security Policy (CSP) header, the browser blocks scripts and requests from any domain the policy doesn't list. The browser console shows a clear "Refused to load" or "Refused to connect" message naming the blocked URL.
Add the TikTok domains that appear in those errors to the right directives (script-src for the SDK, connect-src for the event requests). Our guide to Content Security Policy blocking pixels walks through this.
Step 6: Fix event names and parameters
If page views arrive but conversions don't, look at the event code. TikTok events are sent with ttq.track():
ttq.track('Purchase', {
value: 59.90,
currency: 'USD',
content_type: 'product',
content_ids: ['SKU-123']
});
Use a supported event name
Event names are case-sensitive. purchase or Purchased doesn't match a standard event. TikTok's current standard events include ViewContent, AddToCart, InitiateCheckout, AddPaymentInfo, Purchase, CompleteRegistration, Search and Subscribe, among others. Check the current list in TikTok's help center before you add a new event.
Older installs often use CompletePayment instead of Purchase. TikTok renamed CompletePayment to Purchase (and SubmitForm to Lead). It says the old names keep working and are converted on its side, but new setups should use the new names. PlaceAnOrder and ClickButton are being retired, and TikTok says they're fully supported until 2027. If your purchase tracking uses PlaceAnOrder, plan a move to Purchase. See TikTok's guide to adopting the updated standard events.
Make sure your campaign optimizes for the event your site actually sends. If the site sends Purchase but the campaign optimizes for a different event, the campaign won't see those conversions.
Send valid value, currency and content IDs
Pixel Helper and Events Manager flag these parameter problems most often:
- Value format invalid.
valuemust be a plain number greater than zero. Strings like"$59.90"or"1,299"fail. - Currency or value missing. Send both together. Currency must be a supported ISO code such as
USDorEUR. - Content ID missing. Catalog-based ads need
content_idsthat match the IDs in your product catalog. - Content type invalid.
content_typemust beproductorproduct_group.
Make sure the event code runs at the right moment
A purchase event placed on the thank-you page only fires if that page loads in the browser. Hosted checkouts and payment redirects sometimes skip it, or the event fires before ttq exists. On single-page apps, the event may never fire because the "page" never reloads. If your store runs on a JavaScript framework, read our guide to tracking pixels on SPA route changes.
Step 7: Look for duplicate or conflicting installs
Duplicates don't stop the pixel firing, but they make debugging confusing. A common setup is TikTok's platform app (for example on Shopify) plus a hand-pasted snippet plus a GTM tag. Each one can load the pixel and send its own events.
Count how many times ttq.load appears and how many purchase requests leave the browser on one test order. Keep one browser install per pixel. If you also send events from your server, read our guide to TikTok Events API deduplication so the two channels don't double count.
Step 8: Check first-party cookies
TikTok's Pixel Helper can report "First-Party Cookies Not Found." First-party cookies (such as _ttp) help TikTok match visits to ad clicks. TikTok turns them on by default, and you control them in your pixel's settings in Events Manager. If someone switched them off, match quality drops even though events still fire.
How to verify the fix
Use more than one check, because each one shows a different stage:
- Browser Network tab. Filter for "tiktok" and confirm a request leaves the page for each event, with your pixel ID and event name in the payload.
- A browser extension. TikTok's own Pixel Helper for Chrome lists the events it detects and flags errors at the pixel, event and parameter level. The Pixel Helper extension is another way to see which pixels and events fire on a page.
- Test Events in Events Manager. Open your pixel, go to the Test Events tab, enter your site URL and follow the prompt to open it (TikTok uses a QR code for this). Then browse and place a test order. Events should appear in real time.
- The pixel overview. After a few hours, check that event counts in Events Manager match what you expect from real traffic.
A browser tool only shows what the page sent. Events Manager shows what TikTok received. If an event appears in the browser but never in Events Manager, look at blocking, the pixel ID and the event name again.
FAQ
Should I rename CompletePayment to Purchase?
You don't have to. TikTok says existing CompletePayment setups keep working and are converted to Purchase on its side. New pixels should use Purchase. Change both the site code and any server events together so the names stay consistent.
Why does the pixel fire for me but show no conversions in Ads Manager?
Events Manager counts every event the pixel receives. Ads Manager only counts conversions it can attribute to an ad, within your attribution window. Test orders from your own browser usually aren't attributed to an ad click, so they won't appear in campaign reporting.
Does TikTok's Pixel Helper show server-side events?
No. A browser extension only sees requests the page sends. Events sent through the Events API go server to server, so check them in Events Manager instead.
How long until events show in Events Manager?
Test Events shows events in real time while a test session is open. Normal reporting in the pixel overview can take longer, so give it a few hours before you decide something is broken.

