Why your GA4 is lying to you: 8 WordPress tracking mistakes quietly wrecking your reports

A client sent us a screenshot recently. “GA4 says we’re getting 1,200 form submissions a month. The sales team has seen maybe 200 of them. Where’s the gap?”

Most of the gap was in the dashboard, not the inbox. GA4 was double-counting page loads, treating a form-success page-view as a submission, and inflating numbers with internal traffic from the team’s own offices. The actual conversion data was hidden inside a much smaller, much more useful number. Once we cleaned it up, the lead count dropped by 80% and the cost per real lead became visible for the first time in months.

That story is depressingly common. GA4’s biggest problem isn’t that it’s hard to use, it’s that it’s easy to use wrongly in ways that produce confident-looking dashboards full of nonsense. Below are the eight mistakes we see most often on SA WordPress sites in 2026, and the diagnostics that surface them.

1. Double tracking from two plugins fighting over the same tag

This is the single most common GA4 problem we encounter. A site has GA4 installed via Google Site Kit, then someone also adds it via MonsterInsights or Rank Math or the theme’s built-in analytics field. Both fire. Every pageview, every event, every conversion is counted twice.

The symptom: traffic numbers in GA4 are roughly double what the server logs or Search Console suggest. Bounce rates look impossibly low because the second page-view fires before the user can leave.

How to find it: open your homepage, view source, and search for G- followed by your measurement ID. If you find the snippet more than once, you have a double-install. Sometimes one copy is in the theme header, one in a plugin, both have to be addressed.

2. Treating page-views as conversions

A “Thank You” page after a form submission is not the same as a form submission. Page-views can fire because someone bookmarked the URL, hit refresh, or landed there from a search result. Marking the thank-you page-view as a conversion will systematically inflate your lead count, sometimes by 30-50%.

The fix is to send a discrete event, generate_lead is the GA4-recommended name, from the form’s success handler, not from the page that loads afterwards. Contact Form 7, WPForms, Gravity Forms, and Fluent Forms all support this through hooks or built-in GA4 integrations.

3. Form events that fire on page load instead of on submit

Subtle and harder to catch. Some “GA4 form integration” plugins fire the form-submit event when the form is rendered, not when it’s actually sent. Every page that contains your contact form becomes a “submission” in GA4. Lead numbers look fantastic. Sales calls don’t follow.

How to find it: open your homepage in an incognito window with the GA4 DebugView open. If you see generate_lead or form_submit fire before you’ve touched anything, you have a misconfigured event.

4. Missing parameters on e-commerce purchase events

Illustration supporting Why your GA4 is lying to you

For WooCommerce or any e-commerce site, the GA4 purchase event requires value, currency, transaction_id, and an items array. Many WordPress e-commerce integrations send the event without one or more of these fields. The conversion still registers, but the revenue, transaction count, and product-level analysis are all broken.

The diagnostic: in GA4, open Reports → Monetisation → E-commerce purchases. If revenue is showing as zero or significantly under your Woo dashboard, your purchase event is firing without value. Fix the integration, don’t ignore the gap.

5. Consent mode blocking events silently

If you’ve added a POPIA-style consent banner, increasingly common on SA sites, it may be configured in “denied” default mode, which means GA4 collects no data from users who haven’t actively accepted cookies. Depending on banner design and audience, that can be 40-60% of your visitors.

The data isn’t lost necessarily, Google’s Consent Mode v2 can model the denied traffic if implemented correctly, but most WordPress consent plugins ship with consent modelling switched off. The result is a GA4 property that’s seeing roughly half your real traffic, and you wouldn’t know unless you compared GA4 to server logs.

6. Caching plugins dropping the GA4 script

WP Rocket, LiteSpeed Cache, and W3 Total Cache all have “delay JavaScript” or “defer non-critical JS” features that, when aggressively configured, will defer the GA4 snippet. Combined with users who close the tab quickly, this means pageviews never fire and short sessions never get counted.

How to spot it: a sudden, unexplained drop in GA4 sessions after a performance optimisation pass. Or a GA4 session count that’s noticeably lower than Search Console clicks. The fix is to exclude googletagmanager.com and google-analytics.com from your script-deferring rules.

7. Internal traffic from your own offices and team inflating numbers

A surprisingly large chunk of “user behaviour” in many GA4 properties is the agency team, the client’s team, and developers QA-ing the site. On a small SA business with 5,000 monthly users, a 3-person team browsing daily can account for 5-10% of sessions, and they behave nothing like real users.

GA4’s “Internal Traffic” filter under Admin → Data Settings → Data Filters lets you exclude known IPs. Configure it. Set it to “Testing” mode for a week first to confirm the right traffic is being caught, then switch to “Active.” Most properties we audit don’t have it set up at all.

8. Conversions never marked as conversions

This one is almost too simple. The GA4 event is firing perfectly. The data is clean. But the event has never been marked as a key event (formerly “conversion”) in the Admin panel. Result: it doesn’t appear in conversion-focused reports, your Google Ads import is missing it, and your campaign optimisation is blind.

Open Admin → Events. Find your generate_lead, purchase, contact, or whatever your key event is. Toggle “Mark as key event.” Done. You’d be amazed how often this is the missing piece.

A 30-minute diagnostic anyone can run

If you suspect your GA4 is misreporting, do this in order:

  1. View page source on your homepage. Search for G-. Confirm it appears exactly once.
  2. Open GA4 DebugView in one tab, your site in incognito in another. Load three pages, fill the form, watch what fires. Anything firing that shouldn’t?
  3. Compare GA4 sessions to Search Console clicks for the same date range. Off by more than 20%? You have a tracking gap.
  4. Compare GA4 conversions to your CRM or inbox. Off by more than 15%? Either GA4 is inflating or under-reporting. Both are bad.
  5. Check the Internal Traffic filter is active and includes your office, agency, and known team IPs.

This is the diagnostic we run on the first day of any tracking audit. About 80% of WordPress GA4 setups we audit fail at least three of these checks. The clients with clean data are an outright minority.

Why this matters more than it looks

GA4 isn’t just a dashboard. It’s the data layer feeding Google Ads automated bidding, Performance Max, your campaign optimisation, your reporting to the board, and the lead-quality scoring you’re doing in your CRM. Broken inputs corrupt everything downstream. A campaign optimised against inflated conversion data will spend efficiently against a metric that doesn’t exist, while the actual cost per real lead climbs invisibly.

If you haven’t audited your GA4 against these eight checks, do it before you decide on next quarter’s marketing budget. The shape of the answer might change what you spend.


GKnect Digital runs full GA4 and conversion-tracking audits for SA WordPress sites. Book a 30-minute tracking review.

FAQ

How do I know if my GA4 has double tracking? View page source on your homepage and search for your GA4 measurement ID (starts with G-). It should appear once. If it appears more than once, you have a double install.

Why is my GA4 lead count so much higher than what my sales team actually receives? Usually one of three causes: page-views being counted as form submissions, form events firing on page load instead of submit, or no internal-traffic filter in place.

Does WP Rocket interfere with GA4 tracking? It can, when “Delay JavaScript Execution” is set aggressively. Add googletagmanager.com and google-analytics.com to the script exclusion list.

Do I need consent mode for POPIA compliance in South Africa? POPIA requires lawful basis for processing personal data, which includes IP-derived analytics data. A properly configured consent banner with Google’s Consent Mode v2 is the cleanest path.

How often should I audit GA4 tracking? At minimum quarterly, and any time you change plugins, themes, consent banners, or caching configuration.


Related reading

Read More Articles