Why does Facebook Pixel Helper report no pixel even though fbq() is loaded and firing?
Pixel Helper reports nothing detected when the pixel loads asynchronously after its initial scan (common with GTM-injected pixels), when the base fbq('init', ...) call never actually completed even though later track calls appear to queue without erroring, or when a Consent Mode or CMP gate is blocking the base pixel script from loading at all.
Why this happens
fbq() calls are queued by a small stub function even before the real Facebook Pixel script has loaded - this is intentional so code can call fbq('track', ...) immediately without waiting, but it means "fbq() is firing with no error" does not prove the pixel actually initialized or sent anything. Pixel Helper specifically looks for evidence the base pixel script loaded and the init event completed; if the underlying script never loaded, calls to the stub silently queue into nothing.
Fix it
- Open the Network tab and search for a request to connect.facebook.net (base pixel script) and facebook.com/tr (the actual event pings) - if neither appears, the base script never loaded and every fbq() call has been queuing into a stub with nothing to hand off to.
- If the base script is not loading, check whether it is inside a GTM tag whose trigger condition has not fired yet on this page - confirm in GTM Preview whether the Facebook Pixel base tag shows as fired at all for this pageview.
- Check Consent Mode or CMP gating specifically - if the Pixel tag requires marketing consent and the test session has not granted it, the tag correctly does not fire, and Pixel Helper is accurately reporting "no pixel" rather than being wrong.
- If the base script is loading (confirmed in the Network tab) but Pixel Helper still reports nothing, check the console for a JS error thrown before the pixel's init call - an unrelated script error can prevent fbq('init', ...) from ever running even if the file loaded.
- Re-run Pixel Helper's scan after confirming state, not just once on initial page load - for GTM-injected pixels or SPAs, the pixel may load after Pixel Helper's automatic scan ran; use its own refresh rather than assuming a single check is authoritative.
How to verify it worked
Once the base script request to connect.facebook.net shows 200 and a facebook.com/tr request follows on the expected action, re-open Pixel Helper - it should list the Pixel ID and each event detected with a green checkmark. Cross-check in Meta Events Manager's Test Events view for the same event landing in near-real time, confirming Meta's servers received it, not just that the browser sent a request.
Still stuck after working through this?
Send us what you are seeing in Preview and the Network tab. We trace GTM containers for a living and can usually tell you what is actually happening in one look.
Ask a GTM Engineer