GA4 Purchase Event Parameters: What's Required, What's Recommended

Key Takeaway

The GA4 purchase event requires transaction_id, value, currency, and an items array with item_id, item_name, and price. Missing any of these parameters means revenue, product performance, or deduplication will fail.
Intermediate

The GA4 purchase event has a defined set of parameters. Some are required for revenue to appear in reports. Some are strongly recommended for complete ecommerce reporting. Many others are optional but valuable for product-level analysis. Knowing which is which prevents the most common implementation errors: events that fire successfully but report zero revenue, or events with revenue but no product detail.

The truly required parameters

GA4 will record a purchase event without any parameters. But for revenue to appear in monetisation reports and be attributed to the purchase, two parameters are mandatory:

  • currency: A valid ISO 4217 three-letter currency code (GBP, USD, EUR, etc.). Not the currency symbol. Not a number. Exactly three uppercase letters matching the code list. If this is absent or invalid, GA4 records the event but shows zero revenue. See our piece onresolving GA4 currency mismatchesfor the most common formatting mistakes.
  • value: The monetary value of the transaction as a number. Not a string. Not a formatted string with a comma separator. The number 49.99, not the string '49.99' or '$49.99'. If value is missing or is zero, revenue is reported as zero.

These two parameters are the most frequently broken. Use DebugView with a test purchase to confirm both are present with correct formats. If you have already confirmed the event fires but revenue is still zero, our diagnostic onfixing missing revenue in GA4 purchase eventswalks through every other root cause.

The strongly recommended parameters

  • transaction_id: A unique string identifying this transaction, typically your order ID or order number. This is required for GA4's deduplication mechanism to work correctly. If you combine client-side and server-side purchase tracking via the Measurement Protocol, a matching transaction_id in both events allows deduplication. Our breakdown ofduplicate transactions in GA4covers the dedup edge cases when IDs go missing or differ in format.
  • items: An array of product objects representing what was purchased. Without this array, your Ecommerce Purchases report shows transaction-level data but no product-level data. You cannot see which products were purchased, their revenue contribution, or performance by product category.

Each object in the items array should include at minimum:

  • item_id: a unique product identifier, typically the SKU or product ID
  • item_name: the product name as it should appear in reports
  • price: the unit price of the product (not total line price)
  • quantity: the number of units purchased

Want to check your purchase event parameters automatically?

Required
Recommended
transaction_id
Not required for event to fire, but required for revenue to appear in reports
Essential for deduplication and Measurement Protocol pairing
currency
Required, missing = zero revenue
Already included in required set
value
Required, missing = zero revenue
Already included in required set
items array
Not required for event to fire
Required for any product-level reporting
coupon
Not required
Recommended for discount code analysis
shipping
Not required
Recommended to separate shipping from product revenue
tax
Not required
Recommended, but only if value excludes tax
affiliation
Not required
Recommended for multi-brand or marketplace setups

Item-level parameters worth including

Within each item object, additional parameters provide richer product analysis:

  • item_brand: the brand of the product
  • item_category through item_category5: product category hierarchy, allowing analysis by category tree
  • item_variant: the specific variant purchased (size, colour)
  • discount: the discount amount applied to this specific item
  • item_list_name: the list from which the product was added to cart (e.g., search results, homepage recommendations, category page)

The item_list_name and item_list_id parameters link view_item_list events to the eventual purchase, enabling add-to-cart rate and purchase rate calculations at the product list level. These require consistent population across all ecommerce events in the funnel, not just the purchase event. Our wider walkthrough ofGA4 ecommerce tracking checksshows how each event in that chain should be validated.

Common implementation errors

  • value includes tax and shipping: Compare your GA4 total revenue to your net revenue excluding tax and shipping in your store backend. If GA4 revenue is consistently higher by a percentage matching your average tax rate, value is being sent with tax included.
  • Empty items array: An items array that is present but contains no objects (items: []) causes all product-level reports to show zero items. The array must contain at least one product object per purchase.
  • price as total line price instead of unit price: If a customer buys 3 units at £10 each, price should be 10 and quantity should be 3. If price is sent as 30 (the total), GA4 will show inflated per-unit prices and incorrect revenue when quantity is taken into account.

Purchase event parameters: audit action plan

Validate

  • Open GA4 DebugView and complete a test purchase, confirm currency, value, and transaction_id are all present with correct types
  • Check that value is a number (not a string) and currency is a 3-letter ISO code in uppercase
  • Verify the items array contains at least one object with item_id, item_name, price, and quantity
  • Run a BigQuery query on the events table to find purchase events with null transaction_id: SELECT COUNT(*) FROM `your_project.analytics_PROPERTY_ID.events_*` WHERE event_name = 'purchase' AND (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'transaction_id') IS NULL

Fix

  • Add currency and value to your data layer push on the order confirmation page if missing
  • Ensure transaction_id is populated from the order ID and not left as an empty string
  • Populate the items array from your order data, do not send an empty array
  • Set price to unit price, not total line price, divide line total by quantity if needed
  • If value includes tax and shipping, refactor to send net revenue in value and add tax and shipping as separate parameters

Watch for

  • Revenue correct in GA4 but items array missing, transaction reports look fine but product-level reports show no data
  • Duplicate purchase events for the same transaction_id, indicates both client-side and server-side events firing without deduplication
  • Revenue inflated by a consistent percentage, value is including tax; cross-check against your backend net revenue figures

Purchase event parameters checklist

  • currency is a valid ISO 4217 three-letter code sent as a string (e.g., GBP not £)
  • value is a numeric amount representing net transaction revenue (excluding tax and shipping)
  • transaction_id is unique per order and consistent with server-side events for deduplication
  • items array is present and populated with at least item_id, item_name, price, and quantity
  • price within items is the unit price, not the total line price
  • tax and shipping sent as separate parameters, not included in value
  • DebugView confirms all parameters on a test purchase before relying on production data

Catch purchase event parameter errors before they corrupt your reports

GA4 Audits validates every required and recommended purchase parameter automatically across your live GA4 property.

Audit findings should be reviewed by a qualified analyst before they are used for major reporting, media, or implementation decisions. Review your findings

GA4 Audits Team

GA4 Audits Team

Analytics Engineering

Specialising in GA4 architecture, consent mode implementation, and multi-layer audit frameworks.

Share