A pixel that stops reporting gets noticed within days, because conversions fall to zero and someone panics. A pixel that reports too much can run for months, because inflated ROAS looks like success — and Meta responds by sending more budget toward the campaigns producing it.
The only reliable test is reconciliation: does the purchase count in Events Manager correspond to real orders in your store?
Almost every troubleshooting article treats missing conversions as the problem. In practice the more damaging failure runs the other way, because it does not look like a failure. It looks like your best campaign.
Why over-reporting is worse than under-reporting
Under-reporting costs you optimisation quality. Meta sees fewer conversions than really happened, so it learns more slowly and you probably under-invest in something that works. Bad, but self-limiting.
Over-reporting is different, because it creates a feedback loop. Inflated conversions produce inflated ROAS. Inflated ROAS makes a campaign look like a winner. Winners get more budget. More budget produces more phantom conversions.
The error recruits spend toward itself. That is why it can consume a third of a daily budget before anyone questions it — every signal available inside Ads Manager says the campaign is working.
One Shopify account I took over and audited — a skincare brand running Meta ads at roughly PKR 100,000 per day. The client asked me not to name them, so I have not. The numbers are as they stood in the account during that engagement.
This is one account, not a study. I am giving you the mechanism and one worked example, not an industry statistic. And I am not stating precise engagement dates here because I would rather omit them than approximate them.
Six checks, cheapest first
Reconcile a settled week
The single highest-value check, and most accounts have never had it done. Take one week that ended at least two weeks ago. Compare Events Manager purchases against your store’s order count for the same period and timezone.
Events Manager should approach your order count. It should never exceed it — Events Manager counts purchase events, and a purchase event without an order is by definition not a purchase.
Count your pixels
On the account behind this article, the cause was a second pixel installed by a third-party app, reporting purchases with no corresponding orders. Check Settings → Customer events, the Facebook & Instagram sales channel, and theme.liquid. More than one pixel ID is your first suspect — see the article on multiple pixels.
Check whether the purchase event fires on a refresh
Complete a real order, land on the confirmation page, then refresh it. Watch the Network tab. If a second purchase event fires, every customer who refreshes, bookmarks or revisits that page is inflating your numbers. Without a unique event_id or order identifier, Meta has no way to know it is the same sale.
Check what page the purchase event is bound to
A purchase event should fire on order completion and nowhere else. Misconfigured apps sometimes bind it to add-to-cart, initiate-checkout, or any page matching a loose URL rule. Every one of those produces purchases with no orders behind them.
Segment reported conversions by campaign, then trace them
Do not evaluate the account as one number. Group campaigns by which pixel they optimise toward, then try to trace each group’s claimed orders in your store. On that account, one group’s orders could not be traced at all — and that group was consuming roughly 30 to 40% of daily spend.
Compare purchase value against real revenue
Counts can look plausible while values are nonsense. Compare total purchase value reported for a settled week against actual revenue for the same week. A value materially above real revenue means events are firing with wrong or duplicated values, even if the count looks close.
What to do when you find it
Fix the source rather than the symptom. Disabling a misconfigured pixel or correcting the event trigger will cause the affected campaigns to stop delivering — that is the diagnosis confirming itself, not a new problem.
Then brief whoever owns the budget before they see the dashboard. Reported ROAS will fall. Revenue will not, because the revenue you are removing never existed. That conversation is much easier held in advance than in retrospect.
If a campaign has been optimising toward phantom conversions for months, Meta has spent that time learning to find people who trigger phantom conversions. Rebuilding on clean data takes time, and early performance on the corrected setup will look worse than the fiction it replaced. That is the cost of having been wrong, not the cost of fixing it.
Limits
One account, one cause. Over-reporting has other sources — duplicate CAPI events without matching identifiers, test events left running, several apps firing the same conversion. The reconciliation in check one detects all of them; identifying which requires the rest.
I am also not giving you a threshold for “too much”. Compare against your own store’s orders. That comparison is exact, which is more than any benchmark can offer.
Are your reported purchases real?
It takes fifteen minutes to find out and most accounts have never been checked. Send me your store URL.
Get a free tracking audit →