Guides

GA4 and Meta Pixel purchases don’t match? Check what the browser sends first

Updated September 2026 · 6 min read

It is normal for Google Analytics™ 4 and Meta Ads Manager to report different numbers of purchases and different revenue. Part of the gap comes from how each platform counts and attributes, which depends on settings you can review. Another part often comes from the tags on your site, and you can investigate it with Chrome DevTools before you spend hours comparing reports.

Differences you should expect

What to check in the browser

Place a test order with DevTools open (F12). In the Network tab, filter by collect to see GA4 requests and by facebook.com/tr to see Meta Pixel requests. Then check:

  1. Each tag sends the purchase once per order. Count the purchase events per order and per destination (tid in GA4, id in Meta), including every line of batched POST requests. Two copies to the same destination point to a duplicate; the same order sent to two different properties or pixels may be intended. Common causes of duplicates: the tag installed twice (in the code and in Google Tag Manager), a trigger that fires on every load of the confirmation page, or a single-page app that sends the event again when the route changes. Reload the confirmation page too: if the purchase is sent again, every customer who reopens that page creates a duplicate. Depending on how each platform deduplicates, a duplicate can be dropped by one and counted by the other, which is itself a source of mismatch.
  2. Both platforms identify the same order. A GA4 purchase needs a transaction_id (in the request, ep.transaction_id). The Meta Pixel has no required order field; many setups send the order number as order_id in the custom data (cd[order_id]). Deduplication with the Conversions API is a different thing: it pairs the Pixel’s eventID (sent as eid) with the event_id of the server event, for the same event name and the same pixel, and that ID doesn’t have to be the order number. To reconcile orders with GA4 one by one, you need a known correspondence between the IDs on each side.
  3. Value and currency agree. Compare GA4’s value (epn.value) and currency (cu) with Meta’s cd[value] and cd[currency]. Typical causes of a gap: one tag includes tax or shipping and the other doesn’t, the value is sent as text with a thousands separator, or the currency is missing or different.
  4. Each tag respects the consent applicable to it. With a cookie banner, check which tags send before and after the visitor accepts or rejects. Google’s tags follow Consent Mode, but the Meta Pixel only follows the visitor’s choice if your consent tool or tag setup blocks or configures it. If one tag waits for consent and the other doesn’t, their numbers will differ.
  5. The confirmation page is reached. Payment methods that redirect to an external page (a wallet or a bank) don’t always bring the customer back to your confirmation page, so the purchase tags on that page never fire for those orders. Test each payment method you offer.

If this journey looks right

Check other journeys and devices too, the destinations the events are sent to, reception errors, filters, deduplication and processing delays, as well as attribution, consent, blocking and server-side events. Compare reports with the same date range, time zone and currency, and read each platform’s attribution settings before drawing conclusions.