AuditTag

GA4 purchase event checker

Paste your purchase event and see what Google's own reference says is wrong with it, from a missing transaction_id to a value sent as text, no currency or an empty items list. Then copy a corrected version.

Runs in your browser. Nothing you paste is sent to us or anyone else. Tag Manager and Liquid variables are fine, they are reported as code we cannot run rather than guessed at.

Where to find your purchase event

What it checks, and where each rule comes from

Every rule is Google's, from its purchase event reference unless the row says otherwise. Nothing here is our own preference dressed up as a requirement.

FieldWhat Google says
eventpurchase is the recommended event. Event names are case sensitive, so Purchase is a different event.
transaction_idRequired, a string. It is how GA4 avoids counting one order twice. An empty string makes GA4 deduplicate every purchase that has it, on web streams.
valueRequired, a number. The sum of price times quantity for the items, without shipping or tax.
currencyRequired whenever value is set. A 3-letter ISO 4217 code, like GBP.
itemsRequired. Each item needs an item_id or an item_name. price and quantity are numbers, and quantity counts as 1 when left out.
shipping, taxOptional, numbers.
ecommerceThrough Tag Manager, Google's examples put the order fields inside an ecommerce object, and clear the previous one first with dataLayer.push({ ecommerce: null }).

What it tells you

  • Whether the event you pasted matches Google's purchase reference
  • Values sent as text, missing fields, empty IDs and wrong currency codes
  • A value that includes shipping and tax
  • The Universal Analytics shape, converted to GA4's

What it cannot tell you

Whether the event fires, whether GA4 received it, whether your Tag Manager tag is set to send ecommerce data, or what a variable comes out as on a real order. For that, place a test order with DebugView open. If the purchase is not arriving at all, start here.

Questions people ask

What does a correct GA4 purchase event look like?

An event named purchase, all lowercase, with a unique transaction_id, value as a number, a 3-letter currency code such as GBP, and an items list in which every item has an item_id or an item_name. Through Tag Manager these sit inside an ecommerce object in the dataLayer push. Google sets value to the sum of price times quantity for the items, without shipping or tax. Press "Try a broken example" above and the corrected version shows the shape.

Should the GA4 purchase value include shipping and tax?

No. Google's purchase event reference says to set value to the sum of price times quantity for all items, and not to include shipping or tax. Those have their own shipping and tax parameters.

What happens if the transaction_id is empty?

Google Analytics deduplicates every purchase whose transaction ID is an empty string, so all of them count as one purchase and GA4 undercounts. Send the real order number, different for every order. More on this in duplicate GA4 purchase events.

Does this checker tell me whether GA4 received my purchase?

No. It checks the event you paste against Google's reference. Whether it fires, and whether GA4 received it, needs a test order with DebugView open.

Is what I paste sent anywhere?

No. The checker runs in your browser. Nothing you paste is sent to AuditTag or anyone else.

Related guides