The 20 most common GA4 mistakes
Mistake 1 — Data retention left at 2-month default *(Most costly)*
Frequency: Extremely common — most new GA4 properties are never changed from default
Damage: All event-level data in Explorations older than 2 months is permanently inaccessible. Year-on-year comparison is impossible.
Symptom: Explorations only load data for the last ~60 days; date ranges beyond 2 months return no data
Fix: Admin → Data Settings → Data Retention → 14 months. Not retroactive — immediate action required on every new property.
Mistake 2 — page_view marked as a key event
Frequency: Very common
Damage: Key event count is meaninglessly inflated. "Conversion rate" appears to be 100%+ because every session has at least one page_view.
Symptom: Key event count equals or exceeds session count; key event rate shown as ~100%
Fix: Admin → Events → find page_view → toggle Key event OFF
Mistake 3 — Consent Mode V2 not implemented on EU/UK sites
Frequency: Common (especially smaller agencies and in-house teams)
Damage: Google Ads modelled conversions don't activate; conversion undercounting 20–50% in EU/UK markets; technically non-compliant with March 2024 Google Ads requirement
Symptom: gcd parameter absent from GA4 network requests; modelled conversions absent from Google Ads reports
Fix: Implement Consent Mode V2 via CMP GTM template (Cookiebot, OneTrust, Usercentrics)
Mistake 4 — Duplicate transaction IDs
Frequency: Common
Damage: Revenue over-reported (sometimes 2x or more); Smart Bidding corrupted by inflated conversion data
Symptom: GA4 revenue significantly exceeds platform revenue; same transaction_id appears multiple times in BigQuery
Fix: Implement sessionStorage deduplication; use checkout_completed (Shopify) or server-side _ga4_tracked meta flag (WooCommerce)
Mistake 5 — Purchase event fires on page load instead of order confirmation
Frequency: Common in GTM implementations where trigger is "Page URL contains /thank-you"
Damage: Every user who lands on the thank-you URL (including returns via bookmark, email link) fires a purchase event. Revenue massively overstated.
Symptom: GA4 transactions significantly exceed platform orders; each transaction_id appears 5–10 times
Fix: Fire purchase event from a custom event triggered by the server confirming the order (checkout_completed API, server-side dataLayer push on first load only)
Mistake 6 — No internal traffic filter
Frequency: Very common
Damage: Every session from the office, agency, and developer machines inflates session counts and conversion rates. For small teams, internal traffic can represent 10–40% of reported sessions.
Symptom: Unusually high conversion rates; site appears busier than expected; developers' test purchases inflate revenue
Fix: Admin → Data Streams → Define internal traffic → add IPs → create Data Filter to exclude
Mistake 7 — UTM parameters on Google Ads URLs (conflicting with auto-tagging)
Frequency: Common
Damage: Manual UTM parameters override the gclid attribution. Google Ads sessions are misattributed in GA4; Google Ads conversion tracking breaks.
Symptom: Google Ads shows impressions and clicks; GA4 shows no google/cpc sessions; conversions in Google Ads don't match
Fix: Use auto-tagging only for Google Ads. If manual UTMs are needed alongside gclid, ensure the tracking template format preserves gclid: {lpurl}?utm_source=google&gclid={gclid}
Mistake 8 — items array empty or missing on purchase event
Frequency: Common in custom implementations
Damage: Product-level e-commerce reporting unavailable; Google Shopping campaign optimisation broken; item_id ≠ Merchant Center product ID alignment fails
Symptom: GA4 → E-commerce Purchases shows (not set) for item names; Google Ads Products tab shows zero conversions at product level
Fix: Verify dataLayer push includes populated ecommerce.items array with item_id, item_name, price, quantity on the order confirmation page
Mistake 9 — Custom dimensions not registered in GA4 Admin
Frequency: Very common
Damage: Custom parameters are collected but invisible in standard reports and Looker Studio. Analysts can't use them without BigQuery.
Symptom: Attempting to add a custom parameter as a dimension in GA4 reports shows it's not available; the data exists in BigQuery but not in the UI
Fix: Admin → Custom Definitions → Custom Dimensions → + Create → register immediately when implementing new parameters
Mistake 10 — Enhanced measurement form tracking conflicts with custom form events
Frequency: Common
Damage: Every form submission fires 2 events — one from enhanced measurement, one from custom GTM tag. form_submit count is 2x actual.
Symptom: form_submit count in GA4 is approximately double the number of actual form submissions
Fix: Disable enhanced measurement form interactions (Admin → Data Streams → Web → Enhanced measurement → uncheck Form interactions) if custom form tracking is implemented
Want to see which hidden implementation gaps are affecting your GA4 data quality?
Mistake 11 — Agency GA4 property created in agency's own account
Frequency: Common in smaller agencies
Damage: When agency relationship ends, client loses access to all historical data. Data ownership stays with the agency.
Symptom: Client cannot log in to see their own GA4 data; agency is the sole account administrator
Fix (preventive): Always create client properties in the client's own Google Analytics account, with agency invited as Editor
Mistake 12 — Referral exclusions missing for payment gateways
Frequency: Common
Damage: Purchases appear attributed to PayPal, Stripe, or other payment processors as referral sources. Channel attribution for conversions is wrong.
Symptom: GA4 shows significant sessions and conversions attributed to paypal.com, stripe.com, or similar referral sources
Fix: Admin → Data Streams → Configure your domains → add payment gateway domains (paypal.com, stripe.com, secure.klarna.com, etc.)
Mistake 13 — wrong timezone set for the property
Frequency: Common
Damage: Day boundaries are wrong — sessions split between two days at the wrong clock time. Daily and weekly reports show incorrect patterns.
Symptom: Day-over-day traffic patterns look unusual; Monday spikes that should be Sunday evening traffic
Fix: Admin → Property Settings → Reporting time zone → set to business operations timezone
Mistake 14 — Sending PII in event parameters or page URLs
Frequency: Less common but high severity
Damage: GDPR violation (data minimisation), Google Analytics ToS violation, potential data breach notification obligation
Symptom: Email addresses or phone numbers visible in page_location values in GA4 reports or BigQuery
Fix: Enable GA4's URL redaction; implement GTM variable sanitisation to strip PII query parameters before they reach the GA4 tag
Mistake 15 — Audience membership duration too long for urgency campaigns
Frequency: Common in paid media teams
Damage: Cart abandonment audiences include users who abandoned 180 days ago — these users have near-zero intent. Ad spend wasted on cold audiences misidentified as hot.
Symptom: Cart abandonment remarketing shows high click volume but very low conversion rates
Fix: Set cart abandonment audience membership to 7–14 days maximum. Use longer durations only for win-back or look-alike seed audiences.
Mistake 16 — Exploration date range extended beyond event retention window
Frequency: Common (especially after switching from 2-month to 14-month retention)
Damage: Explorations show no data for the period before retention was extended, even though some data may exist.
Symptom: Funnel exploration shows zero sessions for periods older than 2 months (before retention was extended)
Fix: Understand that the change is not retroactive. For historical analysis, use BigQuery export if it was enabled before the retention change.
Mistake 17 — Marking micro-conversions as primary conversions in Google Ads
Frequency: Common
Damage: Smart Bidding optimises toward add_to_cart or begin_checkout (which are plentiful and low-commitment) instead of purchase (which is the actual business outcome). CPA appears low but revenue doesn't improve.
Symptom: Smart Bidding reports excellent "conversion" numbers; actual revenue or final purchase rate doesn't improve in proportion
Fix: Set purchase (with value) as Primary conversion in Google Ads. Set micro-conversions (add_to_cart, begin_checkout) as Secondary only — they inform bidding but don't set the goal.
Mistake 18 — User-ID containing raw email addresses
Frequency: Less common, high severity
Damage: GDPR violation (sending PII to Google); Google Analytics ToS violation; potential data breach
Symptom: User Explorer shows email addresses as user IDs
Fix: Hash User-ID with SHA-256 before sending to GA4. Never use raw email, name, or phone as User-ID.
Mistake 19 — Direct traffic over 35% without investigation
Frequency: Common (symptom, not always noticed)
Damage: Attribution loss — campaigns that should be credited with traffic are not. Budget decisions based on understated channel performance.
Symptom: Direct channel consistently > 35% of sessions; paid campaign sessions seem lower than expected based on spend
Investigation: Check for broken UTMs, missing cross-domain tracking, consent mode issues
Mistake 20 — Never annotating GA4 after configuration changes
Frequency: Extremely common
Damage: Future analysts (or your future self) cannot explain data anomalies. Tracking changes look like traffic changes. Stakeholder trust eroded when unexplained metric shifts appear.
Symptom: Unexplained 20% session drop in October with no annotation to explain that the internal traffic filter was added
Fix: Annotate within 48 hours of any tracking change, site change, or significant marketing event. 30 seconds per annotation pays dividends over years.
FAQ: GA4 Common Mistakes: The 20 Errors That Break Properties
What should a team validate first when ga4 common mistakes: the 20 errors that break properties appears?
How do I know whether the fix actually worked?
When should this become a full GA4 audit instead of a quick fix?
Related guides for GA4 Common Mistakes: The 20 Errors That Break Properties
BigQuery Cost Optimisation for GA4 Exports: 9 SQL Patterns (2026)
The biggest cost wins come from nine SQL patterns: (1) partition pruning via _TABLE_SUFFIX BETWEEN (10–50x cost difference vs derived filters), (2) clustering on source/medium/event_name (30–60% reduction on top of partitioning), (3) explicit column selection (never SELECT *)…
How to Stitch GA4 BigQuery Sessions Manually (2026)
GA4 doesn't store sessions as records in BigQuery exports — only individual events with session identifiers. To reconstruct sessions: join on user_pseudo_id + (SELECT value.int_value FROM UNNEST(event_params) WHERE key='ga_session_id') as the unique session key…
Run a GA4 audit before ga4 common mistakes: the 20 errors that break properties spreads into reporting decisions
Use GA4 Audits to surface implementation gaps, broken signals, and the next fixes to prioritize before the issue becomes harder to trust or explain.