Page views counted twice: the duplicate page_view in GA4
When two sources send the same page_view, GA4 doubles views and events while traffic stays flat. How to find the second source and remove it.
- In the browser's Network tab, a single page load sends these requests to GA4.
- Two of them are the same page_view: GA4 logs two views where there was only one.
- The cause: two sources send the event, gtag.js in the code and the Google tag in GTM.
- The fix: keep a single source of page_view and remove the other one.
- Check it in DebugView and in the Network tab: one page_view per page load.
A duplicate page_view is one of the easiest mistakes to miss, because it doesn’t break anything visible: reports keep showing data that looks consistent. What changes are the ratios. Views per session go up, pages per user inflate and, if the duplication also hits ecommerce events, revenue stops adding up.
What a duplicate page_view looks like
A single page load produces two requests to GA4 with en=page_view. GA4 has no way of knowing they are the same event, so it logs two views. Sessions and users don’t change, because they are calculated from other identifiers; that is why the clearest symptom is a jump in views per session with no matching change in traffic.
Why GA4 receives the page_view twice
Two sources are sending the same event. The most frequent combinations:
gtag.jsin the code and the Google tag in GTM. Typical after a migration to Tag Manager where nobody removed the original snippet, or when a CMS plugin adds its owngtag.js.- Two GTM containers, each with a Google tag pointing to the same measurement ID.
- Single-page applications (SPAs). Enhanced measurement sends a
page_viewon every browser history change and on top of that, the developers push a manualpage_viewon the same route change.
How to find the duplicate page_view
- Open the developer tools, go to Network and filter by
collect. Load the page once and count the requests withen=page_view. - In DebugView, browse a few pages and check whether each view shows up once or twice.
- Search the page source for
gtag/js?id=andgoogletagmanager.com/gtm.js: if both appear, or two containers do, you have the likely cause. - In the reports, look at views per session over time: a sudden jump that coincides with a release is a very reliable clue.
How to remove the second page_view source
Pick one source of page_view and remove the other:
- If you work with GTM, remove the
gtag.jssnippet from the code (or turn off the plugin integration). - In an SPA, choose between history-based enhanced measurement and the manual event. If you keep the manual one, turn off Page changes based on browser history events in the web stream’s enhanced measurement settings.
- If you must keep
gtag.jsfor another reason, configure it withsend_page_view: falseso it doesn’t send the view on its own.
Google’s documentation: Enhanced measurement events.
How to check there is one page_view per load
- In the Network tab, one page load must produce exactly one request with
en=page_view. - In DebugView, each navigation must show a single
page_view, including SPA route changes. - Over the following days, views per session should return to the level they had before the problem. Data already duplicated isn’t corrected: if you compare periods, note the date of the change.