Implementation Audit

How to Check if Google Analytics is Installed

A complete walkthrough — from a 30-second page source check to network-level request inspection — for verifying your GA4 tracking code is live, firing correctly, and not duplicating data.

5 Verification Methods Covers GA4 & GTM Duplicate Detection
The Quick Answer

There are five reliable ways to confirm GA4 is installed:

  1. Search the page source for your Measurement ID (G-XXXXXXXX)
  2. Inspect Network requests in Chrome DevTools for /g/collect calls
  3. Check the GA4 Realtime Report for live hits
  4. Use GA4 DebugView for granular event-level confirmation
  5. Record a session with Google Tag Assistant

Use all five in combination. Each catches different failure modes. No single method is sufficient on its own.

01  Why This Check Matters

Before you can trust any report, any conversion figure, or any attribution model, you need to confirm that your GA4 tracking code is actually installed — and that it is installed correctly. This sounds obvious, but analytics audits consistently reveal that a large proportion of websites contain at least one tracking configuration issue.

The most damaging scenario is not a missing tag. It is a duplicate tag — one that inflates every metric silently while dashboards continue to populate with numbers that look plausible. Teams make budget decisions on that data. The errors compound.

Method 01

View Page Source

The fastest first check for sites using a direct gtag.js installation. It will not reveal tags deployed through Google Tag Manager, but it immediately surfaces hardcoded snippets and — critically — duplicate Measurement IDs.

How to do it

  1. Open the page source — In Chrome or Firefox, press Ctrl+U (Windows) or Cmd+U (Mac). The raw HTML of the page opens in a new tab.
  2. Search for your Measurement ID — Press Ctrl+F and search for ‘G-‘ (the prefix of every GA4 Measurement ID). You can also search for ‘gtag/js’ or ‘googletagmanager.com/gtm.js’.
  3. Interpret the result — One match is correct. Zero matches means either GTM is being used or GA4 is not installed. Two or more matches of the same ID is a duplicate — fix immediately.

What a correct direct installation looks like

HTML — <head> section
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXXXXX');
</script>
⚠️
Warning — Placement Matters The GA4 snippet must sit inside the <head> tag, not the <body>. A snippet placed in the body loads after the page begins rendering, which means early user interactions can be missed and page_view events may fire with incomplete page data.

When page source shows nothing

If you find no ‘G-‘ reference, it does not necessarily mean GA4 is absent. Google Tag Manager deploys tags through JavaScript at runtime — they do not appear in the static HTML source. Search instead for ‘GTM-‘ or ‘googletagmanager.com/gtm.js’. If GTM is present, move to the network-level methods below.

Method 02

Chrome DevTools Network Tab

This is the most reliable method and the one professional analytics auditors use as standard. It works regardless of whether GA4 is installed directly or through GTM, and it reveals duplicate tracking that the page source check cannot.

Step-by-step

  1. Open DevTools — Press F12 or Cmd+Option+I. Click the Network tab.
  2. Filter by ‘collect’ — In the filter bar, type ‘collect’. This surfaces only GA4 data collection requests, filtering out all other network activity.
  3. Reload the page — Hard reload with Ctrl+Shift+R to clear cache and trigger a fresh page load.
  4. Inspect the request — Look for a request to https://www.google-analytics.com/g/collect. Click it and examine the Payload tab to confirm your Measurement ID and the event type.

Reading the request payload

GA4 Network Request — Payload
// GA4 data collection endpoint
https://www.google-analytics.com/g/collect?v=2&tid=G-XXXXXXXXXX

// Key parameters to verify:
v=2               // GA4 protocol version (must be 2, not 1)
tid=G-XXXXXXXXXX  // Measurement ID — confirm this matches your property
en=page_view      // Event name — should be page_view on load
dl=https://...    // Document location (full URL)
dt=Page+Title     // Document title
gcd=11l3l3...     // Consent Mode state string
💡
Pro Tip — Detecting Duplicates via Network On a single page load, count how many /g/collect requests appear. One is correct. Two or more page_view requests for the same URL confirms duplicate tracking. This is the definitive duplicate detection test — more reliable than any other method.

Reading the Consent Mode GCD parameter

While in the Network tab, check the gcd= parameter. This tells you whether Consent Mode is active and what state it is in:

Letter Meaning What to do
p Granted by default Consent was pre-granted before user interaction
r Denied by default Correct — user has not yet consented
l Granted after interaction User clicked Accept — consent updated correctly
m Denied after interaction User declined — cookieless ping is firing
X Not set Problem — that consent type was never declared

If gcd= is absent entirely, Consent Mode is not implemented on this site.

Method 03

GA4 Realtime Report

The Realtime report in GA4 confirms that data is arriving at the property — not just that a request was sent from the browser. A network request can be sent but rejected if the Measurement ID is wrong, the property is disabled, or the data stream is misconfigured.

How to use it

  1. Open GA4 and navigate to Realtime — In Google Analytics, go to Reports > Realtime. This shows live activity in the last 30 minutes.
  2. Load a page on your site — Open your website in a separate tab or window. Navigate through a few pages to generate events.
  3. Confirm data arrives — Within 5–10 seconds, you should see your session appear. The Event Count panel should show page_view events incrementing.
⚠️
Warning — Watch For This If a single page load causes page_view to appear twice in the Realtime Event Count, you have duplicate tracking. Fix it before running any other audit step — a property with duplicate page_view tracking cannot produce reliable session counts, bounce rate, engagement rate, or attribution data.
Method 04

