GA4 Audit documentation

This document provides explanations and troubleshooting steps for the audit checks performed by the GA4 Audit tool.

Table of contents

Privacy policy

🔒 Your GA4 data stays in your Google account. We don’t see it, store it, or share it—ever.

To learn more about our privacy policy, click here.

GA4 audit help: UTM parameter checks

Inverted UTMs check

  1. Pass: No obvious swaps detected.
  2. Warn: Potential swaps found. Check the ‘Details’ column for examples.
  1. Review the examples in the ‘Details’ column.
  2. Examine the campaign URLs associated with the flagged source/medium pairs.
  3. Correct the utm_source (the specific site or platform, e.g., google, facebook, newsletter_spring) and utm_medium (the marketing channel, e.g., cpc, social, email) values in your campaign links or URL builder tool. Ensure they logically represent the origin and channel.

UTM formatting check

  1. Pass: UTM parameters appear correctly placed after a ?.
  2. Warn: Found URLs where UTMs might be part of the path. Check ‘Details’ for examples.
  1. Examine the example URLs listed in the ‘Details’ column.
  2. Locate where these URLs are generated (e.g., in ad platforms, email marketing tools, social media posts, URL builders).
  3. Ensure the tool or process correctly appends UTM parameters starting with a ? (for the first parameter) and separated by & (for subsequent parameters). Example: https://www.example.com/page?utm_source=google&utm_medium=cpc

UTMs unusual length check

  1. Pass: All utm_source and utm_medium values are 30 characters or less.
  2. Warn: Found some values > 30 characters, affecting < 10% of relevant sessions.
  3. Fail: Found values > 30 characters, affecting ≥ 10% of relevant sessions.
  1. Review the examples in the ‘Details’ column.
  2. Identify the campaigns or sources generating the long values.
  3. Shorten the utm_source and utm_medium values in your URL builder or campaign setup, adhering to your team’s naming conventions. Aim for clear, concise, and standardized values.

UTM repetition check

  1. Pass: No significant repetition found.
  2. Warn: Repetition found, affecting < 10% of relevant sessions.
  3. Fail: Repetition found, affecting ≥ 10% of relevant sessions.
  1. Review the examples in ‘Details’.
  2. Adjust your campaign tagging strategy. Ensure utm_medium clearly represents the marketing channel (e.g., cpc, display, social, email, affiliate) and doesn’t just repeat the source information.

UTM source missing check

  1. Pass: Less than 1% of relevant sessions are affected.
  2. Warn: 1-2% of relevant sessions are affected.
  3. Fail: More than 2% of relevant sessions are affected.
  1. Review the examples in ‘Details’ (showing the medium/campaign found).
  2. Identify the campaigns or links missing the utm_source parameter.
  3. Ensure all tagged URLs include a valid utm_source value. Update your URL builder templates or campaign setup processes.

UTM campaign missing check

  1. Pass: Less than 1% of relevant sessions are affected.
  2. Warn: 1-2% of relevant sessions are affected.
  3. Fail: More than 2% of relevant sessions are affected.
  1. Review the examples in ‘Details’ (showing the source/medium found).
  2. Identify the traffic sources/mediums missing the utm_campaign parameter.
  3. Update your URL tagging process to consistently include a descriptive utm_campaign value for all marketing links.

UTM medium missing check

  1. Pass: Less than 1% of relevant sessions are affected.
  2. Warn: 1-2% of relevant sessions are affected.
  3. Fail: More than 2% of relevant sessions are affected.
  1. Review the examples in ‘Details’ (showing the source/campaign found).
  2. Identify the campaigns or links missing the utm_medium parameter.
  3. Ensure all tagged URLs include a valid utm_medium value (e.g., cpc, email, social, affiliate, display). Update your URL builder templates or campaign setup processes. Use standard medium values recognised by GA4 where possible.

Source & medium missing check

  1. Pass: Less than 0.5% of total sessions are affected.
  2. Warn: 0.5% – 2% of total sessions are affected.
  3. Fail: More than 2% of total sessions are affected.
  1. This often requires broader investigation beyond just UTMs.
  2. Ensure all marketing links (emails, social posts, ads, affiliates) are consistently tagged with utm_source and utm_medium.
  3. Investigate potential self-referral issues (see Referrals audit).
  4. Verify cross-domain tracking is set up correctly if users navigate between multiple domains you own.
  5. Check for technical issues like redirects that might strip referrer data.

UTM source mixed case check

  1. Pass: No mixed-case variations found for any source.
  2. Warn: Found at least one source with mixed-case variations. Check ‘Details’ for examples.
  1. Review the examples in ‘Details’ showing the different casings found for the same conceptual source.
  2. Establish a consistent casing convention for all UTM parameters (lowercase is highly recommended).
  3. Update all your URL builders, campaign setups, and documentation to enforce the chosen convention (e.g., always use google, never Google).

