A dial weighing scale with its needle swung to a big reading while the pan holds only a feather -- Meta's number reads higher than reality.
Meta

Meta Says It Made You 40 Sales. Your Bank Says 12.

Meta's dashboard almost always reports more conversions than your bank or CRM shows -- because it grades its own homework. What its number actually counts (view-through, modeled guesses, double-counting), and which number to trust.

Nora BennettPaid Media Strategist, BrandRocket9 min read · July 27, 2026

Here is a moment every business owner running Meta ads eventually hits. You open Ads Manager and it proudly tells you the campaign drove 40 purchases this week. Then you open your Shopify dashboard, or your bank, or your booking system, and count 12. Same week, same campaign, two numbers that are nowhere near each other. So which one is lying?

The frustrating answer is: neither, exactly. But that answer is useless on its own, because the gap has real consequences. Trust Meta's inflated number and you will happily pour more budget into a campaign that is quietly underperforming. Panic at the gap and you will switch off a campaign that is actually working. To do neither, you have to understand one thing: what Meta's number is actually counting, and why it is almost always higher than what you see in your bank.

Meta's dashboard grades its own homework. Your bank doesn't.

Meta Grades Its Own Homework

Start with the root of it. Meta gets to decide which sales to take credit for, and like anyone grading their own work, it is generous. That is not a scandal; it is just how the system is built. But it means the number in Ads Manager is not a neutral count of what happened. It is Meta's account of how much Meta helped.

Compare that to how your other tools count. Google Analytics, for example, uses last-click: it hands the credit to whatever the person did right before they bought. Meta plays a different game. It will claim a sale if it believes it had a hand in it at any point within its attribution window, even if the person's final step to purchase had nothing to do with Facebook or Instagram. So the very same sale gets counted by Meta and credited somewhere else by your analytics. Both platforms think they are right, and in a way both are. Meta is not necessarily lying to you. It is just counting things your bank statement never will.

Three specific mechanics drive the gap. Once you know them, the mystery disappears.

Reason One: It Counts Sales That Drifted Away From the Ad

The first is the attribution window, and it is the biggest one. By default, Meta counts a purchase as its own if the person clicked your ad within the last several days, or in some cases merely saw it, and then bought. The common setting is a seven-day click and one-day view window: click in the last week, or see it in the last day, and any resulting purchase belongs to Meta.

Picture how that plays out. Someone scrolls past your ad on their phone yesterday, taps it, glances at your site, and does nothing. This morning, on their laptop, they remember your name, Google your business, land on your site through that search, and buy. Your analytics sees a person who arrived from Google and calls it an organic sale. Meta sees a person it showed an ad to a day ago who then purchased, and calls it a Meta sale. Nobody is wrong, but that one purchase now lives in two different reports. Add in view-through conversions, where someone never even clicks and just sees the ad before buying later, and you can see why Meta's total naturally runs higher than the count of people who clicked an ad and bought on the spot.

Reason Two: Some of Those Sales Are Educated Guesses

The second reason surprises people, because it runs opposite to what they expect. After Apple's privacy changes a few years ago, Meta lost the ability to track every conversion cleanly, so you would assume it now reports fewer sales, not more. Sometimes it does. But to fill the holes where it can no longer see, Meta estimates. It models.

Here is what modeling looks like. Meta knows it sent, say, 100 people to your site, because the clicks happened on its own platform and it can count those precisely. It also knows that stores like yours convert at roughly some average rate. So rather than leave a blank where its tracking went dark, it makes an educated guess and drops in an estimated number of sales. Those modeled conversions are not fabricated out of nothing, but they are not confirmed either. They are Meta's best statistical guess.

This is why a brand-new campaign's numbers are the least trustworthy of all. Modeling is heaviest right at the start, before real data has caught up, and it is made worse by a reporting delay: the accurate figures often take two or three days to fully land. So the sales count you stare at on day one or day two of a campaign is the shakiest number Meta will ever show you. Give it time and it settles closer to the truth.

Reason Three: The Same Sale Counted Twice

