Watson, your private analytics detective.
Catch hidden issues in your GA4 before your client or boss even notice…
…then fix ‘em, save the day, and take the whole credit!
- Instant Audit Results
- 42+ Critical Checks (And Growing!)
- Plug-n-Play Looker Studio Report
Watson dives into your GA4 data, investigates hidden errors, and uncovers insights that help you save the day while keeping your GA4 running smoothly. Let’s solve your data mysteries, one audit at a time!
🔍📖 Watson’s GA4 Audit Handbook
Page Views with Suspected PII
Issue Explanation
Transmitting Personal Identifiable Information (e.g., user email, phone number, or any unique personal data) in GA4 hits breaches Google’s terms and can lead to property termination. GA4 does not allow direct storage or processing of PII, as it poses regulatory and privacy risks. This typically happens when query parameters or event parameters capture form inputs without sanitization or hashing.
Audit Criteria
- 🥳: 0 instances of PII
- 😰: Any instance of PII
How to Fix
- Implement client-side or server-side logic to scrub or hash sensitive fields (e.g., encode emails before sending).
- Configure data filters in GA4 to remove parameters that might reveal personal data.
Supporting Documentation
Page Views with 404 Error
Issue Explanation
When GA4 records page titles containing “404” or “Not Found,” it indicates the user encountered a broken link or missing page. Excessive 404s degrade SEO performance by creating dead ends for search engines. Users also have a poor experience and may leave the site, reducing engagement metrics.
Audit Criteria
- 🥳: <0.1% of total page views
- 🧐: 0.1% – 0.3%
- 😰: >0.3%
How to Fix
- Run a site-wide crawler (e.g., Screaming Frog) or parse server logs to identify broken links.
- Implement 301 redirects for pages that are permanently moved; use 410 or custom messaging for truly removed content.
- Ensure internal linking structures and sitemaps point to valid URLs to prevent accidental 404 hits.
Supporting Documentation
Missing Landing Pages
Issue Explanation
Some sessions may lack a “landing_page” dimension if the initial page_view event fails to record. This can happen when the GA4 snippet fires late, when a user navigates away too quickly, or if session parameters aren’t being passed correctly. Gaps in landing page data disrupt funnel analysis and skew acquisition reporting.
Audit Criteria
- 🥳: <3% of total sessions
- 🧐: 3% – 5%
- 😰: >5%
How to Fix
- Confirm the GA4 tag loads as early as possible (e.g., in the <head> or via a server-side approach).
- Check that the page_view event is not suppressed or filtered by any property settings or custom code.
- Validate session-scoped parameters in DebugView to ensure the first page hit is properly recognized.
Supporting Documentation
Pages with High Bounce Rate
Issue Explanation
A high bounce rate (>70%) for pages with sufficient traffic signals (>100 views during date range) can indicate potential issues like misaligned content, slow loading times, or single-page sessions with no further interaction. GA4 can help analyze these factors. GA4 calculates bounce rate differently than UA (it’s based on engaged sessions), but extremely high bounce indicates users don’t progress to other site areas or generate additional events.
Audit Criteria
- 🥳: <1% of pages have >70% bounce rate
- 🧐: 1% – 3%
- 😰: >3%
How to Fix
- Improve page speed (optimize images, minify JS/CSS, enable caching) and test on mobile networks.
- Create additional interaction events (scrolls, button clicks) to measure engagement more accurately.
- Align metadata (title, description) to actual page content so users are not misled by search results.
Supporting Documentation
Content Grouping
Issue Explanation
Content grouping allows you to categorize pages or screens into logical “groups” for easier analysis (e.g., product pages, blog posts). Without it, analyzing performance by content type is cumbersome. GA4 supports content grouping via custom parameters, but if these parameters aren’t set, you lose a valuable segmentation tool.
Audit Criteria
- 🥳: Content grouping data is collected
- 😰: No Content grouping data
How to Fix
- Define content groups in GA4 Admin, specifying how to map pages or events to each group.
- Update your data layer or GTM to pass a content_group parameter whenever a page_view or screen_view occurs.
- Confirm that custom dimensions (or automatically collected parameters) align with your defined groups.
Supporting Documentation
Site Search
Issue Explanation
Capturing internal search data provides insight into user intent, content gaps, and potential enhancements. If GA4 isn’t configured to recognize your query parameter (e.g., q or s), you lose valuable data about how visitors navigate and what information they seek internally.
Audit Criteria
- 🥳: Internal search data is tracked
- 😰: No site search data
How to Fix
- Identify the search query parameter on your site (e.g., ?s= or ?q=) and configure GA4 to treat this as a search event.
Supporting Documentation
Excessively Long Mediums
Issue Explanation
If your UTM medium exceeds 20 characters, it may not match GA4’s default channel groupings or cause data to be truncated or mismatched. Mediums complicate reporting and can result in multiple mediums for the same traffic source (e.g., socialmediaorganicpromotions vs social).
Audit Criteria
- 🥳: 0 mediums exceed 20 characters
- 😰: Any mediums exceed 20 characters
How to Fix
- Adopt concise naming conventions: email, social, affiliate, cpc, etc.
- Use consistent UTMs across all campaigns so GA4 recognizes the traffic source accurately.
- Run a UTM audit using a spreadsheet or script to catch incorrectly formatted tags.
Direct Traffic Validation
Issue Explanation
A high percentage of direct traffic can mean users genuinely typed in your URL, but it can also indicate untagged marketing links, broken or missing UTMs, or overwritten referral data (e.g., from redirects). The result is incomplete attribution and unclear marketing ROI.
Audit Criteria
- 🥳: <20% of total sessions
- 🧐: 20% – 30%
- 😰: >30%
How to Fix
- Ensure all outbound campaign links (email blasts, social ads, affiliates) include proper UTMs.
- Validate that your site’s redirects preserve UTM parameters in the query string.
- Filter spam and bot traffic that could inflate direct sessions with no identifiable source.
Supporting Documentation
URLs with Uppercase
Issue Explanation
Different URLs with only case variations (e.g., /Product vs /product) create duplicate entries in GA4, fragmenting pageview data. Users might also share uppercase URLs, or the CMS might generate case inconsistencies, inflating your unique page counts.
Audit Criteria
- 🥳: <3% of total URLs
- 🧐: 3% – 5%
- 😰: >5%
How to Fix
- Implement server-side redirects (301) forcing all uppercase paths to lowercase.
- Configure your CMS or .htaccess to normalize URL case.
- Use GA4 filters or transformations to standardize the path dimension if server-side fixes are not possible.
Email Referral Issues
Issue Explanation
GA4 can label inbound clicks from email services (e.g., mail.google.com) as referrals instead of email if UTMs are missing. The increase in referral sessions distorts the true performance of email campaigns, making it difficult to accurately attribute results to the correct marketing channels.
Audit Criteria
- 🥳: <1% of total referral sessions
- 🧐: 1% – 3%
- 😰: >3%
How to Fix
- Use utm_medium=email and utm_source=newsletter (or similar) on all email links.
- Check if your email provider modifies links; sometimes link trackers add their own referral subdomains.
- Update GA4’s default channel grouping to catch any mail-related referrers if UTMs fail.
Payment Referral Sessions
Issue Explanation
When payment gateway domains (e.g., PayPal, Stripe) appear as referral sources, GA4 incorrectly attributes conversions to these middleman sites. Properly excluding these gateways ensures that the true traffic source is credited for the transaction and that funnel reports are not interrupted.
Audit Criteria
- 🥳: 0 sessions mistakenly attributed to payment domains
- 😰: Any misattributed sessions
How to Fix
- In GA4 Admin, list payment domains under “List unwanted referrals” or “ignore_referrer” settings.
- Confirm the post-payment “return” or “thank you” page triggers a purchase event with the original session attribution.
- Test the checkout flow to verify that the session does not reset when redirecting to/from the gateway.
Supporting Documentation
AI-Generated Sessions
Issue Explanation
Traffic from AI chatbots or platforms like ChatGPT may show up if your site permits it in robots.txt. Tracking this traffic can be relevant for content strategy (e.g., understanding how AI references your content). Missing or zero AI traffic could mean your site is inadvertently blocking relevant crawlers or the AI platforms aren’t referencing your domain.
Audit Criteria
- 🥳: >0.1% of total sessions from AI sources (if you want AI referencing)
- 🧐: Some uncertain or anomalous spikes
- 😰: 0, if the goal is to appear in AI-driven suggestions
How to Fix
- Check your robots.txt and meta directives to ensure AI crawler user-agents are not disallowed.
- Ensure correct canonical tags so that generative AI tools properly associate your content with your domain.
Unassigned Users
Issue Explanation
Users flagged as unassigned lack a recognized acquisition source, meaning GA4 cannot link them to any marketing channel. Results may stem from incomplete UTM usage, cookie consent issues, missing user identity frameworks, or technical problems with GA4.
Audit Criteria
- 🥳: <3% of total users
- 🧐: 3% – 5%
- 😰: >5%
How to Fix
- Validate your UTMs on each external campaign link (source, medium, campaign).
- Check if your site’s landing page or redirect structure drops campaign parameters before GA4 can process them.
Supporting Documentation
Unassigned Sessions
Issue Explanation
Similar to unassigned users, these are session-level failures to detect a channel source. A typical cause is stripped query parameters (UTMs) due to JavaScript redirects, or referrer data not being passed along. This leads to incomplete channel data inaccurate funnel attribution.
Audit Criteria
- 🥳: <3% of total sessions
- 🧐: 3% – 5%
- 😰: >5%
How to Fix
- Inspect your site’s routing logic to ensure that UTMs aren’t lost during page loads or language/country redirects.
- Use consistent naming in your campaigns so that GA4’s default channel grouping can classify them properly.
- Review environment-based issues, like iOS apps opening links in internal browsers that strip referrer data.
Supporting Documentation
Self-Referrals
Issue Explanation
Self-referrals happen when GA4 sees your own domain as a referring source. This restarts a session, breaking user flows and assigning conversions incorrectly. Potential causes include missing cross-domain tracking, multiple subdomains not recognized as one property, or incorrectly configured referral exclusions.
Audit Criteria
- 🥳: <0.1% of total sessions from self-referrals
- 🧐: 0.1% – 0.3%
- 😰: >0.3%
How to Fix
- Add your domain(s) to the referral exclusion list in GA4 (Admin → Data Streams → Configure tag settings).
- Check cross-domain tracking scripts for subdomain transitions (e.g., shop.example.com → example.com).
- Use DebugView to ensure the _ga or _ga_<measurement_id> cookie is consistently recognized across subdomains.
Supporting Documentation
Internal UTM Tagging
Issue Explanation
Using UTMs on internal site links triggers new sessions in GA4 and can misrepresent traffic sources. It exaggerates certain channels, like email and social media, disrupts the funnel flow, and hides the actual source of visitors.
Audit Criteria
- 🥳: <1% of total page views
- 🧐: 1% – 3%
- 😰: >3%
How to Fix
- Remove UTMs for internal promotions
- Use a custom dimension or event to track internal campaigns if you need to measure them.
Truncated Events
Issue Explanation
GA4 enforces a 40-character limit on event names. Anything beyond that gets truncated, causing partial or indistinguishable event names. This leads to confusion when analyzing event performance or setting up conversions.
Audit Criteria
- 🥳: 0 truncated event names
- 😰: At least one event name exceeding 40 characters
How to Fix
- Audit all custom events in your code or GTM for length.
- Adopt a standardized naming pattern (e.g., category_action_label) ensuring each part remains short.
Supporting Documentation
Manually Collected Events
Issue Explanation
GA4 offers up to 500 distinct custom events per property. If you exceed this or fail to define any custom events at all, you either lose event data or underuse GA4’s flexibility. An excessive number of events often arises from duplication, test data, or overly granular naming.
Audit Criteria
- 🥳: 1–399 custom events
- 🧐: 400–500
- 😰: Over 500 or 0
How to Fix
- Remove or consolidate redundant events (e.g., combine multiple events with similar meanings into a single one).
- Ensure you at least track key interactions if you’re at 0.
- Regularly review your event schema so that only meaningful actions are logged.
Supporting Documentation
Non-Snake Case Events
Issue Explanation
Using naming conventions like addToCart or User-Login complicates queries, filters, and debugging. GA4 recommends snake_case for custom events to keep a consistent pattern, ease search/discovery, and prevent name mismatch issues in advanced reporting.
Audit Criteria
- 🥳: All custom events follow snake_case (e.g., add_to_cart)
- 😰: One or more events use another pattern (e.g., camelCase, kebab-case)
How to Fix
- Communicate naming standards to developers and marketers to maintain long-term consistency.
Custom Audiences
Issue Explanation
GA4 custom audiences let you group users based on specific behaviors, events, or attributes. If none are configured, you miss opportunities for remarketing, personalization, and targeted analyses (e.g., re-engaging cart abandoners or frequent buyers).
Audit Criteria
- 🥳: At least one custom audience configured
- 😰: No custom audiences
How to Fix
- In GA4 Admin, create audiences using relevant event conditions (e.g., “Add to Cart” but no “Purchase”).
- Validate that these audiences populate in real-time or short-latency aggregated data.
- Link to Google Ads if you plan to use these audiences for retargeting.
Supporting Documentation
Demographic Data Collection
Issue Explanation
Enabling Google signals lets GA4 collect age, gender, and interest data (subject to user consent). Without it, you miss demographic insights and advanced features like remarketing lists. Many businesses overlook enabling it, resulting in incomplete user profiling.
Audit Criteria
- 🥳: Demographics and interest reports display data
- 😰: No demographic data
How to Fix
- Toggle on Google signals in GA4 Admin → Data Settings → Data Collection.
- Comply with relevant privacy laws (e.g., GDPR) and ensure user consent is collected if required.
- Check that your property region or account settings do not block advertising features or data collection.
Supporting Documentation
Key Events Configuration
Issue Explanation
Marking certain events as “key events” improves how GA4 attributes conversions and tracks priority actions. If none are flagged, GA4 lacks focus on your primary goals (like signups or purchases) and might not produce relevant insights for attribution.
Audit Criteria
- 🥳: One or more events marked as key events.
- 😰: No key events selected
How to Fix
- Identify your top-tier events (e.g., add_to_cart, generate_lead, complete_registration) and mark them as key.
- Confirm these key events align with actual business objectives so you’re measuring what truly matters.
- Review regularly to see if new or evolving business goals require updating your key events.
Supporting Documentation
User-ID Setup
Issue Explanation
GA4’s User-ID capability merges sessions across devices for logged-in users, giving a holistic view of user behavior. If missing, frequent cross-device usage can inflate user counts and fragment session data, making it difficult to understand lifetime value or multi-device paths.
Audit Criteria
- 🥳: GA4 receives user_id data
- 😰: No user_id data
How to Fix
- Incorporate a unique, persistent user ID (e.g., from your authentication system) and pass it as a parameter with each event.
- Validate in DebugView to confirm that the user_id is set whenever a user is logged in.
- Check that cross-domain or mobile app linking is properly configured to align user journeys.
Supporting Documentation
Google Ads Linking
Issue Explanation
Linking GA4 and Google Ads synchronizes cost data, audience lists, and conversion reporting. Without it, you lose direct import of GA4 conversions into Ads and limiting optimization and retargeting tactics.
Audit Criteria
- 🥳: Linked Ads account
- 😰: Not linked
How to Fix
- Go to Admin → Product Links in GA4, add your Ads account, and follow the prompts to authorize.
- Ensure auto-tagging is enabled in Google Ads, so session parameters are passed automatically.
- Verify conversions in GA4 can be imported into Ads if you need direct bid optimization.
Supporting Documentation
Data Sampling
Issue Explanation
GA4 may sample data for large datasets or complex queries, producing estimates instead of exact counts. Sampling can impact granular analysis for big traffic sites. If you rely on funnel or user path data, sampling misses certain patterns or anomalies.
Audit Criteria
- 🥳: No sampling under 10M events in 28 days
- 😰: Sampling detected
How to Fix
- Narrow date ranges or filter out unnecessary data to reduce the volume of processed events.
- Export to BigQuery for unsampled data if you need in-depth analysis at scale.
- Consider GA4 360 if event volume frequently exceeds standard thresholds.
Supporting Documentation
Funnel Step Order & Coverage
Issue Explanation
In e-commerce and other flow-based scenarios, each step (product view, add to cart, checkout, etc.) must be tracked in sequence. Missing or out-of-order steps produce broken funnel visualizations and inaccurate drop-off points, obscuring bottleneck diagnosis.
Audit Criteria
- 🥳: All funnel steps tracked in the correct sequence
- 🧐: Some steps missing or out of order
- 😰: Most steps missing or incorrectly sequenced
How to Fix
- Verify each funnel event is triggered with correct naming and event parameters (e.g., view_item, add_to_cart, begin_checkout, purchase).
- Review event logs in DebugView to confirm the chronological order.
Supporting Documentation
Purchases with Zero/Null Quantity
Issue Explanation
A transaction event showing zero or null quantities indicates a potential bug in the e-commerce data layer or in how items are sent to GA4. Inaccurate tracking of revenue and item views can lead to an underreporting or a failure to account for these metrics, which undermines the accuracy of e-commerce reporting.
Audit Criteria
- 🥳: 0 transactions with null quantity
- 🧐: <1% of total transactions
- 😰: >1%
How to Fix
- Inspect the data layer push or GTM tags for the purchase event to ensure quantity is populated and not overridden by empty values.
- Compare GA4’s transaction log with your backend orders to identify patterns of missing quantity.
- Monitor test transactions or staging environments carefully so they don’t pollute real data.
Transactions with Invalid Transaction ID
Issue Explanation
Transactions listed as “(not set)” or with placeholder IDs restrict e-commerce revenue tracking and cause duplication or loss of purchase data. Typically, the checkout script fails to generate or pass a unique transaction_id when the purchase event fires.
Audit Criteria
- 🥳: 0 invalid transaction IDs
- 🧐: <1% of total transactions
- 😰: >1%
How to Fix
- Ensure your e-commerce platform generates a unique ID (often the order number) at purchase time.
- Confirm the purchase event includes transaction_id in the data layer.
- Test multiple transactions in a staging environment to verify the ID surfaces in GA4.
Supporting Documentation
Transactions with Multiple Assigned Users
Issue Explanation
A single transaction ID appearing under multiple user or client IDs typically results from double-counting or an error in the data layer. For instance, the same order might be fired multiple times or multiple browsers are credited with the same transaction ID, inflating revenue numbers.
Audit Criteria
- 🥳: 0 transactions mapped to multiple users
- 🧐: <1% of total transactions
- 😰: >1%
How to Fix
- Implement strict controls to ensure the purchase event is only fired once after successful payment.
- Use server-side tracking if your front-end occasionally duplicates events.
- Filter out test transactions or sandbox data from your main GA4 property.
Transactions from Self-Referrals
Issue Explanation
Sometimes your own domain shows up as a referral for purchase sessions. This typically indicates a session was broken during checkout (e.g., crossing subdomains or returning from a 3rd-party page without proper cross-domain linking), causing GA4 to credit your domain as the source.
Audit Criteria
- 🥳: 0 self-referred transactions
- 😰: Some transactions self-referred
How to Fix
- Exclude your primary domain from referral sources in GA4.
- Implement cross-domain linking if the checkout flows to a different subdomain or external site.
- Validate that the session does not reset mid-checkout by checking the _ga cookie or user/client ID continuity.
Non-Purchase Events with Value
Issue Explanation
Not all value-adding interactions are direct purchases. E-commerce events, as well as actions like leads, registrations, and newsletter signups, can have assigned monetary values to measure micro-conversions and estimate revenue impact. Missing these values makes it hard to evaluate marketing ROI for non-e-commerce milestones.
Audit Criteria
- 🥳: Some non-purchase events carry assigned value
- 😰: No events have assigned value
How to Fix
- Pass that value as a parameter (e.g., value) in the event data layer or GTM.
- Monitor these events in GA4’s monetization reports to see cumulative impact beyond direct purchases.