What We Find in 90% of Free GA4 Audits for D2C Brands

FunnelFreaks runs free GA4 audits for D2C brands on Shopify. The same problems come up in nearly every one.

Not exotic problems. Not edge cases. The same handful of configuration failures, appearing across brands of different sizes, different categories, and different levels of internal analytics sophistication.

Here's what we find, in rough order of how often it appears and what each one does to the decisions being made downstream.

Finding 1: GA4 and Shopify Don't Reconcile

The single most common finding, and the one that makes every other number in the account suspect.

GA4's purchase event count and Shopify's order count should sit within 5–10% of each other over a 30-day window, with GA4 slightly lower. Browser blocking and consent decline account for that expected gap.

What we typically find is a larger gap and frequently one nobody had measured, because reconciliation isn't part of anyone's monthly routine.

Why it matters: the conversion rate every strategic decision rests on is wrong. If GA4 undercounts, your funnel looks worse than it is and you optimise problems that aren't there. If GA4 overcounts, everything looks healthier than reality.

The direction matters too. GA4 undercounting is structural and expected. GA4 reporting more purchases than Shopify has orders is always a defect there's no legitimate mechanism for it.

Our guide to why GA4 and Shopify numbers don't match covers what each gap size means.

Finding 2: Duplicate Purchase Events

Usually the cause behind Finding 1 when the gap runs in the overcounting direction.

Three sources account for most cases on Shopify:

  • A post-purchase upsell or order-tracking app firing purchase a second time

  • The confirmation page re-triggering the tag on refresh or back-navigation

  • Multiple GA4 implementations running simultaneously, the Google & YouTube app, a GTM container, and a hardcoded snippet in theme.liquid all sending the same event

The third is more common than it sounds. Implementations accumulate. A developer adds a snippet, an app gets installed six months later, nobody removes the original.

Why it matters: an inflated conversion rate corrupts sample size calculations. Tests appear to reach statistical significance before they actually have. Winners get shipped and don't hold in production. We documented a full version of this in our account of A/B testing on broken GA4 data.

Related finding: transaction_id missing from the purchase event. GA4 uses it to deduplicate. Without it, there's no mechanism to recognise two events as the same order.

Finding 3: Events Missing on Mobile

Desktop fires the full sequence. Mobile doesn't.

begin_checkout is the usual casualty, typically after a theme update or checkout customisation changed the DOM element a trigger depended on. Nobody notices because the event still fires, just not everywhere.

Why it matters: mobile carries the majority of Indian D2C traffic. When begin_checkout fails on mobile, the funnel shows a catastrophic cart-to-checkout collapse that isn't real. Teams then spend months optimising a cart page that was working correctly, while the actual leak stays invisible.

How we test it: GTM Preview on a real mobile device, completing a full checkout. Not Chrome DevTools emulation, which doesn't reproduce mobile browser behaviour reliably.

Our guide to distinguishing real funnel drop-offs from tracking gaps covers the diagnostic.

Finding 4: No Custom Dimensions Registered

Open Admin → Custom definitions on most D2C properties and the list is empty or near-empty.

Why it matters: without registered custom dimensions, you cannot segment. Your conversion rate is a single blended number describing no actual buyer population.

For an Indian D2C brand, the segmentation that matters most is payment method. COD and prepaid buyers behave differently at every funnel step, different intent at checkout, different abandonment triggers, different post-purchase outcomes. A blended conversion rate averages two populations that need different fixes.

Parameters that aren't registered still get collected. They just don't appear in Exploration reports or segment builders, which means you have data you can't use. Our guide to GA4 setup for brands with multiple funnels covers the configuration.

Finding 5: Payment Gateway Referral Exclusions Missing

When a user returns from Razorpay, Cashfree, PayU, or a UPI app, GA4 starts a new session unless that domain is excluded as a referral.

The purchase then fires in a session attributed to the payment gateway not to the Meta campaign or Google ad that drove the visit.

