cd /blog
#Analytics#GA4#Marketing#Conversion#Growth

Why Your GA4 Setup Is Lying to You (And How to Fix It)

//8 min read//Mehdi

A client came to me convinced their SEO was dead. Organic traffic was down 40% year-over-year. They were about to hire an SEO agency for AED 8,000/month.

I spent 20 minutes in their GA4 property and found the problem: their developer had pushed a new GTM container three months earlier. It broke the GA4 tag. For 90 days, roughly half their traffic was landing on pages that fired no tracking event. The "40% drop" was a measurement error.

They didn't need an SEO agency. They needed a correct analytics setup.

This happens constantly. GA4 is powerful, but its flexibility means it's easy to configure badly — and bad configuration looks exactly like real data. Here are the six lies I find on almost every audit, and how to fix them.


Lie #1: Your "Direct" Traffic Is Traffic With No Source

Open your GA4 Traffic Acquisition report. If Direct / (none) is your top or second-highest channel, that number is almost certainly wrong.

"Direct" in GA4 does not mean people typed your URL. It means GA4 couldn't attribute the session. That happens when:

  • Someone clicks a link in an email that has no UTM parameters
  • A PDF or Word document links to your site
  • An HTTPS site links to your HTTP page (the referrer gets stripped)
  • A mobile app opens a webview with no referrer
  • Cross-domain tracking isn't set up and users move between your domains

For most B2B businesses, 60–70% of what GA4 calls "direct" is actually email, LinkedIn, or Slack traffic. You're optimizing for the wrong channels.

Fix: Tag everything you control. Every link in every email, every LinkedIn post, every PDF you send — run it through the Google Campaign URL Builder and add utm_source, utm_medium, and utm_campaign. Set a rule: if your team sends a link, it gets UTMs. No exceptions.

For the uncontrollable part, go to Admin → Property → Reporting Identity and switch from Blended to Observed. This doesn't fix everything, but it reduces false direct attribution by using logged-in Google signals.


Lie #2: Your Conversion Count Includes Internal Traffic

This one is embarrassing to find on a client account, but it's common. Your own team is visiting the site, filling out test forms, and clicking buttons — and every one of those actions is being counted as a conversion.

In one audit, internal traffic made up 23% of the "leads" a client's sales team was chasing. The form fill rate looked impressive. The close rate was baffling.

Fix: Create an internal traffic filter.

  1. Go to Admin → Data Streams → your stream → Configure tag settings → Define internal traffic
  2. Add your office IP ranges and any VPN IPs your team uses
  3. Go to Admin → Data Filters, create a filter of type "Internal Traffic", and set it to Active

Note: GA4 filters are not retroactive. They only apply from the activation date forward. If you've never had this filter on, your historical conversion data is inflated — adjust your benchmarks accordingly.


Lie #3: Your Key Events Are Firing on Every Page Load

This is the most damaging one I find, because it inflates your most important numbers.

In GA4, a "Key Event" (previously called a Conversion) is just a regular event you've flagged as important. If the trigger condition is wrong — say, it fires on "All Pages" instead of "Thank You Page" — you'll see thousands of fake conversions and your cost-per-conversion will look impossibly low.

I've seen Google Ads accounts with a "Purchase" key event that was actually firing on the homepage. The campaign looked like it had a 900% ROAS. The client's actual revenue hadn't changed.

Fix: Audit every key event you have flagged.

In Admin → Events, click the key event icon. For each one, go to GTM (or your tag setup), find the trigger, and confirm it matches exactly where the action happens — the thank you page URL, the order confirmation page, a specific button click. Test using GTM Preview mode before publishing.

Use GA4's DebugView (Admin → DebugView) while testing with GTM Preview active to watch events fire in real time. If a purchase event fires when you visit the homepage, you've found a bad trigger.


Lie #4: Referral Traffic Is Stealing Credit From Your Paid Campaigns

