GA4 Ecommerce Tracking: Reconcile CRM Before Scaling Ads in Australia

GA4 Ecommerce Tracking: Reconcile CRM Before Scaling Ads in Australia

Aligned data planes leading to measured campaign platforms

Send the full set of recommended ecommerce events to GA4, and make sure the purchase event carries a unique, dynamic transaction_id along with value, currency and an items array. Use one tagging method per page, then check every event in DebugView before you trust a single report. If the test order doesn’t show up there, nothing downstream can be trusted either.


TL;DR:

  • GA4 does not send ecommerce events automatically, so instrument the recommended funnel events separately; enhanced measurement captures interactions, but not product views or purchases.
  • Use Google Tag Manager for stores that change often, gtag.js for stable themes, or server side tracking when ad blockers threaten confirmed orders.
  • Send each purchase a unique, dynamic transaction_id, value equal to item prices times quantities, an ISO 4217 currency code, and an items array.
  • Validate test orders in DebugView, including every item and parameter; standard reports may take 24 to 48 hours to populate after events arrive.
  • Compare orders and revenue with CRM records, and import purchase only as a primary Google Ads conversion so bidding does not mistake carts for sales.

Senior Ad Managers
senioradmanagers.com
Trust Your Ecommerce Ad Data
Start with a Google Ads audit that checks tracking and measures campaigns against closed revenue in your CRM, not just platform reports.
Get the $99 Google Ads audit

Table of Contents

Which GA4 ecommerce events do you need to send?

GA4 doesn’t track your shop’s funnel on its own. Google’s measurement documentation says these events must be implemented and are not sent automatically. The core set is:

  • view_item: a shopper views a product page.
  • select_item: a shopper clicks a product from a list.
  • add_to_cart: an item goes into the cart.
  • begin_checkout: the shopper starts checkout.
  • add_shipping_info: shipping details are entered.
  • add_payment_info: payment details are entered.
  • purchase: the order completes.
  • refund: an order is returned or cancelled.

For purchase events, send parameters such as transaction_id, value and currency, along with an items array containing product details. Check Google’s recommended events reference for the required and optional parameters for each event. Google’s recommended events reference lists the required and optional parameters per event, and item-level fields take priority over event-level ones when both exist.

Skip a parameter and the report silently stays empty. A shop that sends purchase without an items array will show revenue but no product performance, which is the first thing you need when deciding where ad budget goes.

Should you use gtag.js, Google Tag Manager or server-side tracking?

All three can deliver the same events. The right pick depends on how much your store changes and how much revenue you can’t afford to lose.

  • gtag.js suits simple sites with a small, stable theme where a developer can hard-wire the events.
  • Google Tag Manager is usually the better home for ecommerce. You can change triggers and parameters without a code release, and you can test in preview mode.
  • Server-side or Measurement Protocol adds reliability. Google’s purchase setup tutorial confirms a purchase can fire client-side or via Measurement Protocol, which lets you send confirmed orders from your backend and fill gaps left by ad blockers and browser restrictions.

The core rule: one primary tagging method per page. If gtag.js and GTM both send purchase, you get double counting that looks like a good week until you compare it with your orders.

Server-side needs a developer, because the order ID has to be mapped dynamically from your platform into transaction_id. If you’re weighing it up, our server-side tracking setup page explains when server-side GTM is worth the effort.

Pro Tip: Pick the method before you write a single tag, and write it down. Most duplicate purchase problems we see start with someone adding a second method “just to be safe”.

How do you build the purchase event and the items array?

Place the purchase event on the order confirmation page, or trigger it from the purchase button. Google’s purchase event guide covers both options. The event needs these pieces:

  • transaction_id: the real order number, unique per order.
  • value: the sum of price multiplied by quantity for the items, which Google recommends without shipping and tax.
  • currency: an ISO 4217 code, such as AUD.
  • items: one object per product with item_id, item_name, item_brand, item_category, price and quantity.

For example, if a customer buys several products, set the value to the sum of their prices multiplied by their quantities, and include an object for each product in the items array. Keep that arithmetic consistent with what your platform reports, or reconciliation becomes a guessing game.

