Skip to content

Analytics8 min

Meta ads report different purchases than your store

Your ad account reports one purchase count, the store another, GA4 a third. Usually three things are behind it: the pixel and Conversions API send the same event without a shared event_id, the consent signal never reaches Meta, and the value is sent with VAT and shipping included. Below: how to check it with one real order. Audit €200 + VAT.

In short

  • The pixel and Conversions API send the same purchase with a shared event_id
  • Meta merges duplicates only within 48 hours and only on a matching event name
  • The consent signal has to reach both the browser and the server side
  • Values go without VAT and shipping, otherwise ROAS looks too good
  • One real order and ten minutes are enough to check it

Why Meta reports more purchases than your store

Almost always one of three mechanisms is at work. First: the same purchase is recorded twice, because both the browser pixel and the server send it through the Conversions API. Second: Meta attributes a purchase to a view rather than a click, so the person only saw the ad and bought a week later from search. Third: some conversions are modelled, that is calculated rather than measured.

These three differ in kind. A duplicate is a defect and needs fixing. View attribution and modelling are Meta's methodology: we cannot change them, but we can know how much they add. So the first step is never an argument about numbers, it is a check of how many events actually leave the site for one order.

How the pixel and Conversions API deduplicate on event_id

Sending a purchase both ways is correct: browsers and extensions block the pixel, while the server gets through. But Meta has to understand it is the same purchase. For that both paths send the same event name and the same event_id, usually the order number. When both match, Meta keeps one.

In practice small things break that condition:

  • event_id is generated at random on each send, so it never matches
  • the browser sends Purchase while the server sends purchase or its own name
  • the server event leaves later than 48 hours, for example in a nightly export
  • the order is paid through a bank and returns on a new page, so the pixel fires a second time

Two pixels on one page and other common faults

The second most common cause is simple: the pixel is installed more than once. In a WordPress store it can be added at the same time by the theme, a tracking plugin, Google Tag Manager and the consent platform. Each works correctly on its own, and together they double the count.

Value errors are quieter but more expensive, because they distort ROAS directly:

  • the value is sent with VAT and shipping, while ad return is calculated on the goods total
  • refunds and cancelled orders are never written off
  • the currency is missing or wrong
  • test orders from your own computer land in the same data

A ten minute check with one real order

Place one real order in a clean incognito window and follow it through every system. The steps:

  • open the store, and before answering the cookie banner check how many cookies are already set and whether requests go to facebook.com
  • answer the banner the way a customer would
  • complete the order
  • in Meta Events Manager, under Test Events, count how many Purchase events arrived for that single order

One event means deduplication works. Two mean the event_id does not match or the pixel is installed twice. Zero after consent means tracking does not work at all. Compare the same order against the store total and against GA4: if three systems show three numbers, the problem is in the sending, not in the reports.

What this work does not cover: campaigns, budget, creative

We do not run Meta ads. We do not manage campaigns, split budgets, produce creative or propose audiences. If you are looking for someone to take over ad management, that is not us.

We do a narrower thing: we check and fix the data those ads rely on. Pixel, Conversions API, deduplication, consent and values. It is one of the six parts of a website audit, priced at a fixed 200 €. If you have an ad team, their numbers will shift after the fix, so it is worth warning them in advance. Get in touch.

End

FAQ.

Next article

Google Tag Manager setup: what to check, what doubles up