{"id":146,"date":"2025-12-28T15:32:54","date_gmt":"2025-12-28T14:32:54","guid":{"rendered":"https:\/\/ga4-auditor.dev\/2025\/12\/28\/ga4-auditor-features-test-catalog\/"},"modified":"2026-01-26T17:52:57","modified_gmt":"2026-01-26T16:52:57","slug":"ga4-auditor-features-test-catalog","status":"publish","type":"post","link":"https:\/\/ga4-auditor.dev\/en\/2025\/12\/28\/ga4-auditor-features-test-catalog\/","title":{"rendered":"GA4 Auditor \u2013 Features &amp; Test Catalog"},"content":{"rendered":"\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>Technicians usually want two things: first, to quickly identify whether a GA4 property is &#8220;healthy,&#8221; and second, to clearly isolate the causes. The GA4 Auditor is built precisely for this purpose. <\/p>\n\n\n\n<p>The app combines three types of checks:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Health Checks<\/strong>: quick GA4 setup and data quality checks based on the GA4 APIs<\/li>\n\n\n\n<li><strong>Traffic Light Checks<\/strong>: compressed Pass, Warning, Fail assessment focusing on BigQuery raw data checks<\/li>\n\n\n\n<li><strong>SST Analysis<\/strong>: technical assessment of whether server-side tracking makes sense and where it is measurably failing today<\/li>\n<\/ul>\n<\/div><\/section>\n\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">Data Sources and Limits<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">GA4 APIs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GA4 Admin API<\/strong>: Configuration and setup such as Streams, Enhanced Measurement, Key Events, Google Ads Linking, BigQuery Linking, Custom Definitions, Annotations<\/li>\n\n\n\n<li><strong>GA4 Data API<\/strong>: aggregated metrics and dimensions for plausibility checks such as channel shares, PageTitle patterns, e-commerce signals, site search<\/li>\n<\/ul>\n\n\n\n<p>Important: The Data API is often delayed. Therefore, some checks are deliberately not based on the last few days to ensure the assessment remains stable. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\">BigQuery Export<\/h3>\n\n\n\n<p>If the BigQuery Export is active, the app uses raw data from the export. This enables deep checks such as PII hints, duplicates, query parameter patterns, payment referrals, or funnel consistency. <\/p>\n<\/div><\/section>\n\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">Status Logic in Practice<\/h2>\n\n\n\n<p>Most checks fall into one of three classes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pass<\/strong>: No anomalies or sufficiently good data situation<\/li>\n\n\n\n<li><strong>Warning<\/strong>: Recognizable risk or incomplete setup that often leads to incorrect reports<\/li>\n\n\n\n<li><strong>Fail<\/strong>: High probability of a real tracking or data problem<\/li>\n<\/ul>\n\n\n\n<p>Whether a check is count-based or share-based can be seen from the signal: either &#8220;Number of affected events&#8221; or &#8220;Percentage share.&#8221;<\/p>\n<\/div><\/section>\n\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">Complete Check Overview as a Table<\/h2>\n\n\n\n<p>The table is structured so that you can use it directly as a technical reference. It describes per check: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Area<\/strong>: Health, Traffic Light, or SST<\/li>\n\n\n\n<li><strong>Data Source<\/strong>: Admin API, Data API, or BigQuery Export<\/li>\n\n\n\n<li><strong>Signal<\/strong>: what is specifically measured<\/li>\n\n\n\n<li><strong>Typical Causes<\/strong>: common technical reasons<\/li>\n\n\n\n<li><strong>Recommended Actions<\/strong>: next sensible steps<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Area<\/th><th>Check<\/th><th>Data Source<\/th><th>Signal<\/th><th>Typical Causes<\/th><th>Recommended Actions<\/th><\/tr><\/thead><tbody><tr><td>Health<\/td><td>Streams Available<\/td><td>Admin API<\/td><td>At least one stream exists<\/td><td>Property incomplete, migration not yet finished<\/td><td>Create stream, check tagging, verify data flow in real-time<\/td><\/tr><tr><td>Health<\/td><td>Enhanced Measurement active<\/td><td>Admin API<\/td><td>Enhanced Measurement is active for web<\/td><td>deliberately deactivated, incorrect stream configured<\/td><td>Check stream settings, only activate required auto-events<\/td><\/tr><tr><td>Health<\/td><td>Key Events Available<\/td><td>Admin API<\/td><td>At least one key event is defined<\/td><td>Goals not maintained, historically only conversions used<\/td><td>Define core goals and mark as key events<\/td><\/tr><tr><td>Health<\/td><td>Google Ads Linking Available<\/td><td>Admin API<\/td><td>At least one Ads link<\/td><td>missing permissions, linking never set up<\/td><td>Establish linking, check product links and permissions<\/td><\/tr><tr><td>Health<\/td><td>BigQuery Export Linked and Reachable<\/td><td>Admin API<\/td><td>BigQuery Linking available and reachable<\/td><td>Dataset Location, IAM, Export not active<\/td><td>Set up linking, set IAM cleanly, check export status<\/td><\/tr><tr><td>Health<\/td><td>Annotations Available<\/td><td>Admin API<\/td><td>Data Annotations exist<\/td><td>Governance missing, no release notes in reporting<\/td><td>Annotate deployments, campaigns, and tracking changes<\/td><\/tr><tr><td>Health<\/td><td>Custom Definitions Available<\/td><td>Admin API<\/td><td>Custom Dimensions or Metrics exist<\/td><td>Parameter not registered, data unreadable in the UI<\/td><td>Register relevant parameters as custom definitions<\/td><\/tr><tr><td>Health<\/td><td>Basic Events Available<\/td><td>Data API<\/td><td>session_start and page_view are available<\/td><td>Tag not firing, consent blocked, incorrect stream<\/td><td>Check tagging and consent, use DebugView and Realtime<\/td><\/tr><tr><td>Health<\/td><td>Direct Share Plausible<\/td><td>Data API<\/td><td>Direct share is increased or stable<\/td><td>UTMs missing, redirects lose parameters, consent effects<\/td><td>Check UTM governance, redirect chain, referrer policy<\/td><\/tr><tr><td>Health<\/td><td>Unassigned Share Plausible<\/td><td>Data API<\/td><td>Share of Unassigned or Other is increased<\/td><td>Channel rules missing, source medium inconsistent<\/td><td>Check UTM standards, channel definitions, campaign links<\/td><\/tr><tr><td>Health<\/td><td>PageTitle not set Share<\/td><td>Data API<\/td><td>Share of PageTitle not set<\/td><td>SPA sets title too late, tracking timing, consent timing<\/td><td>Fix SPA title handling, virtual pageviews, debug timing<\/td><\/tr><tr><td>Health<\/td><td>PageTitle Contains 404 Share<\/td><td>Data API<\/td><td>Share of PageTitle with 404 patterns<\/td><td>broken links, missing redirects<\/td><td>Identify 404 URLs, set redirects, fix internal links<\/td><\/tr><tr><td>Health<\/td><td>Traffic Source not set Share<\/td><td>Data API<\/td><td>Share of sessionSource not set<\/td><td>UTMs missing, referrer lost, consent mode<\/td><td>Check UTM obligation, redirects, consent implementation<\/td><\/tr><tr><td>Health<\/td><td>E-Commerce Plausibility<\/td><td>Data API<\/td><td>Add to Cart and Purchase signals match<\/td><td>Checkout events missing, purchase duplicated, value missing<\/td><td>E-commerce event plan, purchase params, QA via debug and BQ<\/td><\/tr><tr><td>Health<\/td><td>Site Search Usage<\/td><td>Data API<\/td><td>Search terms appear<\/td><td>Enhanced Measurement off, view_search_results missing<\/td><td>Activate or correctly map site search tracking<\/td><\/tr><tr><td>Traffic Light<\/td><td>Demographics and Interests<\/td><td>Admin API<\/td><td>Google Signals are active or plausible<\/td><td>Signals deliberately off, consent setup<\/td><td>Make decision, activate signals if desired, check consent<\/td><\/tr><tr><td>Traffic Light<\/td><td>Not set Pages<\/td><td>BigQuery Export<\/td><td>Number of pages with not set indicator<\/td><td>SPA timing, title never set<\/td><td>Improve title handling, check pageview timing<\/td><\/tr><tr><td>Traffic Light<\/td><td>Broken Pages<\/td><td>BigQuery Export<\/td><td>Number of error page indicators<\/td><td>404, campaign links, old URLs<\/td><td>Redirects, link hygiene, monitoring<\/td><\/tr><tr><td>Traffic Light<\/td><td>Enhanced Measurement<\/td><td>Admin API<\/td><td>Enhanced Measurement active<\/td><td>incorrectly configured<\/td><td>Check stream settings, consciously control auto events<\/td><\/tr><tr><td>Traffic Light<\/td><td>Query Parameters<\/td><td>BigQuery Export<\/td><td>Conspicuous parameter accumulation<\/td><td>PII in URL, IDs, redirects<\/td><td>Clean up parameters, remove PII, define URL strategy<\/td><\/tr><tr><td>Traffic Light<\/td><td>PII Hints<\/td><td>BigQuery Export<\/td><td>Hits for PII patterns<\/td><td>Email, phone, name in URL or referrer<\/td><td>Stop leaks, logging, redirects, check consent texts<\/td><\/tr><tr><td>Traffic Light<\/td><td>Engagement Rate Anomalies<\/td><td>BigQuery Export<\/td><td>Session consistency conspicuous<\/td><td>Bot traffic, duplicate pageviews, trigger loops<\/td><td>Check bot filter, trigger audit, consent and SPA setup<\/td><\/tr><tr><td>Traffic Light<\/td><td>Custom Events Quality<\/td><td>BigQuery Export<\/td><td>Conspicuous custom event patterns<\/td><td>Event naming chaotic, unexpected volumes<\/td><td>Define event plan, maintain expected events, versioning<\/td><\/tr><tr><td>Traffic Light<\/td><td>Custom Event Value Missing<\/td><td>BigQuery Export<\/td><td>Events without value<\/td><td>Value not set, incorrect param names<\/td><td>Param standardization, set value and currency<\/td><\/tr><tr><td>Traffic Light<\/td><td>Key Events<\/td><td>Admin API<\/td><td>Key events available or not<\/td><td>Governance missing<\/td><td>Define key events, determine naming and ownership<\/td><\/tr><tr><td>Traffic Light<\/td><td>Conversion Value Missing<\/td><td>BigQuery Export<\/td><td>Purchases without value<\/td><td>Value not mapped, backend not sending<\/td><td>Validate purchase value and currency server-side<\/td><\/tr><tr><td>Traffic Light<\/td><td>Content Grouping<\/td><td>BigQuery Export<\/td><td>Content groups are not cleanly populated<\/td><td>Taxonomy missing, parameter not set<\/td><td>Define content taxonomy, send parameters consistently<\/td><\/tr><tr><td>Traffic Light<\/td><td>Internal Site Search<\/td><td>BigQuery Export<\/td><td>Search events and terms available<\/td><td>Search not tracked<\/td><td>Implement view_search_results or own search event cleanly<\/td><\/tr><tr><td>Traffic Light<\/td><td>Custom Audience<\/td><td>Admin API<\/td><td>Audiences exist<\/td><td>no remarketing setup<\/td><td>Define basic audiences, plan segmentation<\/td><\/tr><tr><td>Traffic Light<\/td><td>User ID Coverage<\/td><td>BigQuery Export<\/td><td>Share of user_id events<\/td><td>Login missing, user_id not set<\/td><td>user_id strategy, set and clear on login logout<\/td><\/tr><tr><td>Traffic Light<\/td><td>Self Referrals<\/td><td>BigQuery Export<\/td><td>Own domain as referrer<\/td><td>Cross domain broken, checkout, payment flows<\/td><td>Check referral exclusions, cross domain setup, linker<\/td><\/tr><tr><td>Traffic Light<\/td><td>Unassigned or Other Traffic<\/td><td>BigQuery Export<\/td><td>Share unassigned or other<\/td><td>UTMs missing, channel rules<\/td><td>UTM governance, channel rules, campaign links<\/td><\/tr><tr><td>Traffic Light<\/td><td>Direct Channel Share<\/td><td>BigQuery Export<\/td><td>Direct share high<\/td><td>UTMs missing, redirects, consent<\/td><td>Link strategy, UTM obligation, fix redirects<\/td><\/tr><tr><td>Traffic Light<\/td><td>Custom Campaigns<\/td><td>BigQuery Export<\/td><td>Campaign inconsistencies<\/td><td>Source medium conflicts, gclid, auto tagging<\/td><td>Naming standard, check auto tagging, channel definitions<\/td><\/tr><tr><td>Traffic Light<\/td><td>Google Ads Linking<\/td><td>Admin API<\/td><td>Ads links available<\/td><td>missing linking, incorrect account<\/td><td>Establish linking, check rights, transfer key events to Ads<\/td><\/tr><tr><td>Traffic Light<\/td><td>Not set Campaigns<\/td><td>BigQuery Export<\/td><td>Share of campaigns missing<\/td><td>utm_campaign missing, redirects<\/td><td>UTM obligation, link builder, redirect chain<\/td><\/tr><tr><td>Traffic Light<\/td><td>Ecommerce Tracking<\/td><td>BigQuery Export<\/td><td>Purchase schema errors<\/td><td>transaction_id missing, items missing<\/td><td>Validate purchase payload, QA and unit tests in tagging<\/td><\/tr><tr><td>Traffic Light<\/td><td>Ecommerce Revenue<\/td><td>BigQuery Export<\/td><td>Revenue null or zero<\/td><td>value not set, currency missing<\/td><td>Set value and currency correctly, validate backend<\/td><\/tr><tr><td>Traffic Light<\/td><td>Duplicate Transactions<\/td><td>BigQuery Export<\/td><td>duplicate purchases<\/td><td>Reload Thank You, trigger duplicated, hybrid SST<\/td><td>Dedupe via transaction_id, trigger audit, event idempotency<\/td><\/tr><tr><td>Traffic Light<\/td><td>Payment Referrals<\/td><td>BigQuery Export<\/td><td>Payment domains as referrer<\/td><td>Checkout domain change, payment provider<\/td><td>Check referral exclusions, cross domain setup, return URL<\/td><\/tr><tr><td>Traffic Light<\/td><td>Enhanced Ecommerce Funnel<\/td><td>BigQuery Export<\/td><td>Funnel inconsistencies<\/td><td>Events missing or incorrect order<\/td><td>Funnel event plan, consolidate implementation<\/td><\/tr><tr><td>SST<\/td><td>Browser Impact<\/td><td>Data API<\/td><td>Differences Safari vs Chrome in conversion signals<\/td><td>ITP, cookie limits, consent mode<\/td><td>First party strategy, consent audit, SST evaluation<\/td><\/tr><tr><td>SST<\/td><td>Attribution Quality<\/td><td>Data API<\/td><td>unattributed share, browser gap<\/td><td>UTMs missing, referrer lost, domain change<\/td><td>UTMs, redirects, cross domain, consent setup<\/td><\/tr><tr><td>SST<\/td><td>Mobile Impact<\/td><td>Data API<\/td><td>iOS vs Android differences<\/td><td>ATT, SDK setup, consent<\/td><td>Check mobile tracking, consent, server-side supplementation<\/td><\/tr><tr><td>SST<\/td><td>New vs Returning<\/td><td>Data API<\/td><td>Returning rate gap browser<\/td><td>Cookie Lifetime<\/td><td>Improve identity, check login, user_id, SST<\/td><\/tr><tr><td>SST<\/td><td>Session Quality<\/td><td>Data API<\/td><td>Engagement differences browser<\/td><td>Tracking breaks in sessions<\/td><td>Trigger audit, SPA setup, consent handling<\/td><\/tr><tr><td>SST<\/td><td>Key Event Attribution<\/td><td>Data API<\/td><td>Key events without clean sources<\/td><td>Channel attribution problems<\/td><td>Check UTMs, cross domain, consent, Ads linking<\/td><\/tr><tr><td>SST<\/td><td>Cross Domain Tracking<\/td><td>Data API<\/td><td>multiple domains and hostname patterns<\/td><td>Linker missing, checkout domain change<\/td><td>Cross domain setup, referral exclusions, tagging on subdomains<\/td><\/tr><tr><td>SST<\/td><td>SST Detection<\/td><td>BigQuery Export<\/td><td>Patterns in client identifier indicate SST<\/td><td>Hybrid setup, only parts server-side<\/td><td>Check data flow, increase coverage or clearly delineate<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div><\/section>\n\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">BigQuery Reports in the App<\/h2>\n\n\n\n<p>In addition to the checks, there are BigQuery reports that are intended for root cause analysis. Typical examples: <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Missing Events<\/strong>: checks expected events against the actual event landscape<\/li>\n\n\n\n<li><strong>Duplicate Events<\/strong>: shows duplicates and exceptions for controlled deduping<\/li>\n\n\n\n<li><strong>E-Commerce Reports<\/strong>: transactions, revenue, funnel, error categories<\/li>\n\n\n\n<li><strong>Hourly Trends<\/strong>: hourly trends as a debugging aid after deployments<\/li>\n<\/ul>\n<\/div><\/section>\n\n<section class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h2 class=\"wp-block-heading\">How to Use the Result Meaningfully<\/h2>\n\n\n\n<p>A good workflow for technicians:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Start in the overview to quickly see if the setup and data basis are fundamentally correct<\/li>\n\n\n\n<li>Go deeper with warnings and fails in BigQuery because the raw data almost always makes the cause visible<\/li>\n\n\n\n<li>Use the SST area for attribution, browser gaps, and consent effects to assess impact and priority<\/li>\n<\/ul>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"<p>Technicians usually want two things: first, to quickly identify whether a GA4 property is &#8220;healthy,&#8221; and second, to clearly isolate the&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_swpsp_post_exclude":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","slim_seo":{"title":"GA4 Auditor \u2013 Features &amp; Test Catalog - GA4 Auditor","description":"Technicians usually want two things: first, to quickly identify whether a GA4 property is \"healthy,\" and second, to clearly isolate the causes. The GA4 Auditor"},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-nicht-kategorisiert"],"taxonomy_info":{"category":[{"value":1,"label":"Nicht kategorisiert"}]},"featured_image_src_large":false,"author_info":{"display_name":"Bernhard Prange","author_link":"https:\/\/ga4-auditor.dev\/en\/author\/masterben\/"},"comment_info":0,"category_info":[{"term_id":1,"name":"Nicht kategorisiert","slug":"nicht-kategorisiert","term_group":0,"term_taxonomy_id":1,"taxonomy":"category","description":"","parent":0,"count":8,"filter":"raw","cat_ID":1,"category_count":8,"category_description":"","cat_name":"Nicht kategorisiert","category_nicename":"nicht-kategorisiert","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":2,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":369,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/posts\/146\/revisions\/369"}],"wp:attachment":[{"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ga4-auditor.dev\/en\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}