DebugView shows the event straight away. Standard reports take longer: Google notes they populate in roughly 24 to 48 hours, so don’t panic when your test order is missing from the main reports on day one.

How do you validate GA4 ecommerce events before going live?

Google’s validation guide recommends DebugView during setup so you can confirm event-level and item-level parameters before relying on live reports.

Google recommends using DebugView to validate ecommerce events in real time, confirming parameters such as tax, shipping and product IDs arrive correctly before you trust live reports. Checking first is cheaper than correcting weeks of bad data.

Work through it in this order:

  1. Turn on debug_mode, or use GTM preview, and have a developer place a test order.
  2. Open DebugView and click the purchase event. Check transaction_id, value and currency in the Parameters tab.
  3. Expand the items array and confirm every product, price and quantity is there.
  4. Register any custom parameters as custom dimensions or metrics in GA4.
  5. Monitor the standard reports over the next 24 to 48 hours.

Check that transaction_id is genuinely different on a second test order. A static value here is the single most expensive mistake in the setup.

What causes duplicate or missing ecommerce data?

GA4 deduplicates purchases on transaction_id. Google’s guidance on minimising duplicates warns that sending the same ID for different orders, or an empty ID, causes deduplication problems and data loss. That cuts both ways: reuse an ID and real orders vanish, omit it and you lose deduplication entirely.

The usual culprits:

  • Hard-coded or empty transaction_id. Map your platform’s order number dynamically, every time.
  • Page refreshes and back-button visits. Practitioners in Google’s community threads point to misconfigured GTM triggers, and setting the purchase tag to “once per page” in advanced settings is a common fix.
  • Two tag systems. gtag.js and GTM both sending purchase will double count.
  • Syntax errors. A missing comma or a typo in an event name can silently drop everything after it.

If you fire purchase both client-side and through Measurement Protocol with the same transaction_id, GA4 can deduplicate. Implementers in one community thread report trouble finding both instances in BigQuery exports, so understand that behaviour before you rely on it.

Pro Tip: Compare GA4 purchase counts against your platform’s order count for a single day. A gap of even a few orders tells you more than any dashboard.

What does Australian privacy law mean for GA4 and tracking pixels?

The OAIC’s guidance on tracking pixels says the Privacy Act doesn’t prohibit them, but organisations must do due diligence, limit the personal information pixels transmit, be transparent in privacy notices and provide opt-outs for targeted advertising where the Australian Privacy Principles require it. Practical steps:

  • Never send personal information such as names, emails or phone numbers in event parameters.
  • Limit pixels to the pages that need them, rather than loading everything everywhere.
  • Update your privacy policy so it describes the pixels you run, why, and where data goes.
  • Review pixels regularly and document the purpose and retention period of each.
  • Offer a clear opt-out where tracking supports direct marketing.

The OAIC’s APP 3 guidelines add that automated collection tools need careful consideration, with data minimisation and monitoring of what’s actually collected. This isn’t legal advice, so check your obligations with a qualified adviser.

What should you check before you go live?

Run this list before launch:

  1. One tagging method only, documented.
  2. A dynamic transaction_id mapped from your order system.
  3. A test order verified in DebugView, including every item.
  4. GTM purchase tag set to “once per page”.
  5. Custom dimensions registered for any custom parameters.
  6. A test refund, plus a Measurement Protocol test if you use it.

Use ISO 4217 currency codes, send both item_id and item_name, and test edge cases such as coupons and partial refunds. For the first 48 hours, compare daily GA4 orders and revenue against your platform or CRM. Small, consistent gaps are normal. Sudden ones usually point to a tagging fault.

Pro Tip: Keep a spreadsheet of test orders with their IDs and values. When something looks off in week three, you’ll have a known-good reference.

How does GA4 track the ecommerce purchase funnel?

The event set above is the funnel. Each event is a stage: view_item is interest, add_to_cart is intent, begin_checkout is commitment, and purchase is the result. Because every event carries the same items array, you can follow a product from first view to sale and see where people drop off.

