GA4 ecommerce tracking: the events that actually matter
GA4 recommends around fifteen ecommerce events, from view_item_list through to refund. A sales funnel only needs five or six of them to be measured properly: the rest refines an already reliable base, it doesn’t replace it.
What I see most often
- A GTM container with twelve to fifteen ecommerce tags, half of which never fire
- A purchase event firing twice when the customer refreshes the confirmation page
- Empty GA4 ecommerce reports despite tags firing correctly in preview mode
- A project that wants to track everything from day one and, six months later, has neither a reliable dataLayer nor anyone maintaining it
- An average order value or product conversion rate that can’t be calculated because value or currency aren’t passed correctly
How I prioritise the setup
-
purchase, the only event required from day one
Without it, no revenue is measurable and no ROAS can be calculated on Google Ads or Meta. I check it fires once per order only, with a stable transaction_id and value/currency matching the amount actually charged.
-
add_to_cart and begin_checkout, to measure drop-off
These two events are enough to see where the funnel loses visitors between adding to cart and starting checkout. Second priority, once purchase is solid.
-
view_item and view_item_list, when the catalogue is the weak spot
Useful for calculating a conversion rate per product page or category page. Third priority, especially with a large catalogue or several ranges to compare.
-
view_cart, add_shipping_info, add_payment_info, to refine
These intermediate steps pinpoint where in the checkout a visitor drops off. Worth adding once the base is stable, rarely a first priority.
-
refund, last, unless returns carry real weight
Only relevant if the volume of refunds or cancellations matters for steering the business; otherwise, not a launch priority.
Names and parameters that aren’t up for debate
The main ecommerce events GA4 recommends — view_item_list, view_item, add_to_cart, view_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund — have names and parameters set by Google. The full list holds others too, notably select_item, remove_from_cart, add_to_wishlist, view_promotion and select_promotion. Renaming an event or changing the structure of its items parameter breaks nothing visibly, but leaves GA4’s standard ecommerce reports unable to recognise it.
Two parameters deserve particular care. transaction_id must be unique per order: it’s what lets GA4 deduplicate a purchase replayed when the confirmation page reloads. value and currency must match the amount actually charged, in the right currency: a value passed incorrectly (excluding tax instead of including it, a fixed currency on a multi-currency site) throws off every revenue figure measured, with no error showing up anywhere.
Related pages
-
Conversions aren’t coming through
A step-by-step diagnostic method for when an event fires but never appears in reports.
-
Duplicate statistics
The most common causes of duplicates, including purchase replayed on reload.
-
Checking an install without paid tools
GTM preview mode, Tag Assistant, the Network tab: how to check what’s actually being sent.
-
Meta pixel and Conversions API
The same reliability concern applies on Meta’s side, with an event ID to deduplicate.
-
Integrations & API
When tracking needs to draw on product or order data exposed through an API.
-
ChatGPT Ads conversion tracking
OpenAI pixel, Conversions API, oppref and consent: the same pixel-plus-server logic, applied to ChatGPT ads.
Describe your need in one minute
A few targeted questions so I can reply with an estimate rather than another questionnaire.