The third reason is more of a plumbing fault than a philosophy. Most well-set-up accounts send Meta their conversion data two ways at once: the browser-based pixel and a second, sturdier feed from your own server. That redundancy is a good thing, and it is what we recommend in Meta's AI Can Only Be as Smart as the Data You Feed It. But it only works if Meta correctly recognizes when both feeds are reporting the same sale and keeps just one. That matching process is called deduplication, and it sometimes breaks.

When it breaks, every real sale shows up twice, and your reported number balloons to roughly double reality. So there is a quick tell here: if Ads Manager is showing you about two times what you know to be true, and you have both the pixel and the server feed running, your deduplication has almost certainly slipped. The fix is unglamorous and effective, the marketing equivalent of turning it off and on again: reinstall the pixel and re-set-up the server connection so the matching starts fresh.

The 20 Percent Rule: What Normal Actually Looks Like

Before you go hunting for a problem, accept the part that is not a problem. There will always be a gap between what Meta reports and what your own systems show. Always. Expecting the two to match exactly is the real mistake, because they are built to count differently.

The useful rule of thumb, from advertisers who manage this every day, is roughly twenty percent. If Meta's number is within about twenty percent of your own over a thirty-day window, that is a healthy, expected margin. Do not chase it, do not tinker, just operate on Meta's data knowing it is a little generous. It is when the gap blows past that, and especially when it hits that tell-tale two times, that something is genuinely off and worth fixing.

Expecting Meta's numbers to match your bank exactly is the mistake. A gap is normal. A chasm is a bug.

How to Bring Meta's Number Closer to Reality

When the gap is bigger than it should be, three moves tighten it, and none require a developer.

First, judge over a longer window. Because modeling is worst early and the reporting delay lags a few days, a fresh three-day view is the most distorted picture you can look at. Assess your results over thirty days and they will land far closer to the truth.

Second, lengthen your attribution setting. Moving from a one-day click window to a seven-day click, or seven-day click and one-day view, actually reduces how much Meta has to model and guess, which makes the reported number more stable and reliable, not less.

Third, if you are seeing that roughly double count, reinstall the pixel and the server feed to reset deduplication. That specific symptom has a specific cause, and this is the fix.

The One Number That Doesn't Lie

Here is the shift that matters most, and it is a mindset more than a setting. Stop treating Meta's reported sales and return-on-ad-spend as the final word, and start judging on your own numbers.

The number that cannot be inflated is the money that actually arrived. So look at real revenue in your bank and your CRM, and look at it blended: total money in against total money spent on ads, across the whole account. Then apply the simplest, most honest test there is. When you turned your ad spend up last month, did your total revenue actually go up? If Meta claimed forty extra sales but the money in your account did not move, those sales were not real in any way that pays your rent. And if your revenue climbed in step with your spend, then the campaign is working, whatever the exact figure in Ads Manager says.

Use Meta's dashboard for what it is genuinely good at: pointing you in a direction, showing you which ad is outrunning the others, telling you where to push. Just do not accept it as the truth about how much you made. That truth lives in your bank.

What to Actually Do About It

Put it together and the whole thing gets calm instead of maddening. Expect Meta to report a bit high, because it counts every sale it can plausibly claim and estimates the ones it cannot see. Keep the gap between Meta and your own systems under about twenty percent, and if it is wider, lengthen your window, lengthen your attribution setting, and reinstall your tracking if you are seeing double. Above all, judge success on the real money in your account and whether it rises when you spend more, not on the confident number Meta shows you.

Meta's report card grades itself, and it grades kindly. Your bank statement is the honest examiner. Read both, believe the second, and you will stop lurching between overspending and panic.

We help small businesses make sense of exactly this kind of thing every day, so if you would rather have someone read the real numbers with you and tell you the truth about what your ads are making, we are glad to help. And if you would rather learn to read them yourself, even better. Either way, we're here.

Meta's number tells you which direction to go. Your bank tells you whether you're actually getting there.

Nora Bennett · Paid Media Strategist, BrandRocket

Paid media strategist at BrandRocket. Spends her days inside Google Ads and Meta accounts, helping small businesses get more out of every dollar they spend.