In GA4’s funnel exploration, you build steps from these events and read the drop between them. A big gap between add_to_cart and begin_checkout usually points at shipping costs or cart friction. A gap between add_payment_info and purchase often points at payment errors or a slow confirmation page.

Product tokens moving through checkout stages

The funnel is only as honest as the events behind it. If begin_checkout fires on some devices and not others, the report will blame the shopper when the tag is at fault. That’s why we validate each stage separately instead of just checking purchase.

Funnel data becomes useful once you segment it. Split by traffic source and the same funnel shows which channels bring browsers and which bring buyers. Our guide to ecommerce conversion rates covers what to do once you’ve found the weak step. Measure first, then fix the page, then spend more on ads.

How do you send GA4 ecommerce data into Google Ads?

Once purchase fires correctly, you can bring it into Google Ads as a conversion action. The steps are straightforward:

  1. In GA4, mark purchase as a key event.
  2. Link your GA4 property to your Google Ads account.
  3. In Google Ads, import the GA4 key event as a conversion, or use the native Google Ads conversion tag, but not both counting the same sale.
  4. Check which conversion action is set as primary, so bidding learns from purchases rather than add-to-cart clicks.

That last point matters. If add_to_cart sits alongside purchase as a primary conversion, Smart Bidding treats a basket as a sale and optimises towards cheap, low-intent clicks.

Pass the real value with the conversion so ROAS reflects revenue. Then reconcile. GA4, Google Ads and your CRM will rarely agree to the dollar, and that’s fine. What matters is that the gap is explained and stable. A shrinking or growing gap means something changed in tracking.

We cover the mechanics in more depth in our post on Google Ads conversion tracking, and if you run Shopping or Performance Max, our Google Ads for ecommerce page shows how clean purchase data feeds those campaigns. Fix tracking before you scale spend, because bidding on bad data just wastes budget faster.

Google Ads: In GA4, open Admin, then Product links, then Google Ads links. Choose your account, enable personalised advertising if you want audiences shared, and confirm. The person doing it needs edit access in GA4 and admin access in Google Ads. Once linked, GA4 audiences and key events become available in Google Ads.

Meta Ads: There’s no one-click native link between GA4 and Meta. Meta runs on its own pixel, and ideally the Conversions API alongside it, sending the same purchase with a matching event ID so Meta can deduplicate. Treat GA4 as your neutral reference and Meta’s reporting as a separate view.

Expect the numbers to differ. GA4 uses its own attribution, and Meta credits conversions to its own ads, so both will claim some of the same sale. That isn’t a bug. It’s why we reconcile everything to closed revenue in your CRM instead of arguing about whose dashboard is right.

For help with Meta’s side, our Meta Ads for Facebook and Instagram service covers prospecting and retargeting. If you want the server-side route for both platforms, our website tracking service handles the setup.

What does enhanced measurement cover for ecommerce?

Enhanced measurement is a GA4 setting that collects extra interactions automatically: page views, scrolls, outbound clicks, site search, video engagement and file downloads. It’s useful context, and it needs no code.

What it doesn’t do is track ecommerce. The events in this article, from view_item through to purchase, are not part of enhanced measurement and must be instrumented separately, as Google’s ecommerce documentation states. A store that turns on enhanced measurement and assumes it has ecommerce tracking will see traffic but no revenue.

Some platforms ship their own GA4 integration that sends the standard events for you. That can save time, but verify it. Open DebugView, place a test order, and check that transaction_id, value, currency and items all arrive. Plenty of plugins send purchase with a missing items array or a hard-coded ID.

Enhanced measurement can also create noise. Site search and outbound click events are handy, but they shouldn’t be marked as key events or imported into ads. Keep your key events short and tied to revenue: usually just purchase, and perhaps a lead event if you also take enquiries. Anything else should stay as a report, not a bidding signal.

How do you attribute revenue and measure ROI per campaign?

Start with clean source data. Use consistent UTM parameters on every paid link, and keep Google Ads auto-tagging on so GA4 can read the click ID. Then in GA4’s acquisition and monetisation reports you can see purchase revenue by campaign.