Why it matters: paid channel performance looks worse than it is. Budget gets reallocated away from campaigns that were working. The visible symptom is a direct / none bucket that keeps growing, usually attributed to platform discrepancy and left alone.

The fix takes five minutes: Admin → Data Streams → Configure Tag Settings → List Unwanted Referrals.

Finding 6: COD Orders Partially Invisible

Specific to markets where cash on delivery is a substantial share of orders.

COD checkouts don't pass through a payment gateway, so default GA4 implementations often don't fire add_payment_info for them. The payment step then shows unusually high completion because only prepaid users are being counted at it.

Why it matters: a large share of buyers move through a funnel the analytics can't see properly. COD abandonment; users who select COD then leave before confirming, doesn't appear anywhere.

Our post on the Indian D2C analytics problem covers this and the related RTO measurement gap in detail.

Finding 7: Incomplete Event Parameters

Events fire, but not with everything GA4 needs.

The common gaps: value missing or sent as a string rather than a number, currency in the wrong format, items array incomplete, and inconsistent item_id values between add_to_cart and purchase.

Why it matters: revenue reporting breaks silently. Purchase events with no value still count as conversions but contribute nothing to revenue figures so your ROAS calculations are wrong and Google Ads Smart Bidding optimises against incomplete signals.

What These Findings Cost

None of them produce an error message. That's what makes them expensive.

A broken tracking setup doesn't fail loudly, it produces plausible numbers that support confident, incorrect decisions. The costs land in different budgets, which is why nobody adds them up:

  • Testing budget spent on experiments measured against a false baseline

  • Ad spend reallocated using attribution that collapsed at the payment gateway

  • Development hours directed at funnel steps that were working

  • Deferred compounding; a quarter of invalid testing doesn't cost one quarter, it shifts the entire improvement curve

Our post on the real cost of bad CRO covers this accounting in full.

Is a CRO Audit Actually Worth Paying For?

Now the question this all leads to.

A free GA4 audit tells you whether your data is trustworthy. It surfaces the findings above; reconciliation gaps, duplicate events, missing mobile events, absent custom dimensions. It answers one question: can the numbers you're working from be relied on?

A paid CRO audit tells you where the revenue is leaking and what to do about it. It includes the validation work above, then adds five more phases: funnel analysis segmented by device, source, and payment method; behavioural research directed at the identified drop-offs; technical and UX review; revenue quantification per leak; and a prioritised hypothesis backlog with sample sizes calculated.

Is it worth paying for? It depends on one thing: whether the findings from the free audit are actionable at your scale.

If you're running meaningful traffic and the reconciliation check reveals a significant gap, yes because every marketing decision you make until it's fixed inherits the error, and the cost of that compounds.

If your traffic is too low for statistical testing, a full CRO audit is premature. Fix the tracking, ship the obvious improvements directly, and revisit when you have the volume to test properly. Our decision framework for D2C startups covers where those thresholds sit.

What isn't worth paying for is a CRO audit that skips the validation phase, a deliverable that opens with heatmap screenshots and closes with generic UX recommendations, built on data nobody checked. Our ecommerce CRO audit checklist covers the full six-phase scope so you can compare what any proposal actually includes.

Run the First Check Yourself

You don't need an audit to find Finding 1.

Pull your GA4 purchase event count and your Shopify order count for the same 30-day window and compare:


Gap

What it means

Within 5–10%

Healthy

10–20%

Investigate before testing

Over 20%

Configuration problem

GA4 higher than Shopify

Duplicate events, always a bug

Ten minutes. If the numbers reconcile, your foundation is sound and you can trust what your funnel is telling you. If they don't, you've found the thing worth fixing before anything else.

Want the other findings checked on your store? Request a free GA4 audit from FunnelFreaks, we'll tell you what's broken, what it's costing, and whether a full CRO engagement makes sense at your stage.