Meta Pixel not firing: how to find out why in the browser
"The Pixel is not firing" needs two separate checks: whether the library loads and whether an event request appears. DevTools helps you investigate both; it does not establish what Meta received, processed or counted.
1. Loading is not sending
Meta's base code defines fbq immediately and loads fbevents.js asynchronously from connect.facebook.net. Calls made before the library is ready are queued: fbq('init', ...) initializes the Pixel with its ID, and fbq('track', 'PageView') requests a PageView event. Calling fbq does not by itself prove that a request was sent. Inspect facebook.com/tr requests, where ev identifies the event and id identifies the Pixel.
- Open DevTools, go to the Network tab and enable Preserve log.
- Filter by
fbeventsand reload the page: this is the library. - Filter by
facebook.com/trand go through the step that should send the event: these are the events.
2. What each result points to
- No
fbevents.jsrequest: confirm that Network is recording, select All request types and reload. Then check the base code, the tag that should add it and any reported blocking. The missing request alone does not identify the cause. fbevents.jsloads, but there is nofacebook.com/trrequest for the event: check initialization, the code that should trigger the event, JavaScript errors and consent. Downloading the library does not prove that the event code ran successfully.- The request appears as failed or blocked: inspect the specific error in Network and the Console. A failed request alone does not locate the cause in the page, browser, network or destination.
- The event request appears, but the event is missing in Meta: check its status,
evandid, then compare the test with Events Manager. A Network entry, even with a successful HTTP response, does not establish that Meta processed or counted the event.
3. Usual causes
- The base code is missing or comes too late. Meta asks for the base code inside the
<head>of every page where you track visitor actions. A call tofbqthat runs before the base code fails with "fbq is not defined" in the Console. - The tag manager tag did not fire. In Google Tag Manager, Preview opens Tag Assistant, which shows whether each tag fired and which trigger fired it or did not.
- Consent is still revoked. With
fbq('consent', 'revoke')the Pixel pauses sending; Meta asks to call it beforeinitand on every page. If the site never callsfbq('consent', 'grant')after the visitor accepts, the events are not sent (see how to check Consent Mode v2 for the Google side of the same banner). - A blocker or the page's Content Security Policy. Browser extensions, browser privacy settings and a Content Security Policy that does not allow Meta's domains can stop the library or the requests. Test in a profile without extensions to tell them apart.
- A different Pixel ID. The events are sent, but to another Pixel: a typo, an old ID or a staging ID left in the code.
4. Check it in Meta
Once the browser sends the event, Meta suggests checking the Pixel's details in Events Manager for the new event, or using its Chrome extension (Meta Pixel Helper, which Meta is updating to Meta Ads Data Advisor). To confirm the parameters of each request, see how to check Meta Pixel event parameters; if the problem is the opposite, see Meta Pixel firing twice.
Checklist
fbevents.jsloads on the page you are testing.- The step you test sends a
facebook.com/trrequest with the expectedev. - The
idof the request is the Pixel you check in Events Manager. - After the visitor accepts, the site calls
fbq('consent', 'grant')if it uses consent revocation. - Nothing in the Console or the Network tab reports a blocked request.