Skip to main content
GA4 ecommerce eventsReference

GA4 ecommerce event reference

GA4's ecommerce events form a defined funnel — view_item, add_to_cart, begin_checkout, add_payment_info, purchase — and each carries an items array alongside event-level parameters. The one that decides everything downstream is purchase, which needs transaction_id, value, currency and items to be usable: without transaction_id GA4 cannot deduplicate a refreshed confirmation page, and without currency it assumes your property default and silently misreports multi-currency revenue.

Free30 minutesNo obligation

GA4 ecommerce events · what breaks

Where teams get this wrong — GA4 ecommerce events

  1. 01

    Omitting transaction_id on purchase

    GA4 deduplicates on it. Without it, a refreshed confirmation page is a second purchase.

  2. 02

    Sending value without currency

    GA4 falls back to the property default. On a multi-currency store that quietly mixes amounts.

  3. 03

    Building a custom event taxonomy

    GA4's reports are built around the recommended event names. Custom names lose the built-in reporting entirely.

GA4 ecommerce events · the fix

What a correct implementation looks like — GA4 ecommerce events

  • Recommended event names used exactly

    Lowercase snake_case, matching GA4's own list, so the standard reports work.

  • transaction_id on every purchase

    The order ID from your own system, not a generated value.

  • Currency sent per transaction

    From the order record, not a site-wide constant.

  • An items array on every ecommerce event

    Consistent item_id across the funnel so paths can be followed.

GA4 ecommerce events · architecture

The events, and what each one has to carry

The funnel in order. The parameters listed are the ones whose absence causes a known failure — not an exhaustive list of everything GA4 accepts.

  1. 1

    view_item

    Fired on a product page, with an items array. Feeds product performance reports and remarketing audiences.

  2. 2

    add_to_cart / remove_from_cart

    With items and quantity. The first genuine intent signal in the funnel.

  3. 3

    begin_checkout

    With items and value. Where checkout drop-off analysis starts.

  4. 4

    add_payment_info / add_shipping_info

    Optional but valuable — they split a single checkout step into stages you can actually diagnose.

  5. 5

    purchase

    transaction_id, value, currency and items. The one that must be right. transaction_id is what deduplicates it.

  6. 6

    refund

    With the same transaction_id. Send it or reported revenue only ever increases.

GA4 ecommerce events · diagnose

Common mistakes and how to validate each — GA4 ecommerce events

Ordered by how often we find them. Each one has a specific check rather than a general instruction to be careful.

  1. 01

    No transaction_id

    Check a live purchase payload for the field. A refreshed confirmation page proves the consequence in seconds.

  2. 02

    Currency hard-coded

    Place a test order in a second currency and read the payload. This is the most common multi-currency fault.

  3. 03

    Inconsistent item_id between funnel steps

    Compare view_item and purchase payloads for the same product. They should carry the same identifier.

  4. 04

    Value includes tax on one event and not another

    Compare begin_checkout and purchase for the same order. Pick a convention and apply it to both.

  5. 05

    refund never implemented

    Issue a real refund and check whether anything arrives. Usually nothing does.

GA4 ecommerce events · prove

How to prove your implementation is right — GA4 ecommerce events

Against your own records and a live payload, not against a preview screen.

Source of truth

your store's order records, matched on transaction_id

  • A live purchase payload captured and read field by field.
  • transaction_id matching your store's order ID exactly.
  • Currency correct on an order placed in a second currency.
  • A real refund confirmed arriving with the same transaction_id.
  • Checked on a live conversion, not in preview mode.
  • Reconciled over a fully closed window, matched per record.
  • Re-checked 30 days later.

GA4 ecommerce events · free audit

What we check in the free audit

  • No transaction_id
  • Currency hard-coded
  • Inconsistent item_id between funnel steps
  • Value includes tax on one event and not another
  • refund never implemented

Checked against

your store's order records, matched on transaction_id

Get my free conversion tracking audit

Free30 minutesNo obligation

GA4 ecommerce events · when not to buy

What this reference deliberately leaves out — GA4 ecommerce events

Stated openly, because a reference that's silent about its own gaps is the dangerous kind.

  • This isn't every parameter GA4 accepts. It's the ones whose absence causes a failure we've actually diagnosed on client accounts.
  • Item-scoped parameters beyond item_id, item_name, price and quantity are omitted deliberately — they're useful and their absence doesn't break anything.
  • GA4's non-ecommerce recommended events are a separate list and aren't covered here.
  • Vendor documentation is the authority, not this page. Where the two disagree, the vendor is right and we'd like to know so we can correct it.
  • Parameter names and behaviour change. Anything here is accurate as we last verified it; verify against the current documentation before you rely on it for a build.

GA4 ecommerce events · what we deliver

The checklist — GA4 ecommerce events

  • purchase carries transaction_id, value, currency and items

    All four. Any missing one causes a specific, known failure.

  • item_id is consistent across the funnel

    The same identifier from view_item through to purchase.

  • value excludes or includes tax and shipping consistently

    Either is defensible. Inconsistency between events isn't.

  • refund is implemented

    Almost never is, which is why reported revenue only climbs.

  • Event names match GA4's recommended list

    Exact spelling and case.

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

Repairs and verifies your existing browser-side setup against this reference, on a live conversion.

  • Implementation checked against the spec
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Have mine checked

1st-party server-side

Recommended

$800One-time fee · most popular

Money events sent from your own records through a first-party container on your subdomain, built to this specification.

  • First-party server container on your own subdomain
  • Events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Have it built properly

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, documented to this standard.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring so the next break surfaces in days
Get the full stack

FAQ

GA4 ecommerce events questions, answered

GA4 can't deduplicate. A customer refreshing the confirmation page produces a second purchase, and so does a bookmarked thank-you page opened later.

Free · 30 min

Have your GA4 ecommerce events checked

Free30 minutesNo obligation