How to Verify Your Ecommerce Tracking Data Is Actually Accurate

by Jaz Field

How to Verify Your Ecommerce Tracking Data Is Actually Accurate

Accurate tracking means every platform records each Shopify order once, credits it to a channel, and can tie it to a customer. You can check all three yourself in about an hour, using reports you already have. This guide covers what to compare, where to look in each platform, and what each gap tells you.

Most teams find out their tracking is wrong by accident. Finance asks why Meta reports more sales than the store took. A campaign looks dead in GA4 and alive in Google Ads. Nobody can say which number is right.

The fix is to stop comparing platforms with each other and compare each one with Shopify.

Start with Shopify orders as the source of truth

Shopify is the only system that records every order, because it takes the payment. Every other platform is an estimate built from tracking. So the question for each platform is simple: what share of Shopify's orders did it see?

Before you compare, make the Shopify number like for like:

  • Online orders only. Exclude POS, draft, wholesale and test orders, which no web tracking will ever see.
  • Same time zone. Set the report to the store's time zone and check that GA4, Meta and Google Ads use the same one. A mismatch moves orders across days.
  • A full week or more. One day is too noisy. Use the last 7 or 30 complete days.

Step 1: Compare order count, not revenue

Revenue mixes tracking errors with definition differences. Order count does not. Check count first, then revenue.

PlatformWhere to find purchasesWhat a large gap usually means
GA4Reports > Monetization > Ecommerce purchases, or an Exploration counting unique transaction IDsPurchases blocked by ad blockers or consent, or the purchase event missing on some checkouts
Meta AdsEvents Manager > your dataset > Purchase event countBrowser pixel only, or browser and server events not deduplicated
Google AdsGoals > Conversions > Summary, purchase action, "All conversions" columnSeveral purchase actions counting the same order, or a tag that stopped firing
KlaviyoAnalytics > Metrics > Placed OrderOrders from customers Klaviyo cannot identify, or a second Shopify integration

GA4 should be close to Shopify. When GA4 is set up correctly, it should record more than 95% of Shopify's online orders. A gap above about 5% in order count is a fault worth finding, not normal data loss.

Ad platforms are different. Meta and Google Ads count conversions they can attribute to an ad, not every order, so they will sit below Shopify. What you are looking for there is a number above Shopify, or a sudden drop.

Once order count agrees, check revenue. If GA4 revenue differs from Shopify while counts match, compare definitions: whether tax and shipping are included, how discounts and refunds are applied, and which currency is reported. That is a setting, not a tracking failure.

Step 2: Look for purchases counted twice

Double counting is the error that makes reports look better than reality, so it is the one least likely to be reported by your team.

  • GA4: build an Exploration with Transaction ID as the dimension and Transactions as the metric. Any transaction ID counted more than once is a duplicate. The usual cause is two installs, such as a GA4 tag in Google Tag Manager plus the Shopify Google channel.
  • Meta: in Events Manager, check that browser and server Purchase events share an event ID. If they do not, Meta cannot deduplicate them and counts the order twice.
  • Google Ads: list every conversion action that counts purchases. If more than one is set as Primary, Smart Bidding optimizes to the same order twice.
  • Klaviyo: check that only one Shopify integration sends Placed Order. A legacy integration left switched on alongside a newer one doubles the metric.

Step 3: Check how much revenue has no channel

An order can be tracked and still be useless for decisions if it has no source. In GA4, open the Traffic acquisition report with purchase revenue and look at Unassigned, Direct and (not set).

A large Unassigned share usually means the purchase was sent without the session it belongs to. This is common when the checkout runs on a different domain or in a sandboxed pixel, and the purchase event loses the visitor's original client ID. Direct revenue that rises when paid spend rises is the same problem in a different label.

Step 4: Check how many purchases each ad platform can match to a customer

