Troubleshooting · part of Fix GA4

GA4 purchase event not firing

Orders are coming in, but GA4 shows no purchases, or clearly fewer than reality. The purchase event has the longest chain in your setup (checkout, redirect, dataLayer, trigger, tag, consent, property) and a break anywhere along it fails silently. Here are the six causes, ranked by how often they turn out to be the one, each with the check that confirms it and the fix.

  1. The thank-you page never loads (payment redirects)

    Check: Pay with PayPal, Klarna, or a card that triggers a 3D Secure challenge, and watch whether you actually land on your confirmation page.

    Fix: External payment flows often return customers to the homepage or an account page instead of the URL your purchase tag waits for. Fire the purchase from the order-processing logic (a dataLayer push on whatever page confirms the order) rather than relying on one specific confirmation URL. If a third of purchases are missing, this is the usual reason.

  2. The dataLayer push changed or never happens

    Check: On the confirmation page, open the browser console and inspect window.dataLayer. Look for the ecommerce object with items, value, currency and transaction_id.

    Fix: Site updates, theme changes and checkout migrations rename or remove the push without anyone telling the GTM container. If the object is missing or its keys changed, restore the push or update the GTM variables to read the new keys. This is the classic silent break after a redesign.

  3. The GTM trigger doesn't match

    Check: Open GTM Preview mode, complete a test purchase, and watch whether the purchase tag fires. If the dataLayer event appears but the tag doesn't fire, the trigger is the problem.

    Fix: Common mismatches: the trigger listens for 'purchase' but the site pushes 'Purchase' or 'transaction_complete'; the trigger is restricted to a page path that changed; or the trigger was accidentally paused. Match the trigger to the exact event name the site pushes.

  4. Consent is blocking the event

    Check: Complete a test purchase after accepting the cookie banner, then repeat in a fresh window after rejecting it. Compare what reaches GA4 in DebugView.

    Fix: If purchases only record for consenting visitors, the event is working but consent is gating it. That may be correct behaviour under GDPR. The problem is when the consent configuration is broken and blocks everyone: check the Consent Mode defaults fire before the tag and that the purchase tag's consent settings are what you intend. The consent mode audit guide covers this end to end.

  5. The event fires but is malformed

    Check: In GA4 DebugView, find the purchase event and inspect its parameters. Confirm transaction_id, value, currency and items are present and sensible.

    Fix: A purchase with no transaction_id can be dropped or duplicated; no value means revenue reports read zero; a wrong currency corrupts everything downstream. Fix the dataLayer push so every parameter is populated on every order type, including discounted and free orders.

  6. It's going to the wrong property

    Check: In the confirmation page's Network tab, find the collect request with en=purchase and read the tid parameter. Confirm the measurement ID is the property you're looking at.

    Fix: Old test properties, a hard-coded gtag snippet alongside GTM, or an agency's leftover config can send purchases somewhere nobody checks. Remove the stray configuration so exactly one tag sends to exactly one property.

Tracking Auditor cross-checks your GA4 key events against the GTM tags meant to send them and flags duplicate-purchase risk automatically. Your first audit is free.

Run a free audit →

Go deeper

The full end-to-end process for verifying every conversion is in the conversion tracking audit guide. If consent turned out to be the cause, the consent mode audit guide covers that side properly. More symptoms are indexed at Fix GA4.

FAQs

Why is my GA4 purchase event not showing?

The most common causes, in order: the customer never lands on the page that fires the event (payment redirects), the dataLayer push was removed or renamed in a site update, the GTM trigger doesn't match the event name, consent settings block the event, the event fires with missing parameters, or it fires into the wrong GA4 property. Check them in that order.

How do I test the GA4 purchase event?

Use GTM Preview mode and GA4 DebugView together while completing a real test purchase. GTM Preview shows whether the dataLayer push happened and whether the tag fired; DebugView shows what actually arrived in GA4 and with which parameters. The gap between the two tells you where the chain breaks.

Why does GA4 show fewer purchases than my store?

Some gap is normal: consent opt-outs, ad blockers and script failures typically cost 5-10%. A larger gap points at a structural cause, most often payment-gateway redirects that skip your confirmation page, or a purchase event that only fires for some order types.

Why does GA4 show more purchases than my store?

Duplicate firing. The usual cause is a purchase event that fires on every load of the confirmation page with no transaction_id to de-duplicate, so refreshes and revisits count again. Add a transaction_id and fire the event once per order.