MANTISTracking specialist
ServicesResourcesGet in touch
MANTIS

Tracking and attribution infrastructure for businesses running paid ads, so your CRM, ad platforms, and reporting all tell the same story.

Services

  • Tracking Audit
  • Tracking Architecture
  • Offline Conversions
  • Lead Automation
  • Audience Suppression

More

  • Resources
  • Get in touch
  • Privacy Policy
© 2026 MANTISTracking & Attribution InfrastructureZagreb, Croatia
Resources
Tracking

Why Meta shows more leads than your CRM, and what's actually causing it

Meta reports 20 leads. Your CRM has 16. Nobody can agree whose number is right, so the media buyer blames the pipeline and the developer blames the pixel. Usually both are wrong about the cause, and it lives in a layer neither team fully owns.

Arci · MANTISJuly 20268 min read

The gap is almost never a lost lead

The first instinct when Meta shows a higher number is to assume something went wrong downstream: a lead fell out of the CRM, a form submission didn't trigger the sync, or the pipeline dropped a record. This is almost never what happened.

Meta's number is almost always inflated, not your CRM's number deflated. The question isn't "where did those 4 leads go?" It's "why is Meta counting things that aren't leads?"

There are four causes that cover the vast majority of cases. Most implementations have at least two of them running simultaneously.

Cause 1: Browser pixel and CAPI are both firing the same event

This is the most common cause of inflated lead counts, and the most frequently missed.

When you implement Meta CAPI alongside your browser pixel, both systems fire a Lead event for the same form submission. If those two events don't share a matching event_id, Meta has no way to know they're the same conversion. It counts them as two separate leads.

The CAPI was introduced specifically to recover signal lost to browser restrictions and ad blockers. It was never designed to run alongside the browser pixel without deduplication. Running both without a shared event_id is one of the most common implementation errors in the industry, and it's invisible unless you know where to look.

How to check

In Meta Events Manager, open the event in question and look at the Deduplication column. If it shows a deduplicated count that's meaningfully lower than the raw event count, you have duplicate fires. A 20–40% deduplication rate on Lead events is a clear sign the pixel and CAPI aren't sharing an event_id.

What the fix looks like

Both the browser pixel event and the CAPI server event need to pass the same unique event_id for each conversion. Typically this is generated at the moment the form is submitted (a UUID tied to that session and that form) and passed to both the DataLayer (for GTM to pick up on the browser side) and your server-side GTM container (which sends it to CAPI). Without server-side GTM, the plumbing to do this consistently doesn't exist.

Cause 2: Auto-events are counting non-lead interactions as leads

Meta's pixel ships with automatic event detection: it scans the page and tries to infer conversions from button clicks, form interactions, and page visits without any manual configuration. This sounds useful. In practice, it fires Lead events on actions that have nothing to do with a lead submission.

A common scenario: a user lands on your thank-you page after submitting a form. The browser pixel fires a manual Lead event (correct). But auto-event detection also picks up the thank-you URL pattern or a button click earlier in the funnel and fires a second Lead event (incorrect). Your CRM sees one record. Meta sees two.

Auto-events are enabled by default. Most implementations never turn them off. They're not visible in standard GTM setups, so nobody notices them until the numbers stop adding up.

How to check

In Events Manager, filter your Lead events by Event Match Source. If you see events attributed to "Auto-detected" rather than your GTM implementation, auto-events are contributing to the count. Cross-reference the timestamps: auto-event Lead fires often cluster around the same sessions as your manual Lead fires.

Cause 3: Attribution window mismatch

Even with perfect deduplication and no auto-events, Meta and your CRM measure different things, and that gap shows up in the numbers.

Meta's default attribution window is 7-day click and 1-day view. That means if someone clicked your ad on Monday, didn't convert, came back on Friday via a Google search and submitted the form, Meta claims the lead. Your CRM records the lead without any campaign attribution. Meta: +1. CRM: +1 with no Meta tag. They're counting the same person in different columns.

This is especially visible in accounts with longer sales cycles or heavy retargeting, where the same user touches multiple campaigns across multiple sessions. Each touchpoint can generate a Meta attribution event while the CRM records a single conversion.

This isn't a bug. It's a fundamental difference in how the two systems define "their" conversion. But it's usually not the primary driver of a 20–30% discrepancy on its own. It becomes significant when layered on top of the deduplication and auto-event issues above.

Cause 4: Test events that were never cleaned up

During GTM implementation and QA, events fire in test mode. Test mode is supposed to prevent those events from entering your live data, but it's not bulletproof, and plenty of implementations have gone through periods where the pixel was live but still in a partially-configured state.

If events were fired during testing without test mode active, or if a GTM container was published before the pixel was switched to production mode, those events entered your event count. They don't correspond to any CRM record because no form was actually submitted.

This is less of an ongoing issue and more of a historical contamination problem. It's harder to diagnose after the fact but shows up clearly when you compare event volumes against actual form submission data around the time of implementation.

Why this matters beyond the reporting headache

The lead count discrepancy is frustrating on its own. But the more important consequence is what it does to your ad platform's optimisation.

Meta's algorithm optimises toward the signal you send it. If you're sending inflated Lead events (duplicate fires, auto-event noise, multi-touch re-attributions), the algorithm is learning from a distorted picture of who converted. It's finding more people who trigger your pixel in ways that loosely resemble a conversion, not more people who actually submitted a qualified lead.

Fixing the deduplication and removing auto-events will almost always cause your reported lead count to drop. That's not a performance regression. It's the number moving closer to reality. The CPL number that comes out of a clean implementation is a number you can actually make decisions from.

What a diagnostic audit actually looks at

Identifying the cause requires looking at the tracking layer from multiple angles at the same time: not just the pixel, not just the CRM, but the interaction between them and everything in between.

  • Meta Events Manager deduplication metrics: raw vs. deduplicated event counts per event type
  • GTM container audit: which tags fire on which triggers, whether auto-events are suppressed, whether event_id is passing correctly
  • CAPI implementation review: whether server-side events include the correct user data fields for matching, and whether they're deduplicating against the browser pixel
  • Event Match Quality score: Meta's own signal quality indicator, which drops sharply when matching fields are missing or malformed
  • CRM submission data cross-referenced against raw pixel event logs for the same time window

The output is a clear root cause (not a list of things that might be wrong) and a fix plan both the media buyer and the developer can read without needing to translate for each other.

The four causes

  1. 01Browser pixel + CAPI double-firing without event_id deduplication
  2. 02Auto-events counting non-lead interactions
  3. 03Attribution window mismatch between Meta and CRM
  4. 04Test events that entered live data during implementation

Seeing this in your account?

I run tracking audits that identify the exact source of the discrepancy and explain it clearly to both the media and technical sides.

Get in touch