FIELD NOTES · WEBSITE HANDOVER

GA4 purchase QA: three events are not three sales

Synthetic teaching example for a website delivery brief. Not a client result, live account test or certification.

Choose the unit before reporting conversion

A new ecommerce site can emit a purchase event twice after a confirmation-page reload. Another event may contain an order ID that has no matching paid record in the supplied export. Neither problem can be resolved by calling every analytics row a sale. Agree the transaction identifier, currency, value and evidence window before accepting a revenue dashboard.

Supplied rowAmountWhat can be said
T1 purchase, first rowAUD120An analytics event exists
T1 purchase, repeated rowAUD120Duplicate transaction ID in this extract
T2 purchaseAUD90No supplied paid match
Backend paid T1AUD120One supplied paid transaction

Use the filled example

Download the finite Node checker and filled input. Run with Node 24 or newer; no account, API or network is used.

node checks.mjs ga4-purchase-reconciliation ga4-purchase-reconciliation.json

Expected output is rawEventRows 3, uniqueSuppliedTransactions 2, suppliedPaidTransactions 1, duplicateIds [DEMO-T1] and unmatched [DEMO-T2]. The fixture makes no claim about what GA4 accepted, deduplicated or attributed. It deliberately reports the evidence layers separately rather than summing all event values.

An acceptance procedure a merchant can commission

Ask the supplier for a permitted test order and a redacted event payload. Compare the transaction identifier in the analytics event with the backend order and payment result. Reload the confirmation screen in an authorised test environment, repeat delivery, and check whether values or currencies conflict under one ID. A conflicting repeated ID needs investigation, not a silent “keep first” rule.

Then agree treatment of refunds, cancellations, consent, delayed export and payment status changes. Use complete comparable windows; an unmatched ID means absent from this supplied dataset, not necessarily unpaid in the real account. Analytics events are not verified people, qualified enquiries or new external subscriptions.

This no-network join does not read GA4 or a payment system and does not measure attribution. It is a procurement evidence contract, not a replacement for accounting or a production ecommerce event implementation.

Primary facts and limits

Google Analytics ecommerce guide: Documents purchase event fields including transaction_id, value, currency and items.

Sources reviewed 15 October 2026. The supplied input and acceptance rules are original teaching design; check current platform versions and your actual delivery contract before implementation.

A purchase report is not an entitlement policy