GA4 counting two page views per visit? The causes in 792 sites
GA4 records two page_view events for one visit when the same measurement ID is installed twice: once in the page code (often by a tool integration such as HubSpot's or WordPress Site Kit) and once in GTM, or in two Google tags inside one GTM container, or when a GA4 event tag named page_view fires on top of a Google tag that already sends one. On 5 Nov 2026 we read the public setup of 792 sites that load GA4: 123 (15.5%) had one of these, and in a live check 7 of 15 sampled sites sent the page view twice. 100 of the 123 load only one GA4 ID, so a "two properties" check misses them. Check yours in DevTools: filter on collect? and count the en=page_view hits for one page load.
How many sites send page_view twice?
On 5 Nov 2026 we took the 981 sites that load GA4 in our 1,727-site study, fetched each homepage again (robots.txt checked, 971 answered) and read the GTM containers it loads. 792 showed a GA4 measurement ID on the homepage. For each ID we counted the places that send a page_view for it.
| Setup that can send page_view twice for one GA4 ID (5 Nov 2026) | Sites | Share of 792 |
|---|---|---|
| Same ID in the page code and in a GTM Google tag | 59 | 7.4% |
| Same ID in two Google tags in GTM (55 in one container) | 58 | 7.3% |
A GA4 event tag named page_view on a page-load trigger, on top of a Google tag that sends one | 12 | 1.5% |
| Any of the three | 123 | 15.5% (95% CI 13.2 to 18.2) |
The rate is close across segments: 15.9% of 618 B2B SaaS sites, 14.4% of 132 agency sites, 14.3% of 42 ecommerce sites (too few to read on their own). Two more setups can send a second page_view but depend on settings we can't see, so they are not in the 15.5%: a Google tag that sends page_view on two triggers and isn't set to fire once per page (53 sites, 6.7%), and a Google tag or page_view tag on a History Change trigger (38 sites, 4.8%).
The finding is not the same as "two GA4 properties". 138 of the 792 sites (17.4%) load two or more different IDs, and each property then gets its own single page view. Of the 123 sites with a double, 100 load only one ID. Our two GA4 properties check covers the other case.
We also loaded 25 of the 123 flagged homepages, picked at random, in headless Chromium on 5 Nov 2026 from a US address, without clicking the cookie banner, and counted the GA4 hits. 10 sent no GA4 hit before a click. Of the 15 that did, 7 sent the same ID's page_view two or three times for one load, and 8 sent it once. As a control we loaded 5 unflagged sites with one GA4 ID: 4 sent one page view, 1 sent none. So read the 15.5% as "has two sources". About half of those we could measure without a click double-count on the homepage.
Why does GA4 record two page_view events?
Google's own page says it plainly: the Google tag's config command "sends a pageview by default", and "if you send manual pageviews without disabling pageview measurement, you may end up with duplicate pageviews" (Google: measure pageviews). Every cause below is a second thing that sends one.
- A CMS or marketing tool adds GA4, and GTM adds it again. We re-read the page code of the 59 sites with the ID in both places (58 answered). The page copy came from HubSpot's GA4 integration on 13 (marked
Added by GoogleAnalytics4 integration), from a WordPress plugin on 9 (Site Kit on 7), from a first-party Google tag snippet served through the site's CDN on 9 (google_tags_first_party), and from a hand-writtengtagsnippet or a source we couldn't name on 27. Whoever set up GTM later often didn't know the other install was on. - Two Google tags with the same ID in one container. Usually an old "GA4 Configuration" tag that was migrated to a Google tag, or a copy made for testing, with both left on All Pages.
- A GA4 event tag sending
page_view. Someone adds an event tag calledpage_viewto send extra parameters, but leavessend_page_viewon in the Google tag. Google's guidance is to turn the automatic one off when you send your own. - A Google tag on two triggers. For example All Pages plus a consent update event, or All Pages plus a custom event. With the tag firing option at "Once per event" it fires on each. "Once per page" stops that.
- Single page apps. Enhanced Measurement's page view option also sends a
page_viewon browser history changes (pushState, popState, replaceState), and it is on by default. A Google tag or page_view tag on a GTM History Change trigger on top of that counts each route change twice. Google notes that Enhanced Measurement sends history page views "even if you set"send_page_view: false(Google: enhanced measurement).
How do I check for duplicate page views in 2 minutes?
- Open your site in a private window with DevTools, Network tab, Preserve log on. Filter on
collect?. - Accept the cookie banner if you have one, then reload.
- Count the requests to
google-analytics.com/g/collect(or your first-party collector) that carryen=page_view. Checktid=on each: that is the measurement ID. Some hits batch several events in the request body, so open the Payload tab too. - One page load should give one
page_viewper ID. Two with the sametidis a double. - Find the second source: search the page source (Ctrl+U) for
gtag('config'andgtag/js?id=G-. In GTM, filter Tags on "Google tag" and on "GA4 Event" and read the measurement IDs and event names. - For a single page app, click to another route and count again. One page_view per route change.
GA4's DebugView shows the same thing per event if you'd rather not read URLs (Google: DebugView). Tag Assistant also lists each Google tag on the page (Google: tag diagnostics).
What does a double page_view break?
| Report or setting | What happens with two page_views per load |
|---|---|
| Views, views per session | Doubled. Sessions and users don't change, since both hits share one session. |
| Key events built on page_view (a thank-you page rule) | Counted twice under the default "once per event" counting. |
| Google Ads conversions imported from those GA4 key events | Counted twice, so Smart Bidding sees more conversions than happened. |
| Audiences and explorations based on page views | Thresholds like "viewed 3 pages" trigger early. |
If the doubled page sits behind a Google Ads conversion, read duplicate Google Ads conversions in GTM next. Whether that conversion is primary (used for bidding) or secondary can't be seen from outside. Check it in Google Ads under Goals.
How to fix it
- Pick one install. If GTM runs your other tags, keep GA4 in GTM and turn the integration off: in HubSpot, the Google Analytics 4 integration in its settings; in WordPress, Site Kit's Analytics snippet option or the analytics plugin; at the CDN, the setting that injects the Google tag. Remove any hand-written
gtagsnippet. - One Google tag per ID in GTM. Pause the extra one first, test, then delete it.
- If you send your own page_view, set
send_page_viewtofalsein the Google tag's configuration settings, and turn off "Page changes based on browser history events" in the stream's Enhanced Measurement settings if your tag already handles route changes. - Set the Google tag to "Once per page" under Advanced settings, Tag firing options, if it needs more than one trigger.
- Recount with the DevTools check above, then in GA4 compare views per session for a week before and after.
What we can't see from outside
- Enhanced Measurement settings. They live in the GA4 property, so the history-change risk is a risk, not a count.
- Consent. A banner that holds tags until a click hides a double in a no-click test: 10 of the 25 flagged sites we loaded sent no GA4 hit at all before a click.
- Load order and timing. The static read finds two sources. Whether both send depends on run-time conditions, which is why we also loaded a sample in a browser.
- Other pages. We read the homepage. A double that only exists on one template is missed.
- Your Google Ads account. Which GA4 key events are imported, and whether they are primary or secondary.
FAQ
Why does GA4 show two page_view events when I load a page once?
Two things send one for the same measurement ID. The usual pair is a tool integration (HubSpot's GA4 integration, WordPress Site Kit) plus a Google tag in GTM, or two Google tags in one GTM container. On 5 Nov 2026, 15.5% of 792 sites with GA4 had such a setup; in a live check, 7 of 15 sampled sites sent the page view twice.
Does a duplicate page_view double my sessions or users?
No. Both hits belong to the same session, so sessions and users stay the same. Views, views per session and key events built on page views are doubled.
Can duplicate GA4 page views inflate Google Ads conversions?
Yes, when a GA4 key event built on a page view (a thank-you page, for example) is imported into Google Ads. Each double counts as two conversions. Whether that conversion is primary can't be seen from outside.
Is having two GA4 measurement IDs the same problem?
No. Two different IDs send to two properties, and each gets one page view. The double is the same ID twice. 100 of the 123 sites we flagged load only one ID.
Can Fireshift find this on my site?
The free scan lists every GA4 ID your homepage and containers load. Finding the same ID installed twice is part of the Fix Sprint audit, where we also load your pages in a browser and count the hits.
Run all nine checks on your site, free.
Fireshift reads what your site tells Google Ads, GA4 and Meta from the outside. No install, about a minute.
Get my Leak Score