In most accounts we audit, the number of conversions the platform reports and the number of sales the business actually made do not match. Sometimes the gap is 10%. Sometimes the dashboard reports double.

This matters more than almost anything else in the account, because every optimisation decision — every bid, every audience, every budget shift — is made against that number. If it is wrong, the platform is not underperforming. It is performing perfectly against a lie.

The six failures, in order of how often we find them

1. The event fires on page load

The most common and most expensive. A Purchase or Lead event is placed on the page rather than on the completed action, so it fires when someone arrives at checkout instead of when they buy. Your reported conversions inflate, your reported cost per acquisition collapses, and you confidently scale a campaign that is not working.

How to check: open your site, visit the checkout page, and do not buy anything. If a Purchase event appears in your test tool, you have found it.

2. Browser and server events are not deduplicated

Running both the browser pixel and the Conversions API is correct — ad blockers and iOS mean the browser alone misses a lot. But both need to send a matching event ID so the platform knows they are one event, not two.

Without it, every conversion is counted twice. Your reported cost per acquisition is exactly half the truth.

How to check: Events Manager will usually warn you directly. Look for a deduplication rate near 100%. If it says 0%, nothing is being matched.

3. Conversion value is static

A fixed value of 1, or 100, or the same number on every order. Value-based bidding then optimises towards volume rather than revenue, and it will happily find you a hundred small orders instead of ten large ones.

How to check: compare total reported conversion value against real revenue for the same window. Round numbers are the tell.

4. Attribution windows are being compared unlike for unlike

Meta defaults to a 7-day click, 1-day view window. Google Ads uses a different model entirely. GA4 uses another. Put all three in one spreadsheet and the numbers will never reconcile — not because anything is broken, but because they are answering different questions.

How to check: write down which window each platform is using before comparing anything. Most “our numbers do not match” panics end here.

5. Test traffic is in the data

Your own team, your developer, your agency. Every internal visit and test order sits in the same dataset the algorithm learns from.

How to check: filter internal IPs in GA4 and exclude test orders from the value passed back.

6. The thank-you page is reachable directly

If /thank-you is a normal URL, every bookmark, refresh and crawler hit fires another conversion.

How to check: type the URL in directly. If the event fires, so does everyone else’s.

A ninety-minute audit you can run yourself

  1. Install the platform’s own debugger — Meta Pixel Helper, Google Tag Assistant. Free, and they surface duplicate and malformed events immediately.
  2. Walk your funnel and watch. Homepage, product, cart, checkout, purchase. Note which events fire where. Anything firing early is your first fix.
  3. Make one real purchase. Use a real card, refund it after. Confirm exactly one Purchase event with the correct value.
  4. Reconcile a full month. Platform-reported conversions against orders in your back office. Under 10% variance is normal. Over 20% means something is broken.
  5. Check deduplication. In Events Manager, look at the rate. It should be high.
  6. Write down the attribution window each platform is using, and stop comparing across them.

Why we do this before anything else

We do not take on an account and immediately change bids. We check whether the data those bids would be based on is real. It is unglamorous, it never looks impressive in a pitch, and it is the difference between optimisation and expensive guesswork.

It is also why we build reporting pipelines where metric definitions are locked once and pulled automatically. If spend, reach, frequency, CPM, CTR, CPC and ThruPlays are defined once and never redefined by hand, nobody can quietly change the denominator halfway through a quarter.

If you only do one thing

Reconcile last month’s platform-reported conversions against real orders. One number against another. If they are more than 20% apart, stop adjusting campaigns and fix the tracking first — because until you do, you are not optimising anything.

We will do this free. Send us access and we will look at pixel health, event structure and conversion setup, then send back what we find. If it is all correct, we will tell you that and you will have lost nothing but an email.