Why is GTM duplicating my Google Analytics pageviews?

Kilian Müller
Kilian MüllerOwner of 1hold.de · Google PartnerUpdated
Google Tag ManagerGoogle Certified Specialist

GTM duplicates page views when the same GA4 measurement ID is loaded by more than one source – typically GTM plus a WordPress plugin or a cookie banner with its own Google tag – or when a page_view is sent manually on top of the automatic one. If you suspect GTM duplicating pageviews, count the sources first: one page load should produce exactly one page_view hit.

Duplicate tags do not only inflate your numbers, they also cost loading time. Read why Google Tag Manager can slow down your website if speed is a concern as well.

How do you spot duplicate page views?

  1. In GA4, open Explore, build a free-form exploration with the metrics Views and Sessions and compare weeks. A jump in views per session after a plugin, theme or cookie-banner change is the classic sign.
  2. Open Tag Assistant, connect your site and load one page. Click your Google tag and check the hits it sent. Google’s own guide to duplicated tracking events uses exactly this check: one user action should not appear twice.
  3. In Chrome DevTools → Network, filter for collect?v=2 and reload the page. Look for en=page_view with your G- ID in the request URL or, when GA4 batches several events, in the request payload. Two of them for one page load is your duplicate.
  4. Search the page source for gtag/js?id=G-. A match outside the GTM container means a second loader – usually a plugin.

Why is GTM duplicating pageviews?

  • A second Google tag outside GTM. Site Kit, a cookie plugin’s built-in Analytics service, the theme header or a shop tracking plugin loads gtag.js for the same ID that GTM already uses.
  • A manual page_view without switching off the automatic one. The Google tag sends page_view on every page load. Google’s page view documentation warns that manual page views without disabling pageview measurement can lead to duplicates. In GTM you switch it off in the Google tag under Configuration settings with the parameter send_page_view and the value false.
  • History changes counted twice. Enhanced measurement sends page_view when a page loads or when the site changes the browser history state. An extra History Change trigger in GTM that sends its own page_view doubles every step in single-page apps.
  • Two Google tags with the same ID inside GTM. Often a leftover from a migration: one old tag, one new, both firing on all pages.

What did two client sites and a counter-example show?

For a healthcare client our audit found three sources configuring the same GA4 ID: the Google tag in GTM, the cookie plugin’s own Analytics service and Site Kit. At the time of the fix only two were really active – the Site Kit snippet was already off, and our first finding came from a stale cached page. In the 28 days before 11 July 2026 GA4 counted 1,140 page views on 207 sessions, 5.5 per session. We disabled the cookie plugin’s Analytics code so that GTM became the only source. In the following 28 days GA4 counted 206 page views on 144 sessions, 1.4 per session; from mid-September to mid-October it was 1.5.

A B2B client had Site Kit and its cookie plugin both loading gtag.js for the same ID next to GTM: 8,631 page views on 1,155 sessions, 7.5 per session. After we switched off both extra loaders on 11 July, the ratio fell to 3.9 and was 4.0 from mid-September to mid-October. Longer visits are plausible on that site, but whether every one of those four page views is genuine we have not yet checked page by page.

GA4 page views per session28 days before vs. 28 days after the extra tags were removedHealthcare, before5.5Healthcare, after1.4B2B, before7.5B2B, after3.9Source: GA4 Data API, 13 Jun–10 Jul vs. 12 Jul–8 Aug 2026

Not every second loader doubles the data. The site of a retail client loaded the Google tag from three places, yet GA4 showed 1.57 page views per session, and a test in a headless browser sent exactly one page_view – the Google tag did not repeat the same ID there. So count hits before you remove anything.

Make GTM the only place that loads your Google tag. Switch off the Analytics output in plugins instead of deleting them blindly – on one of the sites above, the plugin we silenced still delivered the GTM snippet itself – and confirm in Tag Assistant that one page load sends exactly one page_view.

How do you fix duplicate page views in five steps?

  1. List every source: page source, active plugins, theme files and the tags Tag Assistant shows.
  2. Choose one owner for the GA4 ID, normally GTM.
  3. Switch off the others in their plugin settings, then clear the page cache and any CDN cache.
  4. Inside GTM keep one Google tag per ID. If you send page_view manually, set send_page_view to false, and do not add History Change page views where enhanced measurement already tracks history changes.
  5. Publish, check one page load in Tag Assistant again and compare views per session in GA4 over the next two to four weeks.

Sources

Not sure which of your plugins is counting along? We check your GTM container and website for duplicate Google tags and clean up the setup without losing consent signals. Book a free initial call or see how we handle Google Ads and conversion tracking for our clients.

Need personal advice?

Our Google-certified experts are happy to help – free and without obligation.

Book a meeting