Source: https://measuremy.site/blog/check-if-ga4-is-installed

[measuremy.site](https://measuremy.site/) / [Blog](https://measuremy.site/blog)

# How to check if your Google Analytics 4 tag is installed (and only counting once)

October 10, 2026 · 4 min read

Your GA4 reports look empty, or suspiciously high, or a new site just went live and you want to be sure tracking is on before you announce it. Before digging into report settings, check the simplest thing: is the tag on the page, and is it there exactly once?

## 1. Look in the page source

Open the page, view the source (right-click, then "View page source"), and search for `G-`. A directly installed GA4 tag loads `gtag/js?id=G-XXXXXXX` and runs `gtag('config', 'G-XXXXXXX')`. If you use Google Tag Manager instead, search for `GTM-`; GA4 itself will then be inside the container, not in the source.

Search for `UA-` too. Universal Analytics stopped processing data in July 2023 (July 2024 for paid 360 properties), so a `UA-` tag still on the page does nothing except load extra code.

## 2. Watch the network tab

The source shows that a tag is there; the network tab shows it's sending data. Open the browser's developer tools, go to the Network tab, filter for `collect`, and reload the page. A working GA4 setup sends a request with your measurement ID to Google's collection endpoint. No request usually means a consent banner is holding the tag back (accept it and try again), an ad blocker is stopping it, or the tag is broken.

GA4's own **Realtime** report and **DebugView** show the same thing from the other side; see Google's documentation for turning on debug mode.

## 3. Run a tag checker

The free [analytics tag checker](https://measuremy.site/tools/analytics-tag-checker) reads a page and lists the analytics tools, tag managers and ad pixels it loads, from GA4 and Tag Manager to the Meta and LinkedIn pixels, Hotjar, Clarity, Plausible and others. More usefully, it flags setups that are wrong:

- **Duplicate tags.** The same GA4 tag loaded twice, or `config` run twice for one ID, counts every pageview twice and makes the bounce rate look far better than it is.
- **GA4 loaded both directly and through Tag Manager**, a common leftover from a migration that double counts too.
- **Several IDs for one tool**, often an old property nobody removed.
- **Retired Universal Analytics** code.

It reads the page's HTML as the server sends it, so tags added later by Tag Manager or after a cookie banner is accepted won't show there. For those, the network tab in step 2 is the reliable check.

## Fixing a duplicate tag

Search your theme, plugins and Tag Manager for the measurement ID and keep exactly one copy. On WordPress the usual culprit is a tag pasted in the theme header plus an analytics plugin doing the same job. After removing one, reload with the network tab open and confirm a single page view is sent.

## When the tag is fine but numbers still look wrong

If the tag loads once and sends data, look at what's around it: a consent banner that most visitors dismiss, ad blockers among a technical audience, or campaign links that land in Unassigned (see [why GA4 shows campaign traffic as Unassigned](https://measuremy.site/blog/ga4-unassigned-traffic)). Some sites run a lightweight cookieless tool like measuremy.site alongside GA4 as a cross-check; the gap between the two is a rough measure of what GA4 is missing.

### See it on your own site

measuremy.site is cookieless analytics your coding agent can read. 30-day free trial, no card. Plans from $9/month.

[Start free trial](https://measuremy.site/login) [See the live demo](https://measuremy.site/share/measuremy.site)

Add measuremy.site analytics to this project: connect the measuremy.site MCP server at https://a.measuremy.site/mcp (it signs in with OAuth, no key), then tell me how to sign in. Details: measuremy.site/llms.txt

## Free tools

- [Analytics tag checker](https://measuremy.site/tools/analytics-tag-checker): Which analytics and pixels a site runs, plus duplicate and broken tags.
- [Free UTM link builder](https://measuremy.site/tools/utm-link-builder): Add utm_source, medium and campaign to any link.
- [Website traffic checker](https://measuremy.site/tools/website-traffic-checker): A site's popularity rank and estimated monthly visits.

[All free tools](https://measuremy.site/tools)

## More from the blog

- [How to calculate your website conversion rate, and what to compare it to](https://measuremy.site/blog/calculate-website-conversion-rate)
- [Is my A/B test result significant? A plain-English guide with a worked example](https://measuremy.site/blog/is-my-ab-test-significant)
- [What is bounce rate, how is it calculated, and is yours a problem?](https://measuremy.site/blog/what-is-bounce-rate)
- [How to add a visitor counter to your website or GitHub README](https://measuremy.site/blog/add-visitor-counter-to-website)
- [How much traffic does a website get? How to estimate any site's visits](https://measuremy.site/blog/how-much-traffic-does-a-website-get)
- [How to track QR code scans: count them, and see which poster worked](https://measuremy.site/blog/track-qr-code-scans)
- [How to see how many people clicked your link (without a paid shortener)](https://measuremy.site/blog/how-many-people-clicked-my-link)
- [Why GA4 shows your campaign traffic as Unassigned (and how to fix the links)](https://measuremy.site/blog/ga4-unassigned-traffic)
- [Does your redirect keep your UTM tags? How to check before a campaign goes out](https://measuremy.site/blog/redirect-drops-utm-tags)
- [How I built a self-hosted analytics MCP server on Cloudflare Workers and D1](https://measuremy.site/blog/analytics-mcp-server-cloudflare-workers)
- [UTM tracking explained: what the parameters mean and how to use them](https://measuremy.site/blog/utm-tracking-explained)
- [Conversion funnel analysis for small sites: a practical guide](https://measuremy.site/blog/conversion-funnel-analysis)
- [Sudden drop in website traffic? A checklist for finding the cause](https://measuremy.site/blog/sudden-drop-in-website-traffic)
- [What is an MCP server? A plain-English guide for people who run websites](https://measuremy.site/blog/what-is-an-mcp-server)
- [What Is the Urchin Tracking Module?](https://measuremy.site/blog/what-is-the-urchin-tracking-module-and-why-utm-stuck-around)
- [What Microsoft MCP servers actually do](https://measuremy.site/blog/microsoft-mcp-servers-explained)
- [UTM parameters for email newsletters](https://measuremy.site/blog/utm-parameters-for-email-newsletters)
- [Track Button Clicks Without Google Tag Manager](https://measuremy.site/blog/how-to-track-clicks-on-a-button-without-google-tag-manager)
- [How to track the results of a social media post without cookies](https://measuremy.site/blog/how-to-measure-the-results-of-a-social-media-post)
- [How to track traffic from a GitHub README](https://measuremy.site/blog/how-to-track-traffic-from-a-github-readme)
- [How to measure a product launch without guessing](https://measuremy.site/blog/how-to-measure-a-product-launch)