Three habits make the numbers trustworthy:

  • Reconcile to the CRM. Platform revenue is a claim. Closed revenue in your CRM is the fact. Compare them weekly by campaign.
  • Split brand from new demand. Brand searches convert well because people already know you. On acquisition campaigns, exclude brand terms so ROAS reflects genuinely new customers.
  • Count each sale once. One order should produce one purchase, however many touchpoints it had.

Calculate ROI per campaign as revenue minus ad cost, minus product cost, divided by ad cost. For example, if GA4 credits more revenue than your CRM records as settled, judge the campaign using the CRM figure.

Attribution models disagree by design, so calibrate them rather than trusting one. A partner article on multi-touch attribution explains how experiments can calibrate model outputs, which is a useful idea for any store reconciling GA4 signals to real revenue.

How can funnels and segments improve campaign targeting?

Once the funnel is trustworthy, use it to make decisions. Some examples a store can act on:

  • Cart abandoners. Build a GA4 audience of users who triggered add_to_cart but not purchase, share it to Google Ads, and run remarketing with a tight budget.
  • High-value buyers. Segment purchasers by order value and use them as a seed for lookalike thinking on Meta, or as a customer list for Google.
  • Channel quality. Compare funnel completion by source. If one campaign delivers plenty of view_item events but almost no begin_checkout, it’s bringing browsers. Cut it or change the offer.
  • Product-level gaps. Use item reports to find products that are viewed often but rarely added to the cart. That’s a page problem, not an ad problem.
  • Device splits. A funnel that collapses at add_payment_info on mobile only suggests a checkout bug worth fixing before you spend another dollar.

Exclude recent purchasers from remarketing so you aren’t paying to chase people who already bought. Review the audience definitions monthly, because a stale one wastes spend quietly.

None of this works without the earlier steps. Segments built on duplicated or missing events will point you in the wrong direction with great confidence.

What we check first when we audit ecommerce tracking

We fix tracking before we scale ads, and we reconcile GA4 to CRM revenue before we touch a bid. That means one reliable event source, a unique transaction_id on every order, and server-side sending where the store processes high-value orders and can’t afford to lose a sale to a blocker. Wasted spend can come from the numbers campaigns are judged by, as well as the campaigns themselves. If you’d like someone to reconcile yours, our audit is a practical next step.

— Jesse Lees

Get your GA4 ecommerce tracking checked for $99 AUD

If you want us to inspect your setup, our $99 AUD Google Ads audit looks at the places ecommerce tracking usually breaks:

Senior Ad Managers

Book it, and you’ll know whether your numbers can be trusted before you spend more.

FAQ

How do you set up GA4 for ecommerce?

Implement the recommended ecommerce events, including purchase with transaction_id, value, currency and an items array, using one tagging method. Then validate each event in DebugView before relying on reports. Google’s measurement guide lists the full event set.

How can you track ecommerce transactions in Google Analytics?

Fire the purchase event when an order completes, either on the confirmation page or from your server through Measurement Protocol. Pass a unique order number as transaction_id so GA4 can deduplicate. Standard reports can take time to fill, per Google’s purchase setup guide.

What does GA4 stand for?

GA4 stands for Google Analytics 4, the current generation of Google’s analytics product. It records activity as events rather than sessions and pageviews, which is why ecommerce tracking depends on sending named events with parameters.

Does GA4 cost money to use?

Standard Google Analytics 4 is free to use, and most stores never need to pay for it. Larger organisations with very high data volumes can move to a paid tier, so check Google’s current terms for your volume.

Sources

Senior Ad Managers
Discuss Your Ecommerce Tracking
Email us about your tracking setup and campaign reporting, and we can discuss measuring ad performance against closed CRM revenue.
J
Jesse · Senior Ad Managers
Founder of Senior Ad Managers, a Melbourne performance marketing agency. Manages paid search across AU, NZ & US accounts.

Want a $99 AUD audit of your account? →

Next step

Find out where your ad spend is going.

Get a $99 AUD Google Ads audit. We'll show you where money is being wasted and which leads you're missing out on.

Show me my current ad mistakes →
CallContact Us