Most webshop tracking I look at measures a lot and answers very little. There are dozens of events, three dashboards and nobody trusts the revenue number.
I start from one question instead: what actually sold, and what brought those sales in. Which products, which channels, which campaigns. If your tracking answers that reliably, most other decisions get easier.
Start from the question, not the tool
Before setting anything up, write down what you want to know every month. For most shops it comes down to a short list:
- Which products and categories bring in the most revenue.
- Which channels drive orders: organic search, Google Ads, Meta, email, direct.
- Which campaigns earn back what they cost.
- Where people drop off between viewing a product and buying it.
Everything you track should help answer one of those. If an event doesn't, it probably doesn't need to be there. Less tracking that is correct beats more tracking that nobody believes.
The GA4 ecommerce events that matter
GA4 has a set of recommended ecommerce events. You don't need all of them on day one, but four are the backbone:
view_itemwhen someone views a product page.add_to_cartwhen a product goes into the cart.begin_checkoutwhen checkout starts.purchasewhen the order is complete.
With those four you can see the basic funnel and where it leaks. view_item_list, view_cart, add_shipping_info and add_payment_info fill in the detail when you need it.
The event name is the easy part. What makes the data useful is what you send with it:
- items: the products, with at least an item ID or name, price and quantity. Add brand, category and variant if you want product reports that mean something.
- value: the total for that event, as a number.
- currency: always, as a three-letter code like EUR or GBP. Without it, GA4 can't process the value properly.
- transaction_id: on the purchase event, the order number from your shop.
Decide early whether value includes VAT and shipping, and keep it the same everywhere. A lot of "GA4 doesn't match the shop" problems come from one system counting tax and the other not.
Count each order once
Double purchases are one of the most common tracking errors I find. The thank you page fires the purchase event, the customer refreshes the page or opens the confirmation email link, and the order is counted again.
A few things help:
- Always send the real order number as
transaction_id. GA4 uses it to filter out duplicate purchases with the same ID. - Only fire the purchase event once per order, for example by checking on your side that it hasn't been sent already.
- Watch out for two setups running at the same time, like a Shopify app and a manual GTM tag both sending purchases.
Then the opposite problem. With payment methods like iDEAL, PayPal or Klarna, customers leave your site to pay. Some never come back to the thank you page, so the order happens but the browser never reports it. Server-side purchase tracking, or a platform integration that sends the order from the backend, closes most of that gap.
Consent mode basics
In the EU you need consent before setting analytics and advertising cookies. That means part of your visitors will say no, and your data will be incomplete. That's normal and fine, as long as you know it.
Google's consent mode lets your tags respect that choice. When someone declines, tags don't set cookies. Google Ads and GA4 can then estimate part of the missing conversions with modelling. Consent mode v2 also added signals for ad data and personalization, which Google requires for advertising to users in the EEA.
Practically:
- Use a proper consent banner that passes the choice to your tags.
- Test it. Decline everything, place a test order, and check what actually fires.
- Expect GA4 to show fewer orders than your shop. That gap is consent, ad blockers and browsers that limit tracking.
Check GA4 against your shop backend
Your shop backend is the source of truth for orders and revenue. GA4 is there to explain where they came from. So compare them regularly.
Take a full month and put three numbers next to each other: orders and revenue in the shop, and purchases and purchase revenue in GA4. A gap is expected. What you're looking for is whether it stays roughly the same month to month. If it suddenly jumps, something broke, often after a theme update, a new checkout app or a change in the consent banner.
Also check a few individual orders. Look up the order number in GA4 and see if the value, products and currency match.
Attribution: a useful story, not the truth
Once the data is right, the next question is which channel gets credit. Here it helps to be realistic.
GA4 uses data-driven attribution by default, spreading credit across the touchpoints it sees. Google Ads and Meta each report conversions by their own rules and time windows, and each will happily claim the same order. If you add up the conversions from all platforms, you'll usually end up with more orders than you actually had.
So I use each source for what it's good at. The shop backend for real revenue. GA4 to compare channels using the same rules. The ad platforms to optimize campaigns inside that platform. And now and then, a sanity check: if ad spend went up and total shop revenue didn't, the platform dashboard is not the whole story.
Feed the ad platforms good conversions
Ad platforms learn from the conversions you send them. Wrong or doubled purchases mean they optimize for the wrong thing.
- For Google Ads, either import the purchase key event from GA4 or use the Google Ads conversion tag, and pick one as the main conversion. Enhanced conversions can improve matching.
- For Meta, use the pixel together with the Conversions API, and send the same event ID from both so Meta can remove duplicates.
- Always send value and currency with purchase conversions, so you can bid and report on revenue, not just order counts.
A short setup checklist
- Write down the questions the tracking needs to answer.
- Set up
view_item,add_to_cart,begin_checkoutandpurchasewith items, value and currency. - Send the real order number as
transaction_id. - Decide whether value includes VAT and shipping, and keep it consistent.
- Make sure each order is counted once, and test refreshing the thank you page.
- Cover orders where customers pay off-site and don't return.
- Connect consent mode to your consent banner and test it with everything declined.
- Pick one main purchase conversion per ad platform, with value.
- Compare GA4 with your shop backend every month.
- Fix the tracking before drawing conclusions from it.
Where to start
If you're not sure your numbers are right, start with one month of shop orders next to GA4 purchases. That comparison tells you a lot in half an hour.
Tracking and analytics are part of what I do, usually together with ads and conversion work, and they're checked at every launch in my process. If you'd like help getting your numbers straight, discuss your project.