UTM medium duplicates check

  1. Pass: No significant inconsistencies or duplicates found.
  2. Warn: Found different values likely representing the same medium (primarily case differences). Check ‘Details’ for examples.
  1. Review the examples in ‘Details’ (e.g., ‘cpc’ vs ‘CPC’).
  2. Establish standardized utm_medium values for each marketing channel. Use GA4’s recognized values where possible (e.g., cpc, organic, social, email, affiliate, referral, display).
  3. Update all URL builders, campaign setups, and documentation to use only the standardized medium values consistently (lowercase recommended).

GA4 audit help: custom definitions checks

Custom Definitions Sheet

Event scoped custom dimensions check

  1. Pass: Using less than 80% of the limit (fewer than 40).
  2. Warn: Using 80-99% of the limit (40-49). You are close to the limit.
  3. Fail: Using 100% or more of the limit (50+). You cannot create more.
  1. Review existing dimensions: Go to GA4 Property > Admin > Custom Definitions > Custom Dimensions. Filter by “Scope = Event”.
  2. Identify unused/redundant dimensions: Look for dimensions that are no longer needed, were created for testing, or capture similar information redundantly. Check the “Events used in” count (though this might not be perfectly accurate immediately after creation/archiving).
  3. Archive unnecessary dimensions: Select the dimensions you don’t need and click “Archive”. Archived dimensions don’t count towards the limit but cannot be easily unarchived (you’d need to recreate them). Be certain before archiving.
  4. Consolidate: Can multiple existing dimensions be replaced by one dimension with more general applicability? For example, instead of button_color and link_color, maybe just element_color?
  5. Plan carefully: Before creating new event-scoped dimensions, ensure they are truly necessary and distinct from existing ones.

Event scoped custom metrics check

  1. Pass: Using less than 80% of the limit (fewer than 40).
  2. Warn: Using 80-99% of the limit (40-49). You are close to the limit.
  3. Fail: Using 100% or more of the limit (50+). You cannot create more.
  1. Review existing metrics: Go to GA4 Property > Admin > Custom Definitions > Custom Metrics.
  2. Identify unused/redundant metrics: Look for metrics that are no longer relevant, were for testing, or duplicate existing metrics.
  3. Archive unnecessary metrics: Select the metrics you don’t need and click “Archive”. Archived metrics free up space but cannot be easily restored.
  4. Plan carefully: Ensure new custom metrics provide unique analytical value before creating them.

User scoped custom dimensions check

  1. Pass: Using less than 80% of the limit (fewer than 20).
  2. Warn: Using 80-99% of the limit (20-24). You are close to the limit.
  3. Fail: Using 100% or more of the limit (25+). You cannot create more.
  1. Review existing dimensions: Go to GA4 Property > Admin > Custom Definitions > Custom Dimensions. Filter by “Scope = User”.
  2. Identify unused/redundant dimensions: Look for dimensions describing user attributes that are no longer relevant, were for testing, or capture overlapping information.
  3. Archive unnecessary dimensions: Select the dimensions you don’t need and click “Archive”. Be certain before archiving.
  4. Consolidate: Can multiple user properties be combined logically?
  5. Plan carefully: User-scoped dimensions are valuable but limited. Prioritize the most important user attributes for segmentation and analysis before creating new ones.

GA4 audit help: data validity checks

Data Validity Sheet

Mixed case events check

  1. Pass: No mixed-case event names detected.
  2. Warn: Found event groups with mixed casing, but the total count for each group is 10 or less.
  3. Fail: Found event groups with mixed casing where at least one group has a total count greater than 10.
  1. Review the ‘Details’ column to see which event names have inconsistent casing (e.g., ‘Login’ vs. ‘login’).
  2. Establish a consistent naming convention for all events (lowercase with underscores, like event_name, is highly recommended).
  3. Update your website/app code (GTM tags, dataLayer pushes, gtag calls) to send event names using only the standardized casing.
  4. Communicate the naming convention to your development team

Mixed case URLs check

  1. Pass: No mixed-case URLs detected.
  2. Warn: Found URL groups with mixed casing, but the total pageviews for each group is 10 or less.
  3. Fail: Found URL groups with mixed casing where at least one group has total pageviews greater than 10.
  1. Review the ‘Details’ column to identify URLs with inconsistent casing.
  2. Server-side fix (recommended): Configure your web server (e.g., Apache .htaccess, Nginx config) to automatically redirect all incoming URLs to a consistent case (usually lowercase) using a 301 redirect. This is the most robust solution.
  3. Application-level fix: Ensure your website’s internal linking, canonical tags, and sitemaps all use the consistent, standardized URL case.
  4. Campaign URL fix: Ensure marketing campaign destination URLs also use the standardized case.

