7 Signs Your GA4 Data Is Hiding a Funnel Leak (And How to Find It)
The most dangerous GA4 problems are not the ones that produce obvious errors. They're the ones that produce plausible-looking data, a conversion rate that seems reasonable, a funnel that appears mostly intact, a revenue number that's roughly in the right zone.
Plausible data gets trusted. Trusted data drives decisions. Wrong decisions compound quietly for months before anyone connects the outcome back to the measurement.
Most funnel leaks don't look like gaps in your data. They look like normal data that's slightly off and that's exactly what makes them expensive to catch late. Here are seven specific signals that your GA4 setup may be hiding a funnel problem rather than surfacing one.
Sign 1: Your GA4 Purchase Event Count Is Higher Than Your Shopify Order Count
Pull GA4's purchase event count for any 30-day period. Then pull total orders from Shopify for the same window. They should be within 5–10% of each other, with GA4 usually slightly lower due to browser-level tracking loss.
If GA4 is reporting more purchase events than Shopify has orders, you almost certainly have a duplicate purchase event firing, typically caused by the confirmation page re-triggering the GTM tag on load, a widget making a secondary API call that fires the event again, or a thank-you page that users navigate back to after placing an order.
Why it hides a funnel leak: Inflated purchase counts mean your reported conversion rate is higher than your actual conversion rate. Your funnel looks healthier than it is. Efforts that should be directed at reducing checkout drop-off get deprioritised because the data suggests checkout is working.
How to find it: Open GA4 DebugView, complete a test purchase on your Shopify store, and count exactly how many times the purchase event fires on the confirmation page, including with a delay. It should fire exactly once. If it fires twice, even 15 seconds apart, your CVR data is inflated.
Sign 2: Your begin_checkout Volume Is Suspiciously Low
Open GA4 Funnel Exploration and build a standard four-step funnel: view_item → add_to_cart → begin_checkout → purchase. Look at the step-to-step drop-off between add_to_cart and begin_checkout.
A drop-off of 30–50% here is typical. If the drop-off is 70%+, or if the absolute volume of begin_checkout events looks implausibly small relative to add_to_cart, the event likely isn't firing on all checkout entry points.
This is one of the most common issues on Shopify stores after theme updates or checkout customisations. Shopify's checkout extensibility changes have broken existing begin_checkout triggers on multiple themes, the event stops firing silently, and the only visible effect is that your checkout data looks sparse.
Why it hides a funnel leak: If begin_checkout isn't firing for a large portion of users, you can't see the real cart-to-checkout drop-off rate. You might be losing 60% of users at checkout and have no visibility into it, the data just shows a gap between add_to_cart and purchase with nothing in between.
How to find it: Use GTM Preview mode or GA4 DebugView to trace a test session through to checkout. Confirm begin_checkout fires immediately when the checkout page loads, not on button click, not conditionally. If it doesn't appear in Preview mode, the trigger is broken.
Sign 3: A Funnel Step Shows Near-Perfect Completion (95%+)
This one is counterintuitive. A funnel step that shows almost no drop-off isn't necessarily good news, it may mean the event for that step isn't firing for the users who did drop off.
GA4 Funnel Exploration only counts users who fire the event you've defined for each step. If add_payment_info fires only when a user successfully enters payment details, not when they land on the payment page then users who land on the payment page and immediately leave will never be counted at that step. The funnel makes this step look like it has a 97% completion rate, when the reality is that you're simply not measuring the users who abandoned it.
Why it hides a funnel leak: You misread a tracking gap as a genuine high-performance step. Optimisation effort gets directed elsewhere while the real drop-off at payment goes uninvestigated.
How to find it: Cross-reference your funnel step volumes against what you'd expect from Shopify's data. If Shopify shows 800 orders initiated but GA4 shows 790 users completing add_payment_info, either your checkout is genuinely converting at 99% (unlikely) or the event is only capturing users who complete that step — not all who attempt it.
Sign 4: Direct/None Is Your Largest or Fastest-Growing Traffic Source
In GA4's Traffic Acquisition report, if direct / none accounts for more than 20–25% of your sessions and is growing, it's rarely because that many users are genuinely typing your URL directly. More commonly it signals one of three tracking problems:
Broken UTM parameters on campaign links, URLs that should carry
utm_sourceandutm_mediumare landing without them, so GA4 falls back todirect / noneMissing cross-domain tracking, if your campaigns land on a subdomain or a separate landing page domain before redirecting to your Shopify store, GA4 breaks the session at the domain boundary and reclassifies the session as direct
Referral exclusion misconfiguration, payment gateways (Razorpay, PayU, Cashfree) redirect users back to your store post-payment, and if these domains aren't on your referral exclusion list, GA4 starts a new session mid-checkout attributed to the gateway rather than the original traffic source
Why it hides a funnel leak: You can't see which channels are actually driving paid conversions. Budget allocation decisions get made on attribution data that doesn't reflect what's happening which is a funnel leak at the marketing layer, not just the tracking layer.
How to find it: Take five recent campaign URLs and paste them into a browser. Check the GA4 Realtime report as you land. If the session shows direct / none instead of your campaign source, the UTM is broken or being stripped in the redirect chain.
Sign 5: Campaign Traffic Spikes Don't Produce Corresponding Conversion Spikes
You run a Meta campaign. Traffic to the product page doubles for three days. Conversion rate stays flat. The intuitive explanation is that the campaign traffic was low quality. The less obvious explanation is that the purchase event isn't attributing correctly to that traffic segment.
This can happen when:
UTMs are broken mid-funnel (carried on landing but dropped at checkout)
The
purchaseevent fires without the session's traffic source being correctly associatedCross-domain issues cause checkout sessions to lose their source attribution
Google's GA4 ecommerce documentation requires that ecommerce events and their parameters be fired within the same session context that captured the traffic source. If checkout is on a separate domain or subdomain and cross-domain linking isn't configured, the purchase event fires in a new session, attributed to direct / none, not your campaign.
How to find it: In GA4, go to Advertising → Attribution → Conversion paths. Filter for purchase conversions and look at which sources appear in the conversion path for sessions that started from your campaign. If your campaign source appears frequently in the path but rarely as the final touchpoint, you likely have a cross-domain attribution gap rather than a traffic quality problem.
Sign 6: Mobile Conversion Rate Is Dramatically Lower and the Mobile Funnel Has Visible Gaps
A meaningful gap between mobile and desktop CVR is normal, mobile users convert at lower rates for genuine UX reasons. But when mobile CVR is less than half of desktop and your GA4 mobile funnel has steps with sharply lower volumes than the desktop equivalent, the gap is more likely a tracking problem than a UX problem.
Common mobile-specific tracking failures on Shopify:
begin_checkoutfiring on desktop but not on mobile (theme-level JavaScript running conditionally based on screen size)add_payment_infomissing for mobile UPI flows, which use a different payment UI than desktop card entryEvents firing on desktop Chrome but not on mobile Safari due to ITP restrictions
Why it matters: If mobile tracking is incomplete, your mobile funnel analysis points you toward the wrong fixes. You optimise mobile UX based on a funnel that doesn't reflect how mobile users actually move through checkout, see our guide to GA4 setup for D2C brands with multiple funnels for how device-level event gaps compound when COD and UPI flows are also involved.
How to find it: Run GTM Preview mode on a real mobile device (not Chrome DevTools emulation). Complete a full checkout journey on mobile and confirm every funnel event fires in the same sequence it does on desktop. Any step that's missing on mobile but present on desktop is a tracking gap, not a UX gap.
Sign 7: GA4 Shows Conversion Events but Revenue Data Is Missing or Inconsistent
Go to GA4 Reports → Monetization → Ecommerce Purchases. Look at the purchase event and check whether the value column is populated consistently. If you see purchase events where revenue shows as ₹0 or is blank, your purchase event is firing without the value or currency parameter or these parameters are being sent with the wrong format.
This is one of the more subtle gaps because the conversion event still fires and still shows up in your funnel. Everything looks tracked. But downstream, your revenue data is unusable for segmentation, your ROAS calculations are wrong, and any reporting that depends on actual purchase value including Google Ads Smart Bidding is optimising against incomplete signals.
How to find it: In GTM Preview mode, click on the purchase event in the tag firing summary and check the dataLayer values being sent. Confirm value is a numeric figure (not a string, not null), currency is a valid ISO code (INR, not Rs or ₹), and both are present on every purchase, not just some. Our GA4 ecommerce tracking audit checklist covers the full parameter validation process.
What to Do When You Spot These Signs
Finding one or more of the above signals doesn't necessarily mean your data is unusable, it means you have a specific, diagnosable problem to fix before you can trust the funnel picture GA4 is showing you.
The repair sequence matters:
Fix duplicate events before interpreting CVR
Restore missing funnel events before building hypotheses about where drop-off is occurring
Fix attribution before making channel budget decisions
Validate all event parameters before running A/B tests with conversion as the success metric
Running CRO, paid media, or funnel optimisation work while any of these signs are active is the equivalent of navigating with a map that's partly wrong, you'll move confidently in directions that don't lead where you think. We wrote about one version of this in detail in our post on A/B testing with broken GA4 data.
If you're seeing multiple signs from this list, a structured GA4 implementation audit will surface the root cause of each one and produce a prioritised fix list, so you're not chasing individual symptoms across separate investigations.
The data you rely on to grow your store is only worth the accuracy of the tracking underneath it. Finding these gaps early is significantly cheaper than discovering them after months of decisions made on top of them.
Spotted one or more of these signs in your own GA4 setup? Talk to FunnelFreaks, we audit GA4 implementations for D2C brands and tell you exactly what's broken and how to fix it.