GA4 ecommerce purchase tracking, set up properly
GA4 can give you genuinely useful ecommerce reporting, but only if the events and item data are sent correctly. Most “broken” GA4 ecommerce comes down to a thin dataLayer. Here is what a proper setup sends, and the mistakes that quietly ruin your reports.
GA4 ecommerce is event-and-item based
GA4 understands a specific set of ecommerce events, view_item, add_to_cart, begin_checkout, purchase and others, each carrying an items array. If those events fire with the right structure, you get funnels, product performance and revenue reporting. If they don’t, you get numbers you can’t trust.
What a correct purchase event sends
- A unique transaction_id (so the same order is never counted twice).
- The order value and currency.
- An items array with item_id, item_name, price, quantity and ideally category.
- Fired once, from the right place, after the order is confirmed.
That transaction_id is doing more than it looks: it is how GA4, and your ad platforms, deduplicate the purchase so revenue isn’t inflated.
Does GA4 match your real sales?
We’ll scan your live ecommerce events and show what’s missing or double-firing. Free, 10 seconds.
Check my tracking freeThe mistakes that ruin ecommerce reports
- Missing item data: events fire with a value but no items, so product reports are empty and ad catalogs can’t match.
- No transaction_id: the same purchase gets counted multiple times.
- Purchase firing twice: native platform tracking plus an app plus a hand-added tag all reporting the same sale.
- Consent blocking: the purchase event is blocked for users who didn’t accept cookies, so revenue looks low.
How to know it’s right
A healthy GA4 ecommerce setup lands within a few percent of your platform’s own sales figure and stays there, with populated product reports and a clean funnel. If GA4 and Shopify, WooCommerce or Stripe keep drifting apart, the dataLayer or deduplication is the place to look.
Get GA4 ecommerce tracking fixed
We get your events, item data and deduplication right so GA4 matches your real sales. The audit comes off any build.
See how it works & pricingRelated guides
Why GA4 and Shopify don’t match Fix duplicate conversions What is Google Tag Manager? PricingDatahound are analytics and ad-tracking specialists. We fix broken GA4, Google Ads, Meta and server-side tracking. See pricing · All guides · Back to datahound.agency
GA4 ecommerce tracking: common questions
Why are my GA4 product reports empty?
Almost always because the ecommerce events are firing without the items array. GA4 needs each event to carry item_id, item_name, price and quantity. Without that data, revenue may still show but product-level reports stay empty.
What is the transaction_id for in GA4?
It’s a unique ID for each order that lets GA4 and your ad platforms deduplicate the purchase, so the same sale is never counted twice. Missing or non-unique transaction IDs are a common cause of inflated revenue.
Why doesn’t GA4 match my store’s sales?
Usually the purchase event is firing more than once, missing data, or being blocked by consent. A clean setup sends one correct, deduplicated purchase event and lands within a few percent of your store’s own numbers.