Ad platforms need to match a purchase to a user to credit the ad and train bidding. A purchase they cannot match is close to invisible to them.

  • Meta: Events Manager shows an Event Match Quality score from 0 to 10 for the Purchase event. Low scores mean Meta is receiving few customer identifiers.
  • Google Ads: the Enhanced Conversions diagnostics on the purchase action show whether customer data is being received and matched.
  • Klaviyo: compare the number of Placed Order events with the number of profiles they attach to. Orders from shoppers Klaviyo did not identify never trigger flows.

As a result, two stores with identical order counts can feed very different signals to their ad platforms. The one sending hashed email, phone and address with every purchase gets more of its sales credited, and bids better.

Step 5: Check what is actually loading on the storefront

Most of the faults above trace back to the storefront: a tag pasted into the theme years ago, a second GA4 property, an app pixel nobody remembers installing, a tag that fires before the cookie banner is answered.

You can find these by opening your browser's developer tools and filtering network requests by platform. Or run the free Littledata Tracking Audit, which lists every tag on your storefront, the account it sends to and how it got onto the page, and flags duplicates, dead tags and pre-consent tracking.

Step 6: Recheck after every storefront change

Tracking rarely breaks on its own. It breaks when something changes:

  • Theme updates that drop or duplicate a script
  • New apps that add their own pixel for a platform you already track
  • Checkout changes, including Shopify's move to checkout extensibility
  • Consent banner changes that block tags you did not expect

Repeat steps 1 and 2 after each of these, and run the full check monthly. Put the order counts in a sheet so you can see when a gap opens, not just that it exists.

When the gaps keep coming back

If the same gaps reappear, the cause is usually structural. Each platform is tracked by its own tag in the browser, each tag fails in its own way, and every new app adds another one to maintain.

The alternative is to send purchases from a single source. The data layer for Shopify collects each order once, server-side, with the customer and session attached, and sends the same record to GA4, Meta, Google Ads and Klaviyo. That is what Littledata does. The check in this guide is still worth running either way, because it tells you whether the numbers you report are ones you can defend.

Frequently asked questions

How do I know if my ecommerce tracking is accurate?

Compare the number of online orders in Shopify with the number of purchases recorded in GA4, Meta, Google Ads and Klaviyo for the same date range and time zone. Then check each platform for duplicate purchases, purchases with no channel attributed, and how many purchases it can match to a customer. A gap of more than about 5% in order count usually means a tracking fault, not normal data loss.

Should GA4 revenue match Shopify exactly?

Not exactly. GA4 and Shopify can define revenue differently (tax, shipping, discounts, refunds and currency), so compare order count first. If the order counts agree and revenue does not, the cause is a revenue definition, not missing tracking.

What causes duplicate purchases in GA4 or Meta?

Usually two installs feeding the same account, such as a GA4 tag in Google Tag Manager plus the Shopify Google channel, or a Meta pixel in the theme plus the Meta sales channel. In Meta, browser and server events that do not share an event ID are also counted twice.

What is a good Event Match Quality score in Meta?

Meta scores Event Match Quality from 0 to 10 for each event in Events Manager. A higher score means Meta can match more purchases to a Facebook or Instagram user. Sending hashed email, phone and address with every purchase raises it; a browser-only pixel usually scores lower.

How often should I check tracking accuracy?

Monthly, and after any change that touches the storefront or checkout: a theme update, a new app, a checkout change, or a new consent banner. Most tracking breaks silently after one of those.

Can a tool check tracking accuracy for me?

Partly. The free Littledata Tracking Audit scans your storefront for duplicate, dead and pre-consent tags. MonitorAI connects to Klaviyo, Google Ads and GA4 to check for double-counted purchases and revenue with no channel. The order reconciliation in this guide still needs your own Shopify and platform reports.

The short version

Compare every platform with Shopify, order count first. Then look for duplicates, revenue with no channel, and purchases no one can match to a customer. A gap you can explain is fine. A gap you cannot explain is a tracking fault, and it is costing you either decisions or ad performance.

Jaz Field
Jaz Field

Marketing Manager

Jaz Field is Marketing Manager at Littledata and writes its customer case studies, working with Shopify brands and their agencies to show how accurate first-party data improves results in Google Ads, Meta and Klaviyo.