[Google Analytics 4](/about/google-analytics-4) June 16, 2025

# GA4 ecommerce tracking: how to enable it and set it up

How to enable ecommerce in GA4: the recommended events, a purchase event example, where the data shows up and how to check it against your backend.

![](/images/65ca3e178e3953010c34d2c6_65b7dae17618c96637f02d9b_rafael-campoamor.avif)

**[Rafael Campoamor](/authors-guides/rafael-campoamor)** Digital Marketing Freelancer

4 min read · 1024 words

> **TL;DR** GA4 has no ecommerce switch to turn on. Ecommerce reports fill up when your site sends the recommended ecommerce events, from `view_item` to `purchase`, with an `items` array and the right parameters. Set them up through the dataLayer and GTM, or your platform's integration, check them in DebugView, and watch them after every release: most ecommerce data breaks quietly.

![Infographic presenting the GA4 E-Commerce Analytics Journey, including global reach and real-time data, with icons for search insights, communication channels, actionable reports, and achieving business goals.](/images/65d34f2cbb2af72adfc26073_Navigating-the-GA4-E-Commerce-Analytics-Journey.avif)

## How to enable ecommerce in Google Analytics 4

Universal Analytics had an "Enable Ecommerce" setting. GA4 does not. A GA4 property shows ecommerce data as soon as it receives ecommerce events with product data, so enabling ecommerce means implementing those events:

1.  **Create the property and a web data stream,** and install the Google tag, directly or through Google Tag Manager. The [GA4 setup guide](/guides/setting-up-ga4-step-by-step-beginners-guide) covers this step.
2.  **Choose how events reach GA4.** Shopify, WooCommerce and most ecommerce platforms have an integration that sends the standard events for you. A custom store pushes them to the dataLayer and sends them with GTM.
3.  **Push the ecommerce events to the dataLayer** at each step of the funnel, with an `items` array (see the example below).
4.  **Send them to GA4.** In GTM, a GA4 event tag per event, with the ecommerce option that reads the data from the dataLayer turned on.
5.  **Validate in DebugView** before publishing, then check the Monetization reports after 24 to 48 hours.

## The GA4 ecommerce events

Google's [ecommerce measurement guide](https://developers.google.com/analytics/devguides/collection/ga4/ecommerce) lists the recommended events. The ones most stores need:

| Funnel step | Event | What it carries |
| --- | --- | --- |
| Product list | `view_item_list`, `select_item` | The list and the products in it |
| Product page | `view_item` | The product viewed |
| Cart | `add_to_cart`, `remove_from_cart`, `view_cart` | The products and their quantity |
| Checkout | `begin_checkout`, `add_shipping_info`, `add_payment_info` | The cart, plus shipping tier and payment type |
| Order | `purchase` | `transaction_id`, `value`, `currency`, `tax`, `shipping` and the items |
| After the order | `refund` | The `transaction_id` of the order refunded |
| Promotions | `view_promotion`, `select_promotion` | The promotion and its creative |

Use the names exactly as Google writes them. A `Purchase` or an `order_complete` event is a custom event, and it never reaches the Monetization reports.

### A purchase event, step by step

The site pushes the order to the dataLayer on the confirmation page:

```js
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });  // clear the previous ecommerce object
window.dataLayer.push({
  event: "purchase",
  ecommerce: {
    transaction_id: "T-10482",
    value: 129.90,
    tax: 22.54,
    shipping: 4.95,
    currency: "EUR",
    items: [{
      item_id: "SKU-2231",
      item_name: "Trail running shoes",
      item_brand: "Example",
      item_category: "Footwear",
      price: 124.95,
      quantity: 1
    }]
  }
});
```

Three rules prevent most revenue errors:

-   **Always send `currency` with `value`.** Without it, GA4 cannot report the revenue.
-   **Send a unique `transaction_id`.** It is how GA4 tells one order from another, and it helps avoid counting a purchase twice when the confirmation page reloads.
-   **Send `item_id` or `item_name` for every item,** with the same IDs your product feed and your backend use, so product reports can be joined with them.

## Where ecommerce data shows up in GA4

Once the events arrive, the **Monetization** section of Reports fills in:

-   **Ecommerce purchases:** views, add-to-carts, purchases and item revenue per product.
-   **Purchase journey and checkout journey:** where shoppers drop off between product page, cart, checkout and purchase.
-   **Transactions:** each order with its ID and revenue, the report to compare with the backend.

For questions the standard reports do not answer, such as revenue by landing page for organic traffic, build an exploration: [GA4 custom reports](/guides/crafting-custom-reports-in-ga4-a-data-analysts-roadmap-to-seo-success) explains how.

## How to check that ecommerce tracking is right

![Step-by-step visual guide on setting up e-commerce tracking with GA4, detailing the establishment of a property, code integration, e-commerce tracking activation, data stream setup, and tracking validation.](/images/65d34f486297dee1228da6a1_Your-E-Commerce-Tracking-Setup-with-GA4.avif)

Before release, go through the funnel in GTM preview mode and open **DebugView** in GA4: each event should appear once, with its parameters and items. After release, compare GA4 with the source of truth for orders, your backend:

