Why Meta counts fewer conversions than you.
Meta reported 9 App Store button clicks; our backend counted 19 (one of our own sites, Sept 2026). Five reasons a platform sees less than your records, and how to measure the gap.
On one of our own sites, our backend counted 19 clicks on the App Store button. Meta reported 9. Same site, same button, same month.
That gap is normal. It isn't a bug in your setup, and it isn't Meta lying. It's what happens when the company selling you the ads counts the results with a script in someone else's browser. Here are the reasons, in Meta's and the browsers' own words, and how to measure the gap on your own account.
First, check you're comparing the same thing
Meta shows you two different counts, and they answer different questions.
- Events Manager shows the events Meta received, from anyone. Meta says this "generally includes organic traffic, events attributed to your Meta ads, and traffic driven from other platforms".
- Ads Manager shows only events "attributed to a person who was shown your ad", after Meta discards some for duplication, data policies or regulations.
So Ads Manager will almost always be lower than Events Manager, and lower than your backend. Meta says as much. If you compare your backend's total to Ads Manager, part of the gap is just sales that didn't come from Meta ads. Compare your backend with Events Manager for the same event, the same day and the same time zone first. What's left is the loss.
Reason one: the browser blocks the pixel
The Meta pixel is a script that loads from Meta's servers into your visitor's browser. Browsers increasingly decide what that script may do.
- Firefox blocks social media trackers by default. Mozilla's support page says it blocks "the most common trackers from Facebook, Twitter and LinkedIn that appear on other websites".
- Safari blocks all third-party cookies by default, and caps cookies that scripts create. WebKit "deletes all cookies created in JavaScript and all other script-writeable storage after 7 days of no user interaction with the website". Land from a tracker's link carrying a click ID, and cookies a script sets on that page last 24 hours.
- Ad blockers stop the pixel from loading at all, for the people who choose to install one.
Every blocked script is a conversion your backend sees and Meta doesn't.
Reason two: the visitor said no
In the UK, the pixel needs a yes. The ICO is clear that advertising, and linking someone's visit to an ad they clicked, still needs consent, even after the February 2026 changes. If your banner works properly, everyone who declines is invisible to the pixel. Your payments still record their purchase.
This part of the gap is the law working, not a fault. You can't fix it, and you shouldn't try. You can only stop it from being invisible: count the declined visitors with nothing identifying, so you know how big the gap is.
Reason three: the attribution window
Meta only credits a conversion to an ad inside its attribution setting. For the standard model, Meta counts events "within 1-day or 7-day after a link click on your ad" and "within 1-day after an impression". Someone who clicks on Monday and buys eleven days later is a sale in your backend and nothing in Ads Manager.
This one cuts both ways. A view-through conversion counts someone who saw an ad and later bought, perhaps for another reason entirely. So Ads Manager can also claim sales your ads didn't cause. That's why the only fair score for an ad account is a holdout test, not either count.
Reason four: the conversion happens somewhere the pixel isn't
A pixel sees a page. A lot of real conversions never land on one: a renewal charged by Stripe, a lead that becomes a customer a week later in your CRM, an app purchase, a phone order. Meta can't count what its script never saw, and your backend counts all of it.
Reason five: duplicates removed, or never matched
If you send the same event from the pixel and from your server, Meta deduplicates it. That's correct, provided both carry the same event ID. Get the IDs wrong and you either double-count or lose events. Separately, Meta discards some events it can't use, "potentially due to duplication, data policies or regulations".
How to measure your own gap
- Pick one event that matters. A purchase, a lead, a store click. Pick one, not five.
- Count it on your side, from the server. Payments, your database or your CRM. Not a thank-you page, which has the same blind spots as the pixel.
- Pull Meta's count of the same event from Events Manager, for the same days, in the same time zone.
- Write down both, every day, for two weeks. One day tells you nothing. A steady ratio tells you a lot.
- Then compare with Ads Manager, knowing it only counts what Meta attributes to your ads.
We don't know which of the reasons above lost each of our ten missing clicks. Nobody can, from the outside. What we do know is the size of the gap, because we counted both sides.
What actually closes the gap
Meta's own answer is the Conversions API: your server sends the conversion straight to Meta, so a blocked script doesn't lose it. Meta says server events "may be used in measurement, reporting, or optimization in a similar way as other connection channels".
Done properly, that means:
- Only for people who said yes to ads. Sending a decliner's purchase to Meta isn't closing a gap. It's breaking the law the gap came from.
- With the same event ID as the pixel, so Meta can deduplicate instead of double-counting.
- Under the event's true name. A store click is a lead, not a download. Send clicks as installs and the algorithm learns to find people who click and don't install.
- With a record of every send, so when the numbers move you can see what was sent and what Meta replied.
Where Clickfall fits. Clickfall counts every visit on your own domain, with nothing identifying, so the declined side of the gap stops being invisible. That part is live. Sending consented conversions to Meta with a receipt for each send is in build: it runs in the hub today, and switching it on per client is next.
Sources
- Meta Business Help Center: Differences between event counts in Ads Manager, Ads Reporting and Events Manager
- Meta Business Help Center: About attribution models and attribution settings
- Meta for Developers: Conversions API
- Meta for Developers: Handling duplicate Pixel and Conversions API events
- WebKit: Tracking Prevention in WebKit
- Mozilla Support: Enhanced Tracking Protection in Firefox for desktop
- ICO: Guidance on the use of storage and access technologies
Every source was checked on 3 Oct 2026. Spotted something out of date? Tell us and we'll correct it.