Here's a scenario: someone clicks a Google Ads link, lands on your site, gets redirected to a payment page on a separate subdomain, completes a purchase, and is sent to a thank-you page. GA4 records the conversion source as checkout.yoursite.com — referral.

Your paid campaign gets no credit. Your referral traffic looks inexplicably high.

This happens because GA4 treats every domain and subdomain as a separate site by default. When a user crosses a domain boundary without cross-domain tracking configured, GA4 starts a new session and attributes it to the referring domain.

Fix: Configure cross-domain measurement and referral exclusions.

  1. Go to Admin → Data Streams → your stream → Configure tag settings → Configure your domains
  2. Add every domain and subdomain that users can navigate through: yoursite.com, checkout.yoursite.com, bookings.yoursite.com, etc.
  3. Go to Admin → Data Streams → your stream → More tagging settings → List unwanted referrals and add your own domains so they never appear as referral sources

Also check your payment processor. Stripe, PayPal, and most booking tools redirect through their own domains. Add these to your referral exclusion list:

PlatformDomain to Exclude
Stripestripe.com
PayPalpaypal.com
Calendlycalendly.com
Squaresquareup.com

Lie #5: Your Channel Groupings Are Catching the Wrong Traffic

GA4's default channel groupings use rules to categorize traffic. They're decent but not accurate for every business, and they haven't kept up with every traffic source.

Common problems:

  • Organic Social from LinkedIn gets dumped into "Unassigned" because the UTM medium wasn't set to social
  • Email clicks land in "Other" because the UTM medium was set to newsletter instead of email
  • Branded paid search gets lumped with non-branded search, making your paid performance look better than it is

If your UTM conventions don't match GA4's channel grouping rules, you're looking at wrong attribution across every channel.

Fix: Either standardize your UTM conventions to match GA4's defaults, or create custom channel groups.

For UTM standardization, use these medium values consistently:

Channelutm_medium
Emailemail
Paid Searchcpc
Paid Socialpaid-social
Organic Socialsocial
Displaydisplay
Affiliateaffiliate

For custom channel groups: Admin → Channel Groups → Create new channel group. You can define rules based on source, medium, campaign name, or any combination. Create a "Branded Paid Search" group that matches campaigns containing your brand name, so you can report on it separately.


Lie #6: You're Comparing Numbers That Use Different Methodologies

This is less a setup error and more a GA4 trap that catches everyone.

GA4 has three "Reporting Identities":

  • Blended — uses Google signals, device IDs, and user IDs to stitch sessions
  • Observed — uses only device IDs and user IDs you provide
  • Device-based — treats each device independently, like Universal Analytics did

When you look at Users in Explore vs Users in a Standard Report, they can show different numbers. When you compare this month to last month and GA4 changed identity settings in between, the numbers aren't comparable. When you share a report with a client who has different GA4 access, their numbers may look different because of data thresholds applied to protect user privacy.

Fix: Pick one reporting identity and stick with it. For most small-to-medium businesses, Observed is the best balance of accuracy and consistency. Document it in your reporting so everyone knows what they're looking at.

For exploration reports on smaller properties, turn off sampling: use date ranges under 90 days and apply dimension filters to reduce the data set size. GA4 applies sampling only when queries exceed certain thresholds — smaller queries run unsampled.


The Audit Checklist

Before you trust any number in GA4, run through this:

  • Direct traffic is under 20% of total sessions (if higher, check UTM coverage)
  • Internal traffic filter is Active, not Testing
  • Every Key Event has been verified in DebugView
  • Cross-domain measurement includes all subdomains and payment processors
  • UTM medium values match GA4's channel grouping rules
  • Reporting Identity is set consistently and documented

This takes about 45 minutes on a property you've never audited. I've rarely done one without finding at least two of these six issues.

The uncomfortable truth is that most "data-driven" marketing decisions are made on data that's 15–40% wrong. Fixing the measurement doesn't just clean up the reports — it changes what you decide to spend money on.

That's usually where the real improvement comes from.