Page cardinality check

  1. Pass: Good URL structure; fewer than 11 unique parameter names per base page path.
  2. Warn: Potential issue; at least one base path has 11-20 unique parameter names. Check the ‘Details’ column.
  3. Fail: Likely reporting impact; at least one base path has over 20 unique parameter names. Check the ‘Details’ column.
  1. Analyze flagged URLs: Use the ‘Details’ column in the sheet to see the specific URLs and the list of unique parameters found. Identify parameters that seem unnecessary for analysis in GA4 (e.g., session IDs, unique user tokens, redundant filters, internal tracking codes).
  2. Exclude parameters in GA4 admin: For parameters not needed for GA4 reporting:
    • Navigate to: GA4 Property > Admin > Data Settings > Data Collection.
    • Click Show more under URL Query Parameter Exclusions.
    • Enter the parameter names you want GA4 to ignore (e.g., sessionid, usertoken, filter_id). Note: Excluding id means GA4 treats /page?id=1 and /page?id=2 as the same page in reports.
    • Important: Do NOT exclude utm_ parameters or any parameters needed to differentiate page content, functionality, or traffic sources within your GA4 analysis.
    • Reference: Google Help: Exclude URL Query Parameters
  3. Review website code/CMS: If problematic parameters (especially non-standard ones like PHPSESSID or custom IDs) are present, investigate your website’s code, CMS, or third-party plugins. Modify the configuration or code to prevent these parameters from being appended to URLs sent to GA4.

GA4 audit help: referral checks

Referrals Sheet

Self referrals check

  1. Pass: Less than 1% of total sessions are self-referrals.
  2. Warn: 1-5% of total sessions are self-referrals.
  3. Fail: More than 5% of total sessions are self-referrals.
  1. Add domain to referral exclusion list: This is the primary fix. Go to GA4 Property > Admin > Data Streams > [Select your Web Stream] > Configure tag settings > Show more > List unwanted referrals. Add your own domain (e.g., example.com) and any relevant subdomains (e.g., shop.example.com, blog.example.com). Reference: Google Help: Identify unwanted referrals
  2. Check cross-domain tracking: If users navigate between different domains you own (e.g., main site to a separate booking engine), ensure cross-domain tracking is correctly configured in your GA4 tag settings.
  3. Review payment gateway redirects: Ensure users returning from third-party payment gateways are correctly returned without triggering a new session or losing the original source. The payment domain should often be added to the referral exclusion list.
  4. Check session timeout settings: Ensure the session timeout (Admin > Data Streams > [Web Stream] > Configure tag settings > Show more > Adjust session timeout) is appropriate for your site’s user behaviour (default is 30 minutes).

