How to check a GA4 purchase event: a QA checklist
The purchase event feeds the ecommerce reports of Google Analytics™ 4 and, often, the
conversions you use in Google Ads. A mistake here (a missing currency, a duplicate order, a value that counts
shipping twice) is expensive and hard to see in the reports. This checklist shows what to look for and where.
What a purchase needs
Google’s ecommerce documentation lists these parameters for purchase:
transaction_id: a unique ID for the order. Required.value: the monetary value of the event, as a number.currency: a three-letter ISO 4217 code such asUSDorEUR. Required when you sendvalue.items: the products bought. Required; each item must include anitem_idor anitem_name.priceandquantityare recommended; ifquantityis missing, GA4 uses 1.- Optional:
tax,shippingandcoupon, among others.
In GA4, value should be the sum of price × quantity of the items, without tax or shipping, which go in
tax and shipping. If Meta records the order total, compare equivalent amounts before
diagnosing a difference.
Where to see it in Chrome
- Open DevTools (F12), go to the Network tab and type
collectin the filter. - Place a test order. Look for a request to a
/g/collectpath withen=purchaseamong its parameters. With server-side tagging it may go to your own domain, and usually keeps that path. - Read the parameters:
ep.marks text parameters (ep.transaction_id),epn.numeric ones (epn.value,epn.shipping),cuis the currency andpr1,pr2… are the items, with fields such asid,nm,pr(price) andqt(quantity) separated by~:pr1=idSKU-1~nmT-shirt~pr59.9~qt1. - GA4 often sends several events in one POST request, one per line of the request body. Check the payload, not only the URL.
Tag Assistant helps you review which tags fire and their consent state. DebugView shows the events GA4 receives with debug mode on; consent and privacy controls can keep some of them from appearing.
Checklist
- The purchase is sent only once per order and destination; reloading the confirmation page doesn’t send it again.
transaction_idis present and different for every order.valueis a number consistent with the purchase, without thousands separators or currency symbols. It can be 0 for a free order (Tracklint’s template requires value > 0, but that is an editable rule of the plan).currencyis a valid three-letter code, the same one your store charges in.- Every item has an ID or a name, and
valueis the sum of price × quantity of the items. - No personal data in parameters or URLs: emails, names or phone numbers must not reach GA4.
- The request goes to the right measurement ID (
tid). - With a cookie banner, the purchase follows your consent setup (see the Consent Mode v2 guide).