GA4 DebugView

DebugView is a real-time event stream from a single device that shows every event, every parameter, and the exact sequence in which they fire. It is the most granular verification tool available and the one to use when checking custom events, parameter values, and ecommerce data.

How to enable it

  • Via Google Tag Assistant: Install the Chrome extension and click ‘Connect’. This automatically enables debug mode for your browser session without any code changes.
  • Via GTM Preview Mode: Launch GTM Preview Mode on your site. This activates debug mode automatically and sessions will appear in DebugView.
  • Via URL Parameter: Append ?gtm_debug=x to your URL. Works if GTM is installed, even without the browser extension.
  • Via GA4 Admin: Navigate to Admin > DebugView. Once a debug session is active in the browser, events stream in live under your device.

What to look for in DebugView

A clean, correctly installed GA4 property on a standard page load shows exactly this event sequence: one page_view, followed by a user_engagement event as the user interacts. Every custom event you trigger — a button click, form submission, product view — should appear within 2–3 seconds.

Common problems visible in DebugView: duplicate page_view events firing on a single load, events missing expected parameters (appearing with (not set) values), and events firing on page load when they should only fire on interaction.

Method 05

Google Tag Assistant

Google Tag Assistant records an entire user session and produces a tag-by-tag report of what fired, what did not, and what errors were detected. It is particularly useful for auditing checkout flows, multi-step forms, and ecommerce funnels.

  1. Install the Chrome extension — Search ‘Google Tag Assistant’ in the Chrome Web Store and install it.
  2. Start recording — Navigate to your website. Click the Tag Assistant icon and select Record. A new browser window opens connected to your site.
  3. Complete the user journey — Navigate through the pages and interactions you want to audit — add a product to cart, complete a form, move through the checkout.
  4. Review the report — End the recording and review which tags fired on each page. GA4 tags should fire once per page. Red or orange indicators signal errors.
💡
Pro Tip — GTM Preview Mode For sites using Google Tag Manager, GTM Preview Mode gives you the same tag-by-tag view as Tag Assistant but with additional detail: it shows exactly which triggers activated, which variables resolved, and the order tags fired. Use it when the question is not just ‘did the tag fire’ but ‘why did it fire’ or ‘why did it not fire’.

Detecting

Duplicate Tracking

Duplicate tracking is the single most common GA4 implementation error. It inflates page views, sessions, and events — making all downstream analysis unreliable — while producing no obvious error messages. The numbers still look reasonable, which is what makes it so dangerous.

The most common causes

Cause How it happens Detection method
CMS plugin + GTM both active A WordPress plugin injects GA4 directly while GTM also fires a GA4 tag Page source shows both gtag/js?id= and gtm.js
Two GA4 Config Tags in GTM Someone added a second Configuration Tag without removing the first GTM Preview Mode shows two GA4 config tags firing
Enhanced Measurement + GTM page_view Enhanced Measurement auto-fires page_view, and GTM also has a page_view tag DebugView shows two page_view events per navigation
Legacy UA tag pushing to GA4 Old Universal Analytics tag was converted but original GA4 tag remained Two /g/collect requests in DevTools Network tab
Tag set to ‘Once per Event’ Tag fires multiple times when its trigger event fires more than once GTM Preview Mode shows same tag firing 2+ times

What duplication does to your data

Sessions inflate
Repeated page_view events can trigger new session logic, creating phantom sessions from real users.
Engagement rate breaks
Engagement time is calculated per event stream; duplicated events distort this across all pages.
Attribution corrupts
Attribution models receive incorrect touchpoints, miscrediting traffic sources.
Landing page analysis fails
Pages per session, bounce rate, and landing page reports all depend on correct page_view sequencing.

Checklist

Quick Verification Checklist

Run through this checklist after any new GA4 installation, after a website redesign, after adding or changing a CMS plugin, or when you notice unexpected data anomalies.

Installation confirmed

  • Page source contains one instance of the correct Measurement ID (or GTM container ID)
  • Chrome DevTools Network tab shows exactly one /g/collect request per page load
  • GA4 Realtime Report shows live sessions when browsing the site
  • DebugView shows page_view firing once per page, not twice
  • Tag Assistant records confirm GA4 tag fires on all key pages

No duplicates

  • Only one GA4 Configuration Tag exists in the GTM container
  • Enhanced Measurement page_view toggle is OFF if GTM has a custom page_view tag
  • No CMS plugin is injecting GA4 alongside GTM
  • Realtime Report does not show two page_view events per navigation

Data arriving correctly

  • Measurement ID in network requests matches the property’s Measurement ID exactly
  • page_location parameter contains the full URL with protocol (https://)
  • page_title is populated and matches the page’s actual title tag
  • Custom events fire on interaction, not on page load
  • Consent Mode gcd= parameter is present and shows no X values

Settings confirmed

  • Data retention is set to 14 months (not the 2-month default)
  • Timezone and currency match your business settings
  • Internal traffic filter is active
  • Referral exclusions include your payment gateway domains
🚨
Critical — Do This Today Navigate to Admin > Data Collection and Modification > Data Retention and change the setting from 2 months to 14 months. GA4 defaults to 2 months of event-level data. Every month you delay, you permanently lose data that cannot be recovered.

Part of the Complete GA4 Audit Guide  ·  Implementation  ·  Configuration  ·  Data Validation  ·  Consent Mode

Quick Fix Request

Tell us about your tracking issue and we’ll get it resolved fast.