Getting Started

The GA4 mistakes I see in almost every audit

Learn the most common Google Analytics 4 configuration errors that lead to bad data, and how to fix them before they cause real problems.

A
Antoine
January 14, 20267 min read

I've audited dozens of GA4 implementations, and I keep seeing the same mistakes over and over. Some are minor annoyances. Others completely corrupt your data.

Here are the top 10 GA4 setup mistakes I encounter, ranked roughly by how much damage they cause.

1. Duplicate tracking tags

The problem: You have both the Google tag (gtag.js) installed directly AND the same tag via Google Tag Manager. Result? Every pageview, every event gets counted twice.

How to spot it:

  • Your pageview numbers seem suspiciously high
  • Events are firing in pairs in DebugView
  • Engagement rate is oddly close to 100%

The fix: Pick one method and stick with it. I recommend GTM for flexibility, but either works. Just not both.

❌ Wrong: gtag.js in <head> + GA4 Config tag in GTM
✅ Right: ONLY gtag.js in <head>
✅ Right: ONLY GA4 Config tag in GTM

Pro tip: Use Google Tag Assistant or the GA Debugger extension to spot duplicate tags.

2. Default data retention (2 months)

The problem: GA4's default data retention is 2 months. After that, your Exploration reports lose access to detailed user-level data. Standard reports keep aggregated data, but any custom analysis becomes impossible.

How to spot it: Go to Admin → Data Settings → Data Retention. If it says "2 months," you have a problem.

The fix: Change it to 14 months immediately. It's a free setting, so there's no reason not to.

Retention PeriodWhat you can see in Explorations
2 monthsLast 2 months of detailed data
14 monthsLast 14 months of detailed data

For more on data settings, see our initial setup checklist.

3. Not filtering internal traffic

The problem: Your team visits your site constantly, testing features, checking content, debugging issues. All that internal traffic pollutes your actual user data.

How to spot it:

  • Unusually high traffic from your office location
  • High bounce rates on internal/admin pages
  • Your own test conversions showing up

The fix:

  1. Define internal traffic: Data Streams → Configure tag settings → Define internal traffic
  2. Add your IP addresses or IP ranges
  3. Enable the filter: Admin → Data Settings → Data Filters → Internal Traffic
  4. Set to "Active" (after testing)

Warning: Test with "Testing" mode first. I've seen people accidentally filter real traffic because they used an IP range that was too broad.

4. Multiple web data streams for one site

The problem: Some people create separate data streams for different sections of their website, thinking it's like UA views. It's not. Multiple web streams for one site = fragmented, unreliable data.

How to spot it: Go to Admin → Data Streams. If you see multiple web streams pointing to the same domain or subdomains of the same site, that's wrong.

The fix:

  • Delete extra streams
  • Use one web stream per website
  • If you need to segment data, use filters, segments, or separate properties instead of multiple streams
GA4 Structure (Correct)
─────────────────────────
Property: "My Company"
  └── Web Stream: "Main Website" (example.com + blog.example.com)

GA4 Structure (Wrong)
─────────────────────────
Property: "My Company"
  └── Web Stream: "Homepage" (example.com)
  └── Web Stream: "Blog" (blog.example.com)

5. Not registering custom parameters

The problem: You're sending custom event parameters via GTM, but they don't show up in your reports. GA4 receives them, but doesn't surface them because they're not registered.

How to spot it:

  • Custom parameters appear in DebugView but not in reports
  • You can't find your custom dimensions in the reporting interface

The fix:

  1. Go to Admin → Custom definitions
  2. Click Create custom dimension
  3. Enter the parameter name (must match exactly what you're sending)
  4. Choose scope (Event or User)

You get 50 event-scoped and 25 user-scoped custom dimensions on free GA4. Use them wisely.

6. Ignoring Consent Mode

The problem: If you're in the EU/EEA or serving users there, you need to implement Consent Mode v2. Without it, you're either breaking privacy laws or losing data from users who don't consent.

How to spot it:

  • No consent banner on your site
  • Consent Mode not configured in GTM
  • Google Ads showing "consent gaps" warnings

The fix: Implement Consent Mode v2 with your CMP (Consent Management Platform). This lets GA4 use modeling to fill in gaps from non-consenting users.

For a detailed walkthrough, check our Consent Mode v2 guide.

7. Not connecting BigQuery early

The problem: BigQuery export only captures data from the day you enable it. There's no way to backfill. The longer you wait, the more historical data you lose.

How to spot it: Go to Admin → Product Links → BigQuery Links. If nothing's connected, you're missing out.

The fix: Enable it now, even if you don't plan to use BigQuery immediately. The free daily export is enough for most use cases, and you'll thank yourself later when you need unsampled historical data.

Export TypeCostUse Case
DailyFree (storage costs only)Historical analysis, unsampled data
StreamingPay per GBReal-time dashboards, large-scale analysis

8. Messy event naming

The problem: GA4 event names are case-sensitive and should follow snake_case convention. Random naming leads to duplicate events, broken reports, and confusion.

Examples of what I've seen:

❌ Wrong:
- "Form Submit"
- "form-submit"
- "FormSubmit"
- "form_Submit"

✅ Right:
- "form_submit"

The fix:

  • Use lowercase snake_case for all event names
  • Create a naming convention document for your team
  • Audit existing events and consolidate duplicates

9. Not setting up key events

The problem: Key events (formerly Conversions) are how GA4 knows what matters to your business. Without them, you're just collecting pageviews with no business context.

How to spot it: Go to Admin → Events. If nothing is marked as a key event, you're flying blind.

The fix:

  1. Identify your most important user actions
  2. Create events for them (if not already tracked)
  3. Mark them as key events

Common key events:

Business TypeKey Events to Track
E-commercepurchase, add_to_cart, begin_checkout
SaaSsign_up, trial_start, subscription
Lead genform_submit, contact_request
Contentnewsletter_signup, pdf_download

For detailed setup, see our key events guide.

10. Creating duplicate events with "Create event"

The problem: You're already sending an event via GTM or gtag, then you create a "derived event" in GA4's interface using the same trigger conditions. Now you have duplicates.

How to spot it:

  • Event counts seem doubled
  • DebugView shows events firing multiple times
  • You have both a GTM tag AND a GA4 "Create event" rule for the same action

The fix: Use only ONE method to create each event:

  • GTM/gtag for events you control at the source
  • GA4 "Create event" only for modifying or renaming existing events

Bonus: High cardinality dimensions

This is more subtle but causes real headaches.

The problem: You're tracking a custom dimension with too many unique values (500+ per day), like exact timestamps or unique user identifiers. GA4 groups excess values into "(other)".

The fix:

  • Bucket your values (e.g., time ranges instead of exact times)
  • Reconsider if you really need that level of granularity
  • Use BigQuery for high-cardinality analysis

Quick audit checklist

Run through this to catch the most common issues:

  • Only one tracking method (GTM or gtag, not both)
  • Data retention set to 14 months
  • Internal traffic filter enabled
  • Only one web stream per site
  • Custom parameters registered as dimensions
  • Consent Mode implemented (if serving EU users)
  • BigQuery connected
  • Event names in snake_case
  • Key events configured
  • No duplicate event creation

Need a cleaner analytics experience?

If dealing with GA4's complexity isn't your idea of fun, try Analayer. We give you clean dashboards and actionable insights without the configuration headaches. Free tier available.

See your analytics clearly

Stop struggling with Google Analytics. Connect your account and get a cleaner, simpler view of your data in seconds.