PricingOpen the demo

Why Meta and Google both claim the same sale

“Why don’t my platform numbers add up to my real revenue?”

7 min readUpdated August 2026No signup required

Every ad platform is both the player and the referee. Each is asked to report how well it performed, using rules it wrote, on data it collected. The predictable result: sum the reported conversions and the total exceeds the orders in your shop, often by a wide margin.

The four causes, in order of size

CauseWhat happensTypical size
Overlapping windowsA customer sees a Meta ad, later clicks a Google ad, then buys. Both claim it inside their own window.Usually the largest single cause
View-through countingMeta counts a purchase from someone who saw but never clicked, within a day.Material on retargeting, small on prospecting
Modelled conversionsWhere tracking is blocked, platforms estimate what probably happened and report it as fact.Grew substantially after iOS 14.5
Different definitions of “when”Platforms credit the conversion to the day of the ad interaction; your shop records the day of purchase.Distorts short windows and daily comparisons

Why the windows matter more than anything else

A platform's attribution window is how far back it looks for something to take credit for. If Meta uses 7-day click and 1-day view while Google uses a 30-day data-driven model, a purchase eight days after a Meta click and one day after a Google click will be claimed once, twice, or not at all depending on settings neither of them tells you about in the interface you look at daily.

The check that shows you the size of your gap

  1. 1Take last month's total orders from your shop or payment processor. This is the truth.
  2. 2Add up reported conversions from every ad platform for the same period.
  3. 3Divide the second by the first.
Over-attribution ratio

sum of platform-reported conversions ÷ actual orders

Meta reports 340, Google reports 180, your shop recorded 400 orders. 520 ÷ 400 = 1.3 — thirty percent more claimed sales than sales.

That ratio is the amount of double-counting sitting under every decision you make from platform reporting. It does not tell you which platform is wrong — usually both are, in different directions — but it tells you how much slack is in the numbers.

What actually closes the gap

Deterministic matching: capture the click identifier the platform attaches to the landing URL, store it with the order, and later reconcile each order against exactly one click. A sale then belongs to one ad or to none — and what cannot be matched is reported as unattributed rather than quietly assigned to whoever shouts loudest.

  • Meta appends fbclid, Google appends gclid or wbraid, to the landing URL.
  • Capture it first-party at landing, persist it, and store it on the order.
  • Match on that identifier, not on a model.
  • Keep an explicit unattributed bucket. An honest gap beats a confident guess.

In short

  • Reported conversions exceed real orders because each platform judges itself.
  • Align attribution windows across platforms today — same click window, no view-through.
  • Divide summed platform conversions by real orders to size your gap.
  • Deterministic click-id matching is what actually fixes it; an honest unattributed bucket is a feature.

Where this method runs out

Everything above works in a spreadsheet. Keeping it current, and matching every order back to the ad that actually caused it, is the part that does not. That is what Kepra does — and the demo runs on sample data with no signup, so you can judge it before believing any of this.

Open the demo →

Read next