Your Meta Pixel is not firing. You see traffic in your ad account, but no conversions appear in Events Manager. Or the pixel fires on the homepage but fails on the thank you page. This breaks your attribution and stops your ads from optimizing. Below are the five most likely causes, ranked by frequency. Each section explains how to confirm the issue in under a minute and how to fix it.
Why is my meta pixel not firing
1. A consent banner is blocking the tag
If you use a cookie consent tool like Cookiebot or OneTrust in opt-in mode, the pixel is legally required to wait for user acceptance. A common bug occurs when the pixel tag in your tag manager is not wired to the consent state. It may fire before consent is granted, or it may never fire even after the user accepts.
How to confirm:
Open your site in an incognito window. Accept all cookies. Open the browser developer tools, go to the Network tab, and filter by tr. If you see no requests to facebook.com/tr after acceptance, your consent wiring is broken.
How to fix: In your tag manager, ensure the pixel tag has a trigger that waits for the consent status to change to "granted." If you use a plugin, check its settings to ensure it is configured to fire the pixel only after consent. This is a coding fix. If you do not manage the tag manager yourself, you need a developer to adjust the trigger logic.
2. A caching plugin is delaying the script
On WordPress, plugins like WP Rocket, LiteSpeed, or Perfmatters have a "delay JavaScript execution" option. This wraps your pixel initialization code in a lazy-load script. The pixel code does not run until the visitor moves their mouse or scrolls. Meanwhile, other scripts that call the pixel run immediately. They look for the pixel, do not find it, and throw an error. The pixel never initializes.
This is the hardest cause to catch because moving your mouse during testing releases the delayed script. The bug disappears while you are looking at it.
How to confirm:
Load your site in an incognito window. Do not move your mouse or scroll. Open the console in developer tools. Type typeof window.fbq and press enter. If it returns undefined, the pixel is not loaded. Check the Network tab for any requests. If there are none, the caching plugin is likely the culprit.
How to fix: Go to your caching plugin settings. Find the "exclude from delay JavaScript" or "exclusions" field. Add the following strings, separated by commas or new lines:
fbevents.jsconnect.facebook.netfbq
Do not remove existing exclusions. Add these to the list. Save the settings and clear your cache. Reload the page in incognito without moving the mouse. The pixel should now load immediately.
3. The pixel ID is missing or incorrect
If the base code is present but the Pixel ID is wrong, the data goes to the wrong account or nowhere at all. This happens if you copy-paste the code from an old document or if you have multiple pixels.
How to confirm:
View the page source of your website. Search for fbq('init'. Look at the ID in the string. Compare it to the ID in your Meta Events Manager. If they do not match, the pixel is sending data to the wrong place.
How to fix: Copy the correct Pixel ID from Meta Events Manager. Update the code on your website. If you use a tag manager, update the ID in the tag settings. If you use a plugin, update the ID in the plugin settings. Save and clear your cache.
4. A redirect checkout is eating the event
If your checkout process redirects to a different domain (like a payment processor) before the thank you page loads, the pixel on the original domain never fires the Purchase event. The event is triggered on the thank you page, but the pixel is not present on that new domain.
How to confirm:
Complete a test order. Watch the URL in the browser address bar. If the URL changes to a different domain (e.g., checkout.stripe.com) before the final thank you page, and the thank you page is on a different domain than your main site, the pixel is not firing on the final step.
How to fix: You need to install the pixel on the domain where the thank you page loads. If you cannot access that domain, you need to use the Conversions API to send the event from your server. This requires a developer. If you use a platform like Shopify, ensure the pixel is installed in the Shopify admin, which handles the redirect automatically.
5. Ad blockers are stopping the request
Some visitors use ad blockers that prevent facebook.com scripts from loading. You cannot fix this for those visitors. However, if you are testing and see no events, your own ad blocker might be the cause.
How to confirm:
Disable all ad blockers in your browser. Reload the page. Check the Network tab for facebook.com/tr requests. If they appear, your ad blocker was the issue.
How to fix: You cannot fix ad blockers. To mitigate the loss of data from ad-blocked users, implement the Conversions API. This sends data from your server to Meta, bypassing the browser. This is a more advanced setup.
How to verify your pixel is working
Once you have addressed the causes above, you need to confirm the fix. Do not rely on the pixel helper extension alone, as it can sometimes be misleading if the script is delayed.
- Open your site in an incognito window.
- Open Developer Tools (Command + Option + I on Mac, Control + Shift + I on Windows).
- Go to the Network tab.
- Type
trin the filter box. - Reload the page.
- Look for a request to
facebook.com/tr.
If you see the request, the pixel is firing. If you do not, the issue persists.
You can also use a free pixel checker to see if the pixel is detected on your page. It tells you if the pixel ID is present and if the PageView event is firing. This is a quick first check before diving into the code.
Common errors in Meta Events Manager
If the pixel is firing but you see errors in Meta Events Manager, check the Diagnostics tab. Common errors include:
- Missing currency code: The event is missing the
currencyparameter. Addcurrency: 'GBP'or your relevant code to the event code. - Invalid value: The
valueparameter is not a number. Ensure it is a decimal number, not a string or text. - Mismatched parameters: The browser pixel and Conversions API are sending different data. Ensure both are configured with the same event parameters.
Refer to the official Meta troubleshooting guide for specific error messages.
When to call a developer
Some issues are not simple checkboxes. If you have tried the fixes above and the pixel is still not firing, you may have a complex JavaScript conflict. This happens when multiple scripts on your page interfere with each other. For example, a theme update might break the pixel initialization sequence.
If you cannot edit the code directly, or if the issue persists after clearing caches and checking consent settings, you need a developer. They can inspect the console for ReferenceError or TypeError messages that indicate a script conflict.
If you are using a server-side setup or the Conversions API, the complexity increases. The server must send the correct data hash. If the hash does not match the browser data, Meta ignores the event. This requires careful configuration of the server endpoint.
Next steps
Fixing the pixel is the first step. Maintaining it is the second. Websites change. Themes update. Plugins add new features. These changes can break your tracking again.
Set up a monitoring alert in Meta Events Manager. This notifies you if the pixel stops sending data. Regularly test your checkout flow with a test order. Do not assume the pixel is working just because it was working last month.
If you want a robust tracking setup that is less prone to browser-side issues, consider moving to a server-side implementation. This sends data directly from your server to Meta, reducing the impact of ad blockers and browser updates. You can learn more about server-side tracking and how it improves data accuracy.
For more articles on fixing tracking issues, read how to fix Google Tag Manager not working or why your Facebook Pixel is not working on WooCommerce. If you need help with your tracking setup, contact us for a consultation.