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 row | Amount | What can be said |
|---|---|---|
| T1 purchase, first row | AUD120 | An analytics event exists |
| T1 purchase, repeated row | AUD120 | Duplicate transaction ID in this extract |
| T2 purchase | AUD90 | No supplied paid match |
| Backend paid T1 | AUD120 | One 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.jsonExpected 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.