-   **Purchases and revenue** in the Transactions report against the orders in the backend for the same days. A gap of a few percent is normal (ad blockers, consent); a sudden change is not.
-   **Duplicate transactions:** the same `transaction_id` more than once.
-   **Revenue in the wrong currency** or with `value` sent as text.
-   **Events missing on one platform:** the app, a payment provider that redirects, a new checkout template.

The last check is the one a one-time setup misses. A release renames a dataLayer key, a checkout redesign drops the `purchase` push, a consent change blocks the tag on one market, and the reports keep rendering with less revenue in them. [Trackingplan](/landings/monitoring) watches the ecommerce events on real traffic, learns their normal volumes and properties, and alerts the team that owns them when a `purchase` loses its `currency`, its items or its volume. For the checks to run on every conversion, see [how to validate conversion tracking](/blog/conversion-tracking-validation).

## Using the data

![Comparative infographic showing revenue optimization for e-commerce before and after implementing GA4, with focus areas for improving traffic, conversion, browsing behavior, and reducing cart abandonment.](/images/65d34f62b24036f1c0935de6_Maximizing-Revenue-with-GA4-Optimization.avif)

With the events in place, the reports answer the questions stores ask most:

-   **Where the funnel leaks.** The checkout journey shows the step with the biggest drop; a drop that appears overnight is more often a tracking break than a change in shoppers.
-   **Which products sell and which only get viewed.** Item views against add-to-carts and purchases, per product and per list.
-   **Which channels bring revenue, not just sessions.** Revenue and purchases by session source and medium, with attribution settings agreed before anyone reads them. More in [customer journey analysis for ecommerce in GA4](/guides/customer-journey-analysis-ga4-ecommerce).
-   **What mobile shoppers do differently.** The same funnel split by device category.

## Frequently asked questions

### How do I enable ecommerce in Google Analytics 4?

There is no setting to turn on. Send the recommended ecommerce events, such as `view_item`, `add_to_cart`, `begin_checkout` and `purchase`, with an `items` array, and GA4 fills the Monetization reports. Platform integrations (Shopify, WooCommerce) or a dataLayer with Google Tag Manager are the usual ways.

### Why does GA4 show purchases but no revenue?

Usually because the `purchase` event has no `currency`, or `value` is sent as text. GA4 needs both a numeric `value` and a `currency` code to report revenue.

### Why don't GA4 transactions match my backend?

Some gap is normal: ad blockers, declined consent and payment redirects that never return to the site. A large or sudden gap points to a tracking problem, such as a missing `purchase` on one template, duplicated transactions, or a new checkout that stopped pushing the event.

On this page

1.  [*01*How to enable ecommerce in Google Analytics 4](#how-to-enable-ecommerce-in-google-analytics-4)
2.  [*02*The GA4 ecommerce events](#the-ga4-ecommerce-events)
3.  [*03*Where ecommerce data shows up in GA4](#where-ecommerce-data-shows-up-in-ga4)
4.  [*04*How to check that ecommerce tracking is right](#how-to-check-that-ecommerce-tracking-is-right)
5.  [*05*Using the data](#using-the-data)
6.  [*06*Frequently asked questions](#frequently-asked-questions)

**Stop babysitting tags**

Trackingplan audits your real user data around the clock and flags issues before they cost you.

[Start free trial →](https://app.trackingplan.com/signup)

![](/images/65ca3e178e3953010c34d2c6_65b7dae17618c96637f02d9b_rafael-campoamor.avif)

**Rafael Campoamor** Digital Marketing Freelancer

Digital Marketing Freelancer

Share Copy link [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fwww.trackingplan.com%2Fguides%2Fga4-ecommerce-guide) [X](https://twitter.com/intent/tweet?url=https%3A%2F%2Fwww.trackingplan.com%2Fguides%2Fga4-ecommerce-guide&text=GA4%20ecommerce%20tracking%3A%20how%20to%20enable%20it%20and%20set%20it%20up)

Read next

[All Guides →](/guides)

-   [
    
    6 minGoogle Analytics 4October 26, 2026
    
    ### Google Search Console vs Google Analytics: why they differ
    
    Compare Google Search Console clicks with GA4 organic sessions: what each tool counts, the normal reasons they differ, and when the gap means broken tracking.
    
    by **David Pombar**](/guides/google-search-console-vs-google-analytics)
-   [
    
    6 minGoogle Analytics 4October 26, 2026
    
    ### How to track ChatGPT and AI traffic in GA4
    
    Track visits from ChatGPT, Gemini, Perplexity and other AI assistants in GA4: the AI Assistant channel, what it misses, and the AI traffic that lands in Direct.
    
    by **David Pombar**](/guides/track-chatgpt-ai-traffic-ga4)
-   [
    
    14 minGoogle Analytics 4October 15, 2026
    
    ### How to find broken GA4 events and missing properties
    
    Trace one GA4 event from the business action to the report to find where it breaks: the dataLayer, GTM, the hit, DebugView, or reporting.
    
    by **Mariona Martí**](/guides/find-broken-ga4-events-missing-properties)

Trackingplan

## See everything. Miss nothing.

Your implementations audited around the clock with real-time, real-user data. Real-time alerts about errors or changes in your data, campaigns, pixels, privacy and consent. Let AI flag issues before they cost you.

[Start free trial →](https://app.trackingplan.com/signup) [Book a demo](/demo)
