Skip to content

Why Don't My Ad Platforms and My Store Agree?

Because they are answering two different questions. Your ad platform reports how many sales it believes it influenced, counted its own way and inside its own time window. Your store reports how many orders actually happened. Neither number is lying, and the gap between them is normal — it only becomes a problem when you spend money as if the platform's number were the true one.

The short version

  • Every ad platform counts a sale it touched as its own sale, so if a customer saw three ads, three platforms each claim the same order.
  • Platforms count inside a lookback window (Meta commonly 7-day click, 1-day view). An order today can be credited to a click from last week.
  • Your store counts an order once, when it is paid. That is the only number your bank agrees with.
  • Add every platform's claimed conversions together and you will usually exceed your real order count. That is arithmetic, not a bug.
  • The platform reporting on its own performance is also the party being graded. It is not neutral.

Why this happens

The mismatch is structural, not a tracking error you can configure away. Each platform sees only its own slice of the journey and, from inside that slice, its ad genuinely looks decisive. Meta cannot see the Google search that came after it. Google cannot see the TikTok video that started it. Both report honestly on what they can see, and both are incomplete.

This has a name: attribution debt. It is the gap between what your platforms claim drove revenue and what actually caused it, carried quarter after quarter into your budget. It compounds the same way technical debt does — allocate on claimed conversions long enough and the plan itself becomes the liability.

It is worth saying plainly: if this has been confusing you, you are not alone, and it is not a gap in your competence. These are very logical, normal thoughts to have when three dashboards give you four answers. The confusion is a property of the measurement system, not of you.

What you can do about it today

  1. Compare totals, not line items

    Add up claimed conversions across every platform for one clean month, then put that next to your store's real order count for the same month. The size of the overlap is the size of your problem. You only need a spreadsheet.

  2. Shorten the attribution windows and look again

    Set Meta and Google to a 1-day click window for a week. The claimed numbers will drop. Whatever revenue survives a shorter window has a stronger claim to being real.

  3. Check your UTMs are consistent

    Inconsistent tags (utm_source=facebook in one campaign, FB in another) split one channel into several in your analytics and make the gap look worse than it is. Pick one convention and apply it everywhere.

  4. Run one holdout

    Turn one channel off in one region for two weeks and watch total revenue, not that channel's dashboard. If total revenue does not move, the channel was claiming credit for demand you already had. This is the only method on this list that measures cause.

How Causality Engine helps

Causality Engine takes a GA4 export and runs a causal model over it, so instead of each platform's self-reported claim you get one per-channel view of what actually moved revenue, with confidence intervals. It takes 5-10 minutes and costs €99 per read, no pixel and no setup call.

Questions people ask next

Why does Facebook say I made €82,000 when Shopify says €40,000?

Facebook is counting every order it believes it influenced within its attribution window, including people who saw an ad and bought later for another reason. Shopify is counting orders that were actually paid for. Facebook's number includes sales other channels also claim, and sales that would have happened anyway. Neither system is broken; they measure different things.

Which number should I trust for my P&L?

Your store's number, always. It is the only one tied to money that actually arrived. Use platform numbers to compare creative and campaigns against each other inside one platform, never to decide how much total budget a channel deserves.

Can I fix this by installing better tracking?

Only partly. Better tracking (server-side tagging, clean UTMs, the Conversions API) improves what gets recorded, but it cannot tell you what would have happened without the ad. That question needs a causal method — a holdout test, a geo experiment, or a causal model — not more tracking.

Stay ahead of the attribution curve

Weekly insights on marketing attribution, incrementality testing, and data-driven growth. Written for the person who owns the budget and the person who has to defend it.

Which one are you? Optional.

No spam. Unsubscribe anytime. We respect your data.