All posts

How to Tell if Your GA4 Is Counting Every Pageview Twice

If your GA4 traffic looks great and your sales do not match, there is a boring, common reason worth ruling out first: GA4 might be counting every pageview twice.

It happens more than people think. Someone installs the GA4 tag, then someone else installs it again a few months later, and now every page load fires two events instead of one. Your reports look busier. Your bounce rate looks better. Your engagement time looks worse. And none of it is real.

Here is how to tell if this is happening to you, without needing to be an analytics engineer.

What "counting twice" actually means

Every time someone loads a page on your site, GA4 is supposed to send one page_view event. That single event is the building block for almost everything: sessions, engagement, landing page reports, traffic sources.

When the tag is installed twice, the browser sends that page_view event two times per load. GA4 has no way to know they are duplicates. It counts both. So one real visit becomes two pageviews in your reports.

The knock-on effects are messy:

  • Pageviews and sessions inflate.
  • Engagement rate and bounce rate get distorted.
  • Your average engagement time drops, because half your "views" have zero seconds on them.
  • Any traffic source comparison you make is built on doubled numbers.

The scary part is that everything still looks plausible. Nothing throws an error. You just quietly trust numbers that are wrong.

The 30-second gut check

Open GA4 and go to Reports, then Realtime. Now open your own website in another tab and load one page.

Watch the Realtime report. If you see your single visit register as one active user with one page view, good. If the event count jumps by two for that one page, that is your answer.

This is not a perfect test on its own, but it catches the obvious cases fast. If you see two page_view events from your one load, you almost certainly have the tag installed twice.

The reliable way: use the DebugView or the browser network tab

The gut check is quick but noisy. Here are two cleaner methods.

Option 1: GA4 DebugView

In GA4, go to Admin, then DebugView. To send your own activity there, install the Google Analytics Debugger Chrome extension, turn it on, and load a page on your site.

Watch DebugView. When you load a single page, you should see one page_view event appear. If two page_view events show up back to back from the same load, you have a double count.

Option 2: the browser network tab

This one needs no extensions and works on any browser.

  1. Open your website.
  2. Right click anywhere and choose Inspect, then click the Network tab.
  3. In the filter box, type collect.
  4. Reload the page.

You are looking for requests going to google-analytics.com/g/collect or analytics.google.com/g/collect. Each page_view sends one of these. If you reload once and see two matching requests with the same measurement ID, GA4 is firing twice.

A quick way to read it: click one of the collect requests, look at the details, and find the part that says en=page_view. If you see en=page_view twice for a single page load, that is the double count in plain sight.

Where the double tag usually comes from

Once you confirm it, the next question is why. In almost every case, it is one of these:

The tag is hardcoded and also in Google Tag Manager. Someone pasted the GA4 snippet directly into the site theme, then later set up GA4 through Google Tag Manager too. Now both fire. This is the most common cause on Shopify shops, where the tag can live in the theme, in an app, and in the built-in Google & YouTube channel all at once.

Two GA4 tags in Google Tag Manager. One account, two tags, same measurement ID. Easy to do when more than one person has touched the container.

A theme setting plus a manual install. Shopify has a native spot to drop in a Google Analytics ID. If someone used that and also installed the tag manually, you get two.

An app that adds its own GA4 tag. Plenty of Shopify apps quietly inject tracking. Stack one on top of your existing setup and you are counting twice without ever touching the code yourself.

How to confirm it is truly a duplicate and not two different properties

One thing to check before you rip anything out: make sure both events are going to the same measurement ID. A measurement ID looks like G-XXXXXXXXXX.

In the network tab, each collect request shows a tid value. That is the measurement ID. If both requests share the same tid, they are duplicates hitting one property. If they have different IDs, you are sending data to two separate GA4 properties, which is a different problem and sometimes on purpose.

Same ID, two hits, one page load. That is a true double count.

Why this matters more than it looks

Doubled pageviews feel harmless because the number is just bigger. But your ad decisions ride on top of this data. If you are judging landing pages, comparing campaigns, or reading engagement to decide what to cut, you are reading a funhouse mirror.

And this is the milder version of the problem. We have seen tracking break in ways that go far past a doubled pageview. Our own store, Outer Envy, once reported 67,184 conversions against about 900 real orders. That is a reported 145% conversion rate, which is mathematically impossible, and a reported cost of $0.06 per purchase. We optimized toward those phantom events for 16 months and burned roughly $3,200 a year in paid search chasing them. After the fix, reporting matched the real numbers to the cent.

A double-counted pageview is the same disease, just earlier and quieter. It is worth catching before it grows.

If you find it

Do not delete tags at random. Map out every place GA4 could be firing first: the theme, Google Tag Manager, any Shopify apps, the native Google channel. Then remove all but one source. Confirm with the network tab again. One load should equal one page_view.

If checking all of this yourself sounds like a rabbit hole, that is fair. A AdProof Audit does exactly this: we look at what your tracking is actually counting, then hand you a plain-English report and a short recorded walkthrough. We touch nothing. You just find out whether your numbers are real.