Good ecommerce tracking means GA4 records one purchase event per real order, with a unique transaction_id, the right value and currency, and an items array, and that the same order reaches Google Ads and Meta once. You get there with a dataLayer the shop fills on every key step, GTM tags built from it, a test against the order export, and monitoring that alerts you when purchases stop or drift. Tracking Whisper audits the setup, builds the tags in its own GTM workspace, writes the dataLayer guide for your developer and watches the numbers after launch.
Ecommerce tracking decides which campaigns get budget, so it has to agree with the orders in your shop. In practice it often does not: GA4 counts the same purchase twice, revenue includes shipping one month and not the next, and a theme update quietly removes the add_to_cart event. This page explains what a sound ecommerce tracking setup looks like in GA4 and Google Tag Manager, how to test it, and what Tracking Whisper does at each step.
What ecommerce tracking has to get right
Most problems come down to the purchase event. Google's ecommerce guide lists four parameters for it: currency, value, transaction_id and items, where every item needs at least an item_id or an item_name. Coupon, shipping and tax are optional. Each one carries a decision you should make once and write down:
- transaction_id is the order number from your shop. GA4 uses it to drop duplicate purchases from the same user, and Google notes this deduplication works for web streams. It is also what links a
refundevent to the original order. - value must follow one rule. Decide whether revenue is gross or net of tax and shipping, and send shipping and tax in their own parameters.
- currency is a three-letter ISO 4217 code. A shop that sells in several currencies sends the currency of each order, not the site default.
- items carries product ID, name, price and quantity. Without it, item reports in GA4 stay empty.
Before the purchase, the funnel events tell you where people drop out: view_item, add_to_cart, begin_checkout, add_shipping_info and add_payment_info. They are worth sending, but a shop with a wrong purchase event and a perfect funnel still reports the wrong revenue. Fix the purchase first.
How a sound setup is built
A setup that holds up over time has four layers, and each one has a single owner.
- A measurement plan. A short document that lists each event, when it fires, its parameters and the source of each value. It settles the gross or net question before anyone writes code.
- A dataLayer filled by the shop. The site pushes an
ecommerceobject at each step, with the order data taken from the backend rather than scraped from the page. Clearing the previous ecommerce object before each push stops item data leaking from one event into the next. See our dataLayer glossary entry for the basics. - Tags in Google Tag Manager. GA4 event tags read from the dataLayer; Google Ads and Meta tags fire on the same purchase push with the same order ID, so every platform counts the same order.
- Consent. Tags respect the visitor's choice through Consent Mode, with defaults set before any tag fires.
Hosted shop platforms add their own constraints. On Shopify, for example, GTM can run as a custom pixel that subscribes to events such as checkout_completed, but Shopify's help notes that everything GTM loads there runs inside its sandbox with the same limits as the pixel. Plan the purchase tag around what that sandbox receives, and test it with the tools Shopify provides.
How to test purchase tracking in GA4
Testing has two parts: one before you publish, one after.
Before publishing, use GTM's Preview mode, which loads your site as if the draft container were live and connects it to Tag Assistant so you can see which tags fired and in which order. Place a real test order and check that the purchase tag fired once, that the transaction ID matches the order, and that value and currency are what the plan says.
After publishing, compare GA4 with the shop. Take one full week and put three numbers side by side: orders in the shop export, transactions in GA4, revenue in both. A gap of a few percent is normal, because of consent choices, blockers and people who close the tab before the confirmation page loads. More transactions in GA4 than orders in the shop is never normal; it points to duplicates. We list twelve common causes in GA4 ecommerce tracking mistakes.
| Symptom | Likely cause | Where to look |
|---|---|---|
| More GA4 transactions than orders | Purchase fires on reload or twice per page | Confirmation page, tag triggers |
| Revenue too high | Shipping or tax inside value, or line totals summed wrongly | dataLayer push on the confirmation page |
| Empty item reports | Missing or malformed items array | Purchase payload in Tag Assistant |
| Revenue in the wrong currency | Site default sent instead of order currency | currency parameter |
| Sudden drop to zero | Theme or checkout change removed the push | Monitoring alert, container versions |
What Tracking Whisper does for an online shop
Tracking Whisper is an AI agent that works in Google Tag Manager, GA4, Google Ads and Meta. For ecommerce tracking it covers the whole sequence above.
- Audit. It reviews your GTM container with a fixed set of checks: duplicate purchase tags, missing transaction IDs, tags without consent settings, paused and orphaned tags. The GTM audit page shows what the report covers.
- Plan and dataLayer guide. It writes the measurement plan and a dataLayer guide your developer can implement. It does not edit your theme or store code, and it does not connect to Shopify, WooCommerce or Magento accounts; it works through GTM, GA4 and the site itself.
- Build. It creates the tags, triggers and variables in its own GTM workspace, and publishes a version only after a person approves it. See tracking setup.
- Browser checks. It loads key pages in a real browser and checks the dataLayer, the hits sent to GA4 and the consent state.
- Monitoring. After launch it watches container versions, key pages and GA4 numbers, and alerts you when purchases stop or leave their usual range. See monitoring.
- Analysis. It answers questions and writes reports across GA4, Google Ads, Search Console and Meta, for example revenue by channel compared with the previous month.
You choose the access level per client: Read, Read & write, or Publish. With Read access it can audit and report but changes nothing.
Ecommerce analytics after the tracking is right
Once purchases match orders, the useful questions get easier to answer: which channels bring first orders rather than repeat ones, which products are often viewed and rarely added to the cart, and how revenue in GA4 compares with what Google Ads and Meta claim. Those platforms will still disagree, because each counts conversions under its own rules, but the gap becomes something you can explain rather than a reason to distrust all three.
Pricing is per client a month, with Tracking and Analytics plans from €29 and a free plan for one client with read-only Tag Manager access. Details are on the pricing page.
Next step
Connect your Google Tag Manager container on the free plan and run an audit to see where your ecommerce tracking stands, then move to a Tracking plan when you want Tracking Whisper to build the fixes.
Frequently asked questions
Which parameters does the GA4 purchase event need?
Google's ecommerce guide lists currency, value, transaction_id and items for the purchase event, and each item needs at least an item_id or an item_name. Coupon, shipping and tax are optional. Without a transaction_id GA4 cannot remove duplicate purchases or match refunds to an order.
Why does GA4 show more revenue than my shop?
The usual causes are a purchase event that fires again when the confirmation page is reloaded, a value that includes shipping or tax when your shop reports net revenue, and test or refunded orders that were never removed. Compare transaction counts and revenue for one week against the order export to see which one applies.
Does Tracking Whisper connect to Shopify, WooCommerce or Magento?
No. It does not connect to the store platform's account. It works through Google Tag Manager, GA4 and the site itself, checks key pages in a real browser and, where the store's code or theme must change, writes a dataLayer guide for your developer.
Can I track a Shopify checkout with Google Tag Manager?
Shopify lets you load GTM as a custom pixel that subscribes to events such as checkout_completed. Shopify's help notes that tags loaded this way run inside its sandbox with the same limits as any custom pixel, so plan the purchase tag around the events the pixel receives.
How do I know if purchase tracking breaks after launch?
Set up monitoring on the purchase event. Tracking Whisper's monitoring watches container versions, key pages and GA4 numbers, and alerts you when purchases stop or leave their usual range, so a broken release shows up in hours rather than at month end.
Sources
Last updated by Dimitris.