Ecommerce Analytics Audit: How to Know Which Numbers You Can Actually Trust
An ecommerce analytics audit is the least interesting work in this business and the first thing I do on every engagement. The reason is uncomfortable: on roughly half the stores I look at, the numbers everyone plans from are wrong by enough to change the decision.
Not slightly wrong. Wrong in the direction that makes a losing channel look profitable.
The short answer
Before optimising anything, confirm the numbers describe reality.
Compare last month’s orders and revenue in your platform admin against your analytics. A few percent apart is normal and expected. Fifteen percent apart means every decision made from that data was made on fiction, and fixing the tracking outranks everything else on your roadmap.
Why bad data creates confidently bad decisions
Wrong numbers are worse than no numbers, because no numbers produce caution and wrong numbers produce confidence.
A channel that under-reports gets its budget cut even though it was working. A channel that over-reports gets scaled until the bank balance disagrees. A product page change gets credited with a lift that was actually seasonality. Each of these is a real decision, made properly, from a number that was not true.
One purchase, six systems, six answers
A single order passes through most of your stack, and each system records it against a different question.

The ad platforms together claim €138,000 of revenue on €100,000 of actual sales. None of them is lying. Each counts every conversion it can plausibly claim, because each is answering “did anyone who touched us buy” rather than “who caused this”.
This is why platform-reported ROAS can look healthy while the business loses money, and why blended figures are the only safe basis for decisions about total spend.
What an ecommerce analytics audit checks
Revenue reconciliation
Platform orders and revenue against analytics, for the same period, same timezone, same definition of an order. Everything else waits on this.
Conversion tracking integrity
Does the purchase event fire once, with the right value, excluding tax and shipping if that is your convention? Double-firing is common after theme or app changes and inflates everything downstream.
Attribution model and window
Not which model is correct, but whether everyone comparing numbers is using the same one. Most reporting arguments are two people using different windows.
UTM discipline
Inconsistent casing, missing parameters, internal links carrying campaign tags that overwrite the real source. This one quietly ruins channel reporting and is cheap to fix.
Event taxonomy
Are the events that matter defined, named consistently, and actually used? Most stores track dozens of events nobody has ever opened a report for.
Consent and its effect
What share of visitors decline tracking, and what does that do to your figures? A store with 40% refusal has a systematically incomplete picture, and needs to know by how much.
Cross-system joins
Whether the BI tool, the email platform and the store agree on what a customer is. Duplicate customer records make retention look worse and lifetime value look lower than reality.
The discrepancies you should expect
| Gap | Usually means | Worry? |
|---|---|---|
| Analytics 2 to 8% below platform | Ad blockers, consent refusals, tracking prevention | No. This is normal and stable. |
| Analytics 10 to 20% below | Consent setup, a broken event on one template, mobile app traffic | Yes. Worth a day to investigate. |
| Analytics above platform | Duplicate event firing, test orders counted, refunds not deducted | Yes. Inflated numbers cause the worst decisions. |
| Ad platforms summing above real revenue | Each claiming the same conversion | Expected. Use blended figures for budget decisions. |
| A channel showing zero | Broken UTMs, not zero performance | Yes, and it is usually cheap to fix. |
Reconciliation is the first layer of every audit I run, because nothing above it can be trusted until it passes. A fixed-price audit starts there and works up through the funnel.
Which number should you actually trust?
A simple hierarchy resolves most disputes.
- For revenue and orders: your platform, always. It is where money actually changed hands. Analytics is a sample of it.
- For behaviour: analytics. Step conversion, device splits, page paths. The platform cannot see these.
- For total marketing efficiency: blended. Total spend against total revenue. Crude, unarguable, and the only figure that reconciles with your bank.
- For decisions inside one platform: that platform. Comparing two creatives inside Meta is legitimate. Comparing Meta’s revenue against Google’s is not.
- For profitability: contribution margin from your own finance data. No advertising platform knows your cost of goods.
Stop chasing perfect attribution. Privacy changes, cross-device journeys and consent refusals mean per-channel attribution will never be exact again. The productive response is to use blended numbers for budget decisions and incrementality tests for the questions that genuinely matter, rather than buying another tool that promises to resolve it.
Running one yourself, in an afternoon
- Export last month’s orders and revenue from your platform.
- Pull the same period from analytics. Check the timezone matches before comparing anything.
- Calculate the gap as a percentage and write it down. This is your baseline error.
- Place a real test order and watch which events fire, and how many times.
- Add up what every ad platform claims. Compare the total against real revenue.
- List your traffic sources and find any showing implausible zeros. Those are broken UTMs.
- Check whether refunds and cancellations are deducted anywhere. Often they are not.
If the gap is under 8% and stable, stop. Your data is good enough to make decisions from, and further precision is not worth the engineering.
Once the numbers are trustworthy, the KPI pyramid covers which of them deserve attention, the CRO guide explains how to use them to find leaks, and the 7-layer framework shows where analytics sits among everything else.