Suspicious self referrals check

  1. Third-party tools or services embedding your content (like translation services, caching services).
  2. Potential brand spoofing or scraper sites.
  3. Misconfigured tracking on related (but distinct) domains.
  1. Pass: Less than 0.5% of total sessions are suspicious self-referrals.
  2. Warn: 0.5% – 2% of total sessions are suspicious self-referrals.
  3. Fail: More than 2% of total sessions are suspicious self-referrals.
  1. Review the sources listed in the ‘Details’ column.
  2. Identify legitimate sources: Determine if sources like translation services (googleusercontent.com), web archives, or known third-party platforms integrating your content are expected. If legitimate and causing issues, add the specific referring domain (e.g., googleusercontent.com) to your Referral Exclusion List (see Self-Referrals fix #1).
  3. Investigate unknown sources: Research unfamiliar domains. They might be spam (see Spam Referrals check) or indicate other issues.
  4. Check tracking: Ensure tracking isn’t accidentally implemented on domains that merely mention your brand.

Spam referrals check

  1. Pass: Less than 1% of total sessions come from known spam domains.
  2. Warn: 1-5% of total sessions come from known spam domains.
  3. Fail: More than 5% of total sessions come from known spam domains.
  1. Update spam list: Regularly review the ‘SpamReferralDomains’ sheet. Add any new spam domains you identify from your GA4 reports (Acquisition > Traffic acquisition > filter by Medium = referral, look for suspicious sources with high bounce/low engagement).
  2. GA4 traffic filtering (recommended for future data): While GA4 automatically filters some known bots/spam, you can create Data Filters to exclude traffic based on hostname or other dimensions if spam is persistent and identifiable by patterns beyond just the referrer. Go to Admin > Data Settings > Data Filters. Note: Data filters are destructive and apply going forward.
  3. Segment historical data: For analyzing past data, create segments in GA4 Explorations or Looker Studio to exclude sessions where Session source matches known spam domains.

Missing referrers check

  1. Pass: Less than 1% of total sessions are referrals with missing sources.
  2. Warn: 1-5% of total sessions are referrals with missing sources.
  3. Fail: More than 5% of total sessions are referrals with missing sources.
  1. Ensure HTTPS: Make sure your entire website uses HTTPS. Transitions from secure (HTTPS) referrers to non-secure (HTTP) pages on your site often cause the referrer to be dropped.
  2. Review redirects: Check if any internal or external redirects involved in user journeys might be configured in a way that strips referrer data.
  3. Check rel=”noreferrer”: Examine links pointing to your site from partners or your other properties. If they use rel=”noreferrer”, the referrer information will be intentionally withheld. Ask partners to remove it if appropriate.
  4. Understand limitations: Some referrer loss is unavoidable due to browser privacy settings or specific app behaviors. Focus on fixing technical issues within your control (HTTPS, redirects).

GA4 audit help: sanity checks

Sanity Check Sheet

(not set) landing pages check

  1. Pass: Less than 1% of total sessions have (not set) landing pages.
  2. Warn: 1% or more of total sessions have (not set) landing pages. (Threshold adjusted based on code logic).
  3. Fail: More than 1% of total sessions have (not set) landing pages. (Threshold adjusted based on code logic – Fail effectively triggers at the same point as Warn in the provided code).
  1. Verify base tag placement: Ensure your GA4 configuration tag (gtag.js or GTM base tag) fires correctly on all pages before any other GA4 events.
  2. Check for delayed pageviews: Ensure the page_view event isn’t significantly delayed by scripts or consent mechanisms, potentially allowing other events to start the session first.
  3. Review session timeout: A very short session timeout could contribute if users return quickly after inactivity. Check Admin > Data Streams > [Web Stream] > Configure tag settings > Show more > Adjust session timeout.
  4. Analyze filters: Check if any GA4 Data Filters or GTM triggers might be excluding initial pageviews under certain conditions.
  5. Examine event timing: Use browser developer tools (Network tab) or GTM Preview mode to see the exact sequence of GA4 hits when a session starts.

Dubious landing pages check

  1. Pass: Less than 0.2% of total sessions are affected.
  2. Warn: 0.2% – 1% of total sessions are affected.
  3. Fail: More than 1% of total sessions are affected.
  1. Review tagging: Ensure all marketing links (email, social, ads, QR codes) are consistently tagged with UTM parameters (utm_source, utm_medium, utm_campaign). This is the most common cause.
  2. Check redirects: Ensure server-side or client-side redirects aren’t stripping referrer data before the user lands on the final page.
  3. Verify cross-domain tracking: If users arrive from another domain you own, ensure cross-domain tracking is working correctly.
  4. Analyze specific pages: Look at the landing pages listed in ‘Details’. Are they pages linked heavily from untagged emails or social posts?

Unassigned traffic check

  1. Pass: Less than 1% of total sessions are unassigned.
  2. Warn: 1-3% of total sessions are unassigned.
  3. Fail: More than 3% of total sessions are unassigned.
  1. tagging: Ensure comprehensive and correct UTM tagging across all campaigns (email, social, custom campaigns). Check for missing utm_source or utm_medium.
  2. Check Google Ads linking & auto-tagging: Verify your Google Ads account is linked to GA4 (Admin > Product Links > Google Ads Links) and that auto-tagging is enabled in Google Ads. Ensure cost data is importing.
  3. Investigate referrer issues: See fixes for “Missing Referrers” check in the Referrals audit.
  4. Check consent management: Ensure your consent platform isn’t blocking analytics tags before source information can be captured.

Direct traffic check

  1. Missing UTM tags on marketing links (causing them to appear direct).
  2. Lost referrer data (HTTPS-to-HTTP issues, rel=”noreferrer”).
  3. Traffic from non-web sources (like mobile apps) without proper tagging.
  1. Pass: Direct traffic percentage is below the calculated threshold for your site’s traffic volume.
  2. Warn: Direct traffic percentage exceeds the threshold (20% for <30k sessions, 15% for 30k-50k sessions, 10% for >50k sessions).
  1. Improve UTM tagging: This is often the biggest lever. Ensure all inbound marketing links are tagged.
  2. Ensure full site HTTPS: Prevent referrer loss from secure sites.
  3. Check rel=”noreferrer”: Audit links pointing to your site.
  4. Analyze landing pages: Look at the top landing pages for direct traffic. Are they pages typically bookmarked, or are they campaign-specific pages that should have UTMs?
  5. Review dark social/app traffic: Understand how traffic from untaggable sources (messaging apps, some mobile apps) might be contributing.

Single hostname usage check

  1. Spam/Ghost Traffic: Fake hits sent directly to GA4 servers.
  2. Cross-Domain Tracking Issues: Data from other domains you own appearing incorrectly.
  3. Third-Party Tools: Staging sites, translation services, or other tools sending data.
  4. Implementation Errors: Your tracking code accidentally placed on another website.
  1. Pass: Less than 0.2% of sessions come from unexpected hostnames.
  2. Warn: 0.2% – 2% of sessions come from unexpected hostnames.
  3. Fail: More than 2% of sessions come from unexpected hostnames.
  1. Review unexpected hostnames: Look at the list in ‘Details’.
  2. Filter spam hostnames: Create Data Filters (Admin > Data Settings > Data Filters) to Include only traffic from your valid hostname(s). This is the most effective way to block hostname spam going forward.
  3. Exclude legitimate third-party hostnames: If hostnames like translate.googleusercontent.com or known staging/tool domains appear and are legitimate but unwanted in reports, add them to your Referral Exclusion List (see Self-Referrals fix #1) – note this primarily affects referral attribution, filtering is better for hostname spam.
  4. Verify tracking code placement: Ensure your GA4 code isn’t active on incorrect domains.

Suspicious engagement rates check

  1. Very Low (<10%): Suggests users are leaving very quickly without interacting. This could be due to poor content relevance, slow load times, technical errors on the page, or misleading traffic sources.
  2. Very High (>90%): While sometimes legitimate for highly engaging content, consistently near-100% rates can indicate tracking issues, such as the GA4 tag firing multiple times, sessions not ending correctly, or potentially bot traffic that triggers engagement metrics artificially.
  1. Pass: No landing pages with significant traffic fall outside the 10%-90% engagement range.
  2. Warn: Found landing pages outside the 10%-90% range, affecting < 5% of total sessions.
  3. Fail: Found landing pages outside the 10%-90% range, affecting ≥ 5% of total sessions.
  1. Analyze specific pages: Review the landing pages listed in ‘Details’.
  2. For low engagement:

3. For high engagement:

GA4 audit help: ecommerce checks

Ecommerce Sheet

Note: All ecommerce checks (except the first one) are skipped if “Enable Ecommerce Audit” is not checked in the Configuration or if the “Transaction Count” check fails. 

Transaction count check (gatekeeper)

  1. Pass: At least one transaction event was detected.
  2. Fail: Zero transaction events were detected during the period. 
  1. Verify ecommerce tracking implementation: Ensure your ecommerce tracking code (e.g., data layer pushes for GTM, gtag event snippets) is correctly implemented on your purchase confirmation page or triggered upon successful transaction.
  2. Check trigger conditions: If using GTM, ensure the trigger for your purchase event tag is firing correctly on the confirmation page/event. Use GTM Preview mode to debug.
  3. Confirm event naming: Ensure you are using one of the standard GA4 recommended event names for purchases (e.g., purchase).
  4. Check data layer structure: Verify that the ecommerce data layer object (especially the transaction_id and items array) is correctly formatted according to Google’s documentation. Use browser developer tools to inspect the dataLayer.
  5. Review consent settings: Ensure consent settings aren’t preventing the purchase event tag from firing.

Funnel stages check

  1. Pass: All four key funnel events (view_item, add_to_cart, begin_checkout, purchase) were recorded during the period.
  2. Fail: One or more of the key funnel events are completely missing from the data. 
  1. Identify the missing event(s) listed in ‘Details’.
  2. Implement tracking for the missing events using the standard GA4 event names:

3. Ensure the data layer or event parameters for these events are correctly formatted, especially the items array.

Funnel order check

  1. Pass: Event counts follow the expected decreasing order.
  2. Fail: The count for at least one funnel stage is higher than the preceding stage. The ‘Details’ will show the counts found.
  1. Examine the counts in the ‘Details’ to see where the order breaks (e.g., add_to_cart > view_item).
  2. Review tag implementation: Use GTM Preview or browser developer tools to meticulously check the triggers and firing conditions for each funnel event tag (view_item, add_to_cart, begin_checkout).
  3. Check view_item: Ensure it fires reliably on all relevant product page views.
  4. Check add_to_cart: Ensure it fires only once per add-to-cart action and not on page load or other unrelated actions.
  5. Check begin_checkout: Ensure it fires only when the user initiates the checkout flow, not on every cart view or page load within the checkout.

Product category check

  1. Pass: No products viewed are missing category data.
  2. Warn: 1-10 product views are missing category data.
  3. Fail: More than 10 product views are missing category data.
  1. Review the example products listed in ‘Details’.
  2. Identify where product data originates (e.g., product database, CMS, PIM).
  3. Ensure the item_category (and other category levels like item_category2 if used) field is populated for all products in your source system.
  4. Verify that your website code or GTM setup correctly pulls this category data and includes it in the items array for ecommerce events (especially view_item, add_to_cart, purchase). Check the data layer structure. 

Product dimensions check

  1. Pass: All viewed products have both itemName and itemId.
  2. Warn: 1-10 product views are missing itemName or itemId.
  3. Fail: More than 10 product views are missing itemName or itemId.
  1. Review the ‘Details’ to see examples of products/transactions with missing dimensions.
  2. Ensure both item_id and item_name are populated for all products in your source system (database, CMS, etc.).
  3. Verify your website code or GTM setup correctly includes both item_id and item_name in the items array for all relevant ecommerce events (view_item, add_to_cart, purchase, etc.). Check the data layer structure.

Duplicate transaction IDs check

  1. Pass: No duplicate transaction_ids found.
  2. Warn: 1-10 distinct transaction_ids were found associated with multiple purchase events.
  3. Fail: More than 10 distinct transaction_ids were found associated with multiple purchase events.
  1. Review confirmation page logic: Examine the code or GTM setup on your purchase confirmation page. Ensure the purchase event tag fires only once upon successful transaction completion.
  2. Prevent refreshes/back button issues: Implement logic to prevent the purchase tag from firing again if the user refreshes the confirmation page or navigates back to it. Use techniques like server-side flags, browser session storage, or checking if the transaction ID has already been processed.
  3. Check server-side tracking: If using Measurement Protocol for server-side purchase events, ensure your backend logic sends the event only once per transaction.
  4. Debug with transaction IDs: Use the transaction IDs listed in ‘Details’ to investigate specific orders in your backend system and correlate them with GA4 data (using Explorations) to see when the multiple hits occurred. 

Item name with multiple IDs check

  1. Pass: All item_name values consistently map to only one item_id.
  2. Fail: Found at least one item_name associated with more than one item_id. ‘Details’ lists examples.
  1. Review the examples in ‘Details’ to see which product names have multiple associated IDs.
  2. Clean product data: Investigate your product database/catalog. Ensure each distinct product variant has a unique item_id AND potentially a more specific item_name if variations are significant (e.g., “Shirt – Red” vs. “Shirt – Blue”). If it’s truly the same product, ensure it always uses the same item_id.
  3. Standardize tracking: Verify that your website code or GTM setup consistently pulls the correct item_id for each item_name across all ecommerce events (view_item, add_to_cart, etc.). 

Negative revenue values check

  1. Pass: Fewer than 10 transactions have negative revenue.
  2. Warn: 10-50 transactions have negative revenue.
  3. Fail: More than 50 transactions have negative revenue.
  1. Investigate specific transactions: Use the transaction IDs (if available in GA4 explorations for the negative revenue) to check the corresponding orders in your backend system.
  2. Separate refunds: Ensure you are sending distinct refund events for returns/refunds, rather than sending purchase events with negative values. The refund event has specific parameters like transaction_id.
  3. Review discount logic: Verify how discounts are applied in your data layer. Ensure they reduce the price or value correctly, not resulting in negative overall purchaseRevenue.
  4. Check data layer implementation: Double-check the code generating the value for the purchase event. 

Suspicious large revenue check

  1. Data entry errors (e.g., misplaced decimal points).
  2. Test transactions with unrealistic values.
  3. Currency code mismatches or conversion issues.
  4. Legitimate but outlier purchases (e.g., bulk B2B orders) that might need separate analysis.
  1. Pass: No transactions found with revenue > 10x the average.
  2. Fail: Found at least one transaction with revenue > 10x the average. ‘Details’ lists examples.
  1. Review the transaction IDs listed in ‘Details’.
  2. Verify in backend: Check these specific orders in your ecommerce platform/backend. Was the revenue genuinely that high?
  3. Check data layer: Examine the value and currency being sent in the purchase event data layer for these transactions. Look for extra zeroes, missing decimal points, or incorrect currency codes.
  4. Review test procedures: Ensure test orders use distinct identifiers or values that can be easily filtered out, or that test data isn’t sent to your production GA4 property.
  5. Segment outliers: If the large orders are legitimate (e.g., wholesale), consider creating audience segments or using filters in your analysis to separate them from typical B2C transactions if needed.

Suspicious large quantity check

  1. Zero Quantity: Items in a completed purchase should always have a quantity of at least 1. Zero indicates a data layer or tracking logic error.
  2. Very High Quantity (>100): While possible for some businesses (e.g., wholesale, low-cost items), quantities over 100 are often unusual for typical ecommerce and might indicate data errors, test data, or specific bulk orders needing separate review.
  1. Pass: No items found with quantity = 0 or > 100 in purchase events.
  2. Fail: Found at least one transaction with items having quantity = 0 or > 100. ‘Details’ lists example transaction IDs and quantities/items.
  1. Review the transaction/item details provided.
  2. Check data layer: Examine the items array in the data layer for purchase events. Verify the quantity field is being populated correctly for all items. Ensure it’s an integer and reflects the actual quantity purchased.
  3. Fix zero quantities: Investigate why items might be added to the purchase event data with a quantity of 0. This is likely a bug in the code generating the data layer.
  4. Verify high quantities: Check the corresponding orders in your backend for the high-quantity items. If legitimate, no action may be needed in GA4, but be aware they might skew average quantity metrics. If incorrect, fix the data layer population logic.

Suspicious small revenue check

  1. Test transactions that weren’t filtered.
  2. Data errors (e.g., misplaced decimals).
  3. Tracking issues where perhaps only shipping or tax was recorded as revenue.
  4. Legitimate purchases of very low-cost items or samples.
  1. Pass: No transactions found with revenue > 0 and < 10% of the average.
  2. Fail: Found at least one transaction with revenue > 0 and < 10% of the average. ‘Details’ lists examples. 
  1. Review the transaction IDs listed in ‘Details’.
  2. Verify in backend: Check these specific orders in your ecommerce platform. Was the revenue genuinely that low?
  3. Check data layer: Examine the value, currency, shipping, and tax being sent in the purchase event data layer. Ensure the value correctly represents the total transaction value (often excluding tax and shipping, depending on your GA4 settings, but should include item revenue).
  4. Review test procedures: Ensure test orders are identifiable or excluded. 

Tax/shipping anomalies check

  1. Pass: No transactions found where tax or shipping exceeds total revenue.
  2. Fail: Found at least one transaction where tax or shipping exceeds total revenue. ‘Details’ lists example transaction IDs.
  1. Review the transaction IDs listed in ‘Details’.
  2. Check data layer: This is almost certainly a data layer issue. Examine the purchase event data layer for the flagged transactions. Verify the calculation and population of the value, tax, and shipping parameters. Ensure correct data types (numbers) and decimal placement.
  3. Consult documentation: Refer to Google’s GA4 ecommerce developer documentation for the correct structure and definitions of value, tax, and shipping within the purchase event. Ensure your implementation matches.

GA4 audit help: Google Ads checks

Google Ads Sheet

Linked to GA4 check (gatekeeper)

  1. Pass: At least one Google Ads account is linked. ‘Details’ lists the linked Customer IDs.
  2. Fail: No Google Ads accounts are linked to this GA4 property.
  1. Navigate to your GA4 Property > Admin > Product Links > Google Ads Links.
  2. Click the “Link” button.
  3. Choose the Google Ads account(s) you want to link (you must have appropriate permissions in both GA4 and Google Ads).
  4. Configure link settings (Enable Personalized Advertising, Enable Auto-Tagging – strongly recommended).
  5. Submit and confirm the link.
  6. Reference: Google Help: Link Google Ads and Analytics

Account status check (gatekeeper)

  1. Pass: Some Google Ads clicks, cost, or sessions were detected in GA4 during the period.
  2. Fail: No Google Ads clicks, cost, or sessions were detected. 
  1. Verify link status: Double-check the Google Ads link in GA4 Admin (see previous check). Ensure it’s active.
  2. Enable auto-tagging: Confirm auto-tagging is enabled in your linked Google Ads account(s) (Account Settings > Auto-tagging). This automatically adds the gclid parameter needed for data joining. Manual tagging with UTMs is generally NOT sufficient for full Ads integration.
  3. Check campaign activity: Ensure Google Ads campaigns were actually running and receiving clicks during the selected date range.
  4. Allow data processing time: After linking or enabling auto-tagging, allow up to 48 hours for data to start appearing in GA4 reports.
  5. Check GA4 filters: Ensure no GA4 Data Filters are accidentally excluding Google Ads traffic. 

Clicks & cost check

  1. Pass: All campaigns with >100 sessions have both click and cost data.
  2. Fail: Found campaigns with >100 sessions missing click or cost data. ‘Details’ lists affected campaign IDs.
  1. Verify Google Ads link: Ensure the link between GA4 and the relevant Google Ads account is active and correctly configured.
  2. Check auto-tagging: Confirm auto-tagging is enabled in the Google Ads account.
  3. Check cost data import: In Google Ads, ensure cost data sharing is enabled if prompted during linking or check account settings. In GA4, there isn’t a separate import setting like in UA; it relies on the link and auto-tagging.
  4. Permissions: Ensure the user who established the link had sufficient permissions in both platforms. Sometimes unlinking and relinking can resolve permission glitches.
  5. Data latency: Allow up to 48 hours for cost/click data to fully populate after linking/fixing issues.

Ads sessions check

  1. Broken landing page URLs in ads.
  2. GA4 tracking code missing or broken on the landing page.
  3. Slow landing page load times causing users to bounce before the tag fires.
  4. Redirects stripping gclid or referrer information.
  5. Issues with consent management blocking tags.
  6. Potential (though less common) high levels of invalid clicks/bot traffic filtered by Ads but not GA4 sessions.
  1. Pass: No campaigns found with >100 clicks and 0 sessions.
  2. Fail: Found campaigns with >100 clicks and 0 sessions. ‘Details’ lists affected campaigns.
  1. Verify landing pages: Check the landing page URLs used in the flagged Google Ads campaigns (listed in ‘Details’). Ensure they are correct, load properly, and don’t result in errors (404s, etc.).
  2. Check GA4 tag on landing pages: Use Google Tag Assistant (or browser developer tools) to confirm the GA4 tag is present and firing correctly on the specific landing pages used by these campaigns.
  3. Test ad clicks: Manually click on an ad from the affected campaign (or use Google Ads’ Ad Preview tool) and watch the GA4 Realtime report or use GTM Preview mode to see if your session is recorded correctly.
  4. Review redirects: Check for any redirects between the ad click and the final landing page that might interfere with tracking parameters (gclid).
  5. Analyze page load speed: Use tools like PageSpeed Insights to check the performance of the landing pages. Slow pages increase bounces before tracking loads.

Ads sessions < ad clicks check

  1. Slow landing pages.
  2. Tracking implementation issues (tag firing late).
  3. High bounce rates immediately upon landing.
  4. Redirect issues.
  5. Cross-domain tracking problems if ads land on one domain but the main site is another.
  1. Pass: Session count is within 10% of the click count for all campaigns.
  2. Warn: Sessions are 10-20% lower than clicks for some campaigns.
  3. Fail: Sessions are more than 20% lower than clicks for some campaigns. ‘Details’ lists affected campaigns and the discrepancy percentage.
  1. Prioritize ‘Fail’ status: Focus on campaigns with the largest discrepancies first.
  2. Analyze landing page performance: Check load speed, mobile-friendliness, and user experience of the landing pages for flagged campaigns.
  3. Verify GA4 tag implementation: Ensure the tag fires early and reliably on the landing page.
  4. Review ad targeting/creatives: Is the ad accurately setting expectations? High immediate bounce rates can contribute to the discrepancy.
  5. Check for redirects: Ensure redirects aren’t causing issues.
  6. Verify cross-domain setup: If applicable, ensure cross-domain tracking is correctly configured.

GA4 audit help: key events checks

Key Events Sheet

Active key events check

  1. Pass: At least one event marked as a Key Event has 10 or more completions.
  2. Fail: No event marked as a Key Event reached 10 completions during the period.
  1. Verify key event configuration: Go to GA4 Property > Admin > Key Events. Ensure the events you consider conversions are listed and toggled on.
  2. Check underlying event tracking: Confirm that the base events themselves (before being marked as Key Events) are being tracked correctly in GA4. Use GA4’s Realtime report or DebugView to test if these events fire when expected actions occur on your site/app.
  3. Review event volume: Are the actions defined as Key Events actually happening? If expected volume is low, the check might fail even if tracking is correct, but it highlights low conversion volume.
  4. Ensure sufficient date range: Check if the selected date range is long enough to capture at least 10 completions for your typical Key Events.

Key events equal check

  1. Marking the same base event as a Key Event multiple times with different names.
  2. An implementation error where different Key Event flags are tied to the same trigger.
  3. Duplicated event tracking in your website/app code or GTM setup.
  1. Pass: Active Key Events have different completion counts, or there is only one (or zero) active Key Event.
  2. Fail: You have two or more active Key Events, and they all recorded the exact same number of completions.
  1. Review key event list: Go to GA4 Property > Admin > Key Events. Examine the events listed. Are there multiple Key Events that seem redundant or represent the same user goal?
  2. Investigate underlying events: For the Key Events with identical counts (listed in ‘Details’), check which base events they correspond to. Are they truly different events triggered by distinct user actions?
  3. Check tracking implementation: Use GTM Preview or browser developer tools to trace how the base events for the identically counted Key Events are being triggered. Ensure they fire under unique, correct conditions.
  4. Consolidate redundant key events: If multiple Key Event names point to the same essential conversion action due to setup errors, decide on one primary Key Event name and remove/archive the redundant ones in GA4 Admin.

GA4 audit help: personal information checks

Personal Information Sheet

PII in page URLs check

  1. Pass: No email patterns or sensitive parameter names detected in page URLs.
  2. Fail: Found at least one instance of a potential email address or a sensitive parameter name within the query parameters of a page URL. ‘Details’ lists examples.
  1. Review flagged URLs: Examine the URLs listed in ‘Details’. Identify which parameters contain emails or have sensitive names.
  2. Stop collecting PII in URLs: This is critical. Modify your website/app code or CMS configuration to prevent sensitive data (emails, names, IDs, etc.) from ever being included in URL query parameters. Use POST requests for forms, store sensitive data server-side, or use secure methods instead of URL parameters.
  3. Exclude parameters (temporary/partial fix): As a secondary measure while fixing the source, you can exclude the parameter names containing PII from GA4 collection via Admin > Data Settings > Data Collection > URL Query Parameter Exclusions. This only prevents the parameter from being used to define the page, it doesn’t guarantee removal from all GA4 processing if the PII is still being sent.
  4. Use data redaction (advanced): GA4 offers limited text redaction capabilities (Admin > Data Settings > Data Redaction) to attempt to redact email addresses from collected text parameters. Configure this carefully, but prioritize preventing collection in the first place.
  5. Data deletion requests: If PII has already been collected, you may need to submit a data deletion request in GA4 (Admin > Data Requests > Deletion Requests) for the affected time periods and data streams, although this is a complex process.

PII in referral URLs check

  1. Pass: No email patterns detected in referring URLs.
  2. Warn: Found at least one referring URL containing a potential email address pattern. ‘Details’ lists examples. (Status is ‘Warn’ because you don’t directly control the referrer).
  1. Review flagged referrers: Examine the referring URLs listed in ‘Details’.
  2. Add to referral exclusion list: The primary way to handle this is to prevent GA4 from treating these sources as referrals and potentially storing the problematic URL. Go to GA4 Property > Admin > Data Streams > [Select your Web Stream] > Configure tag settings > Show more > List unwanted referrals. Add the domain of the referring site (e.g., problem-referrer.com) to the list. This tells GA4 to treat traffic from this domain essentially as ‘Direct’ traffic, which usually prevents the full problematic referrer URL from being stored prominently.
  3. Contact referring site (optional): If the referrer is a known partner, you could inform them they are exposing PII in their URLs.

Thank You!

Please check your email for the download links to our Ultimate Guide on How to Build a Data Strategy.

P.S. If you don’t see the email in your inbox within a few minutes, please check your spam or junk folder.