Which four events are essential, how to fill the parameters, why transaction_id must be the order number, and how to reconcile the setup with your store admin.
Without e-commerce tracking in place in GA4, there is no meaningful conversation about conversion rate. This article covers which events to send and in what order, the required parameters, the transaction_id logic that prevents duplicate orders, and how to validate the setup.
Most stores have GA4 installed but their e-commerce events are incomplete. The result: you know your visitor count but not where revenue is lost. Correct tracking turns "let's improve conversion" into an actionable finding like "we lose 40% between basket and checkout".
The events and their order
| Event | When it fires | Priority |
|---|---|---|
view_item_list | A category or list page is viewed | Medium |
view_item | A product detail page opens | Essential |
add_to_cart | An item is added to the basket | Essential |
remove_from_cart | An item is removed | Low |
begin_checkout | The checkout step starts | Essential |
add_payment_info | Payment details are entered | Medium |
purchase | The order completes | Essential |
If setup time is limited the priority is clear: view_item, add_to_cart, begin_checkout and purchase. Those four are enough to build the purchase journey funnel. The rest enrich it but you can decide without them.
Parameters: don't send empty events
Sending the event is not enough; the product data inside has to be filled correctly. Every e-commerce event carries an items array:
item_id— the product's unique code (SKU). The key to matching across channels.item_name— product name.price— unit price.quantity— units.item_category,item_brand,item_variant— for segmented analysis.
At event level you need currency and value. Without currency, GA4 cannot calculate revenue reports correctly — the most commonly omitted field.
What value should include
Decide and stay consistent: does value include shipping and tax? The general approach is to send the product amount and pass shipping and tax as separate parameters (shipping, tax). Whichever you choose, manage the gap between your accounting report and GA4 knowingly; otherwise you will have a "the numbers don't match" argument every month.
transaction_id: the field that prevents duplicate orders
transaction_idmust carry a unique value per order. GA4 will not count a secondpurchaseevent arriving with the sametransaction_id; with a different ID it records two separate orders.
In practice: if the customer refreshes the thank-you page or reopens the tab, the order is not double-counted as long as the correct transaction_id is sent. But if a random value is generated instead of the order number, every refresh is recorded as a new sale and your revenue report reads above reality.
The correct source is always the order number — not a timestamp, session ID or randomly generated value.
The Google Tag Manager setup flow
- Push the event into the dataLayer. On the site or theme side, at the right moment with the right data. This step is developer work and the genuinely hard part.
- Create a custom event trigger in GTM. The event name must match the dataLayer exactly — a trigger listening for
add_to_cartwill not catch a site sendingaddToCart. - Attach the GA4 event tag. Pass product data through as dataLayer variables.
- Repeat for every event. view_item, add_to_cart, begin_checkout and purchase are each set up separately.
Validation: never assume it works
- DebugView. Place a test order and watch the events arrive in order with their parameters.
- Realtime report. Confirm events actually reach GA4.
- Reconciliation. Compare a week of GA4 order count and revenue against the real figures in your store admin. A gap above 5% means the setup has a problem.
Reconciliation is the most skipped and most useful step. The gap usually comes from one of three causes: duplicate purchase events, missing currency, or sessions not measured because of consent management.
Reading the purchase journey report
- Which step loses the most? The step with the largest drop is your first intervention point.
- Is there a device split? Break the report into mobile and desktop; in most stores the mobile funnel performs markedly worse. We cover closing that gap in our conversion rate article.
Common mistakes
- Using something other than the order number as transaction_id. The revenue report inflates.
- Not sending currency. Revenue reports are miscalculated.
- Misspelling event names.
addToCartandadd_to_cartare different events to GA4; without the standard names the built-in reports do not work. - Never processing refunds. Returned orders stay in revenue.
- Going live without validating. Wrong data is more dangerous than no data — because decisions get made on it.
Conclusion
GA4 e-commerce tracking comes down to sending four events with the right parameters. The hard part is not the setup but the discipline of validation and reconciliation. Once a week of GA4 data matches your store admin, you are ready to start conversion work.
For how to use the measurement, see increasing conversion rate and reducing cart abandonment.
At Commerslab we implement GA4 and GTM setups including product data and reconciliation checks. See our e-commerce consulting service or request a tracking audit.