You built the funnel, dropped in your Meta Pixel, and launched the ads, but Events Manager is quiet. Or worse: the pixel looks fine, yet your reported conversions are a fraction of the leads actually landing in your inbox. Either way, you're optimizing ad spend on numbers you can't trust.
The frustrating part is that "my Meta Pixel isn't working" almost never has one cause. Sometimes the pixel genuinely isn't installed. Far more often, it is firing on your side and being quietly deleted on the user's side. Here are the nine reasons this happens, how to tell which one is yours, and the one change that makes the whole problem go away.
Quick answer: A Meta Pixel that "isn't working" is almost always one of two problems. If it fires no events, the base code is usually missing or on the wrong pages, using the wrong pixel ID, blocked by a cache/consent plugin, or stuck in a single-page app that never re-fires. If it fires but conversions are missing, browser tracking is the cause: iOS App Tracking Transparency, Safari and Firefox tracking prevention, and ad blockers delete 20–40% of browser-side events before they reach Meta. The durable fix is the server-side Conversions API (CAPI), deduplicated against the pixel by a shared event ID so nothing is counted twice.
First, diagnose it in 60 seconds
Before changing anything, install the Meta Pixel Helper Chrome extension and load the page you care about. It tells you three things instantly: whether a pixel fired, which pixel ID it used, and what errors it hit.
Then open Events Manager → Test Events, enter your URL, and trigger the action (a page view, a form submit, a button click). If the event shows up here, the pixel is reaching Meta. If it doesn't, the event is dying somewhere between the browser and Meta, and that distinction tells you which half of this list to read.
Use this table to jump straight to your most likely cause:
| What you're seeing | Most likely cause | Reason |
|---|---|---|
| Pixel Helper shows no pixel at all | Base code missing or on the wrong pages | 1 |
| Pixel fires, but the wrong pixel ID | ID pasted from another account or client | 2 |
| Only the first page tracks; later steps don't | Single-page app that never re-fires | 3 |
| Works in incognito but not on the live page | Cache or consent plugin stripping the script | 4 |
| Pixel fires, but Test Events and conversions are low | Browser-side events blocked (ATT, ITP, ad blockers) | 5–6 |
| Pixel only fires after "Accept cookies" | Consent gate working as intended | 7 |
| Low Event Match Quality score in Events Manager | Too few customer parameters sent with each event | 8 |
| Conversions inflated or erratic after adding CAPI | No deduplication between pixel and CAPI | 9 |
Why is my Meta Pixel not firing any events?
1. The base code is missing or on the wrong pages
The pixel base code has to load on every page you want to track, inside the <head>. A single-page template, a landing page built outside your CMS, or a checkout hosted on another domain can all quietly miss it. If Pixel Helper shows nothing at all, this is your first suspect.
2. Wrong pixel ID
If you manage more than one brand, ad account, or client, it's easy to paste last project's pixel ID. Pixel Helper shows the ID that actually fired, so check it against the ID in Events Manager. A pixel that fires perfectly into the wrong dataset looks exactly like a pixel that isn't working.
3. Your site is a single-page app that never re-fires
React, Vue, and most modern funnel builders don't reload the page when a user moves between steps. The base code fires one PageView on first load and then goes silent, because the events that should fire on later steps depend on a page reload that never happens. You need the pixel to fire on route changes and interactions, not just once.
4. A caching or "cookie" plugin is stripping the script
Aggressive page-cache plugins, cookie-consent tools, and "performance" optimizers routinely defer or remove third-party scripts, including the pixel. If the pixel works in an incognito window but not on the live cached page, a plugin is rewriting your output.
Why does my Meta Pixel fire but conversions go missing?
This is the bigger, sneakier category, and where most "my pixel is broken" reports actually live.
5. iOS App Tracking Transparency
Since iOS 14.5, Apple asks users to opt out of tracking by default, and opt-in rates have stayed low: across the industry only about a quarter to a third of users grant tracking permission. A huge share of your mobile traffic never grants it, so browser-side events from those users are throttled or dropped before they reach Meta. Your pixel is healthy; the conversions are simply being deleted on the device.
6. Ad blockers and browser tracking prevention
Safari's Intelligent Tracking Prevention, Firefox's Enhanced Tracking Protection, Brave, and every ad blocker specifically target connect.facebook.net and the _fbp / _fbc cookies. This isn't a fringe problem: roughly 30% of internet users run an ad blocker (29.5% globally and 32.5% in the US as of 2025, per GWI/DataReportal), and Safari and Firefox block third-party tracking cookies by default. Depending on your audience's browser and device mix, 20–40% of browser-side events can be blocked outright, and more for audiences skewed toward Safari and privacy-focused browsers. The pixel fires in your console and never arrives at Meta's.
7. Cookie consent is (correctly) holding it back
Under GDPR and similar laws, the pixel shouldn't fire until the visitor accepts marketing cookies. If your pixel only fires after someone clicks "Accept," that's not a bug; it's compliance working. The real problem is when consent is handled so clumsily that few people ever opt in, or when the pixel fires before consent and exposes you to legal risk. You want a clean, one-click consent gate that maximizes opt-ins without breaking the law.
8. Poor Event Match Quality
Even events that reach Meta only count if Meta can match them to a real person. A bare PageView with no email, phone, or name has weak match quality, so those conversions get poorly attributed, or not attributed at all. In Events Manager you'll see this as a low Event Match Quality score, and downstream it shows up as conversions your ad account "loses."
9. No deduplication between pixel and CAPI
If you have already added the Conversions API but your numbers look inflated or erratic, you're likely sending the same event twice without a shared event ID. Meta can't tell they're the same conversion, so it either double-counts or drops one unpredictably.
The real fix: send events from the server, not the browser
Notice that reasons 5 through 9 have nothing to do with your pixel being installed wrong. They're all the same underlying problem: the browser is a hostile place to track conversions. Apple, Mozilla, Brave, and every ad blocker are actively deleting browser-side events, and there is no amount of pixel-tweaking that changes that.
The durable answer is Meta's Conversions API (CAPI), which sends the conversion server-to-server. There's no script for a blocker to strip, no cookie for ITP to expire, no device permission to deny. The event leaves your server and arrives at Meta's. Full stop. Meta now treats the Pixel and CAPI as a single dataset and recommends running both together: the pixel for browser-side coverage, CAPI to recover everything the browser drops, deduplicated by a shared event ID so nothing is counted twice.
Here's how the two setups compare in practice:
| Browser Pixel only | Pixel + Conversions API | |
|---|---|---|
| Blocked by ad blockers, ITP and ATT | Yes, 20–40% of events lost | No, server events can't be stripped in the browser |
| Survives cookie and JavaScript restrictions | No | Yes |
| Event Match Quality | Limited to what the browser exposes | Enriched server-side (email, phone, fbp/fbc), hashed with SHA-256 |
| Risk of double-counting | Not applicable | None, shared event ID deduplicates the pair |
| Meta's recommendation | Not sufficient on its own | The standard setup |
How Collectform makes this the default
Collectform is a lead form platform built for paid traffic, so lead forms with server-side tracking are the default, not a plugin you bolt on. Wiring up CAPI by hand means a server endpoint, SHA-256 hashing of customer data, event deduplication, and consent logic. In Collectform it's built in:
- Server-side by default. Connect Meta's Conversions API in your funnel's Integrations tab with your pixel ID and access token. Events fire from the server, immune to the blockers in reasons 5 and 6.
- Automatic deduplication. Every CAPI event shares an event ID with its browser pixel counterpart, so Meta counts each conversion once, with no more inflated numbers from reason 9.
- Advanced matching, hashed. Map the fields your respondents fill in (email, phone, name, city) to Meta's matching parameters. Values are hashed with SHA-256 before they leave the server, and Collectform automatically forwards the
_fbp/_fbccookies, IP, and user agent. That's the cure for the low match quality in reason 8. - The right event for the right step. Because every Collectform funnel is one question at a time, you can fire a specific event (
Lead,Schedule,Purchase) on a specific button, instead of one generic event for the whole form. - Consent-aware and compliant. Both the pixel and the CAPI events sit behind a GDPR-ready one-click cookie consent gate, so reason 7 is handled by default: nothing marketing-related fires until the visitor opts in, and it fires cleanly the moment they do.
The takeaway
If your Meta Pixel shows no events, it's almost always installation: missing base code, the wrong ID, a single-page app that never re-fires, or a plugin stripping the script. Pixel Helper and the Test Events tab will find it in a minute.
But if your pixel fires and your conversions still don't add up, stop debugging the pixel. The browser is deleting your events, and the only reliable fix is to stop depending on the browser. Send your conversions server-side with the Conversions API, deduplicate them against your pixel, and enrich them with advanced matching.
That's the difference between a pixel that looks like it works and conversion tracking you can actually optimize on.
Collectform is the lead form platform for paid traffic: server-side CAPI, deduplication, advanced matching, and consent are included on every paid plan. That's the difference between forms that just collect data and performance lead forms your ad platforms can actually optimize on. Explore templates or start building with Collectform.