TL;DR
Google's page view option listens for three browser history events, and AJAX catalog pages fire them constantly. Before you switch anything off, decide which page views you want: one per filter click is what a store without AJAX records anyway, while page views from scrolling and from stepping Back through filters have no full-reload equivalent. If you untick the option, the listing activity is still measured, because the extension sends view_item_list for every AJAX-loaded result set. Run the five-step check before and after the change.
Key Takeaways
- GA4's history-based page views listen for "pushState, popState, and replaceState" [1], and AJAX filters, Back steps and infinite scroll all change the address that way.
- A page view per AJAX filter click matches what a full-reload store records; the scroll and Back/Forward page views are the extra ones.
- The switch is "Page changes based on browser history events", under the web stream's Enhanced measurement > Page views > Show advanced settings [2], and it covers every page on that stream.
- "Page loads" stays on: Google says page_view collection can't be turned off [1], so a Grid/List switch or any normal page load still counts.
- The theme modules have pushed impressions for AJAX-loaded products since v1.7.2 (August 2, 2018) [4][5]; the GA4 extension fixed Ajax pagination impressions in v1.11.7 and added a PRO server-side
view_item_listin v1.11.11 [3]. - The change applies to data collected after you save it, so note the date before you compare Black Friday weeks.
Which page views are you trying to stop?
Start with the definition, because the setting can't tell a useful page view from a noisy one. Google's Page views option fires page_view "each time the page loads or the browser history state is changed by the active site", and the event "populates the Views metric" [1]. An advanced setting decides whether the history half applies, and Google spells out what it hears: "This measurement option listens for pushState, popState, and replaceState" [1].
On a category page with AJAX filtering, a shopper who clicks "Blue" gets a new product grid and a new address without a reload. With the history option on, GA4 records a page view. A store without AJAX would record exactly one page view for that click too, because the click loads a new page. So a page view per filter click isn't inflation in any sense that matters. It's the same count your theme would produce without AJAX.
The inflation is somewhere else. In infinite-scroll mode, the address follows the shopper's scroll position through the loaded pages, so scrolling down through four pages and back up to the top keeps changing it, and each change is a history event. Back and Forward on an AJAX category step through each filter state on a page the shopper never left. Neither has a full-reload equivalent, and both grow with how long people browse. You've probably scrolled a long category back up to the top yourself to find a product you passed; with the history option on, that trip back up is counted again.
Crawlers inflate page views too, but that's a separate fix, covered in our guide to keeping bot traffic out of GA4. This article is about the page views your own navigation creates.
What each AJAX setting does to the address bar
WeltPixel's Layered Navigation has an Enable Ajax setting under Admin > WeltPixel > Layered Navigation > General Settings; its guide says the AJAX filter "eliminates the need of a full page refresh" [4]. Ajax Catalog & Infinite Scroll lives under WeltPixel > Ajax Catalog & Infinite Scroll > General Configuration, with Enable Ajax Catalog and an Ajax Catalog Mode of either Ajax Infinite Scroll or Ajax Next Page, plus separate switches for the category, search and advanced search pages [5]. Check which of these are on for your store before you read any numbers.
Here is what you'll see in the address bar for each interaction, and what GA4 does with it when history page views are on:
| Interaction on the listing page | What the address bar does | page_view with history events on |
|---|---|---|
Filter click or filter removal (Layered Navigation, Enable Ajax = Yes) |
New address, no reload | One per click |
| Sort order, items per page, pager click (same setting) | New address, no reload | One per click |
| Browser Back or Forward between filter states | Steps back to the previous filter state; since v1.11.7 Back removes the filter instead of leaving the page [4] | One per step |
| Grid / List switch | Full page reload | One, from Page loads |
| Scrolling in Ajax Infinite Scroll mode | Switches to the page number of the products on screen, on the way down and again on the way back up | One per switch |
| Page click in Ajax Next Page mode | New address for each page clicked | One per click |
The infinite-scroll row is the one to watch in person. Since v1.6.4 (May 16, 2018), the Ajax Catalog changelog says a shopper who hits Back lands on "the last page loaded with ajax or infinite scroll (ex: listing page 4)" [5], which works because the address keeps up with the page they reached. That's good for shoppers. It also means the address moves while someone scrolls, and it moves again when they scroll back.
Where the GA4 enhanced measurement switch lives, and what it leaves on
The setting is per web data stream. In GA4, go to Admin > Data collection and modification > Data streams, open your web stream, and under Enhanced measurement open the settings for Page views. Click Show advanced settings. Google's developer guide describes the two checkboxes there as "Page loads and Page changes based on browser history events" [2]. Untick the second one and save. You need the Editor role or above [1].
Page loads keep counting. Google is explicit that page_view "is collected automatically. You cannot turn off collection" [1]. A shopper who opens a category, switches to List view or follows a link to a product page still records a page view each time.
The change covers the whole stream, though. If your store has other screens that change the address by script, such as a one-page checkout that rewrites the URL between steps, they lose their history page views too. Click through those screens in DebugView before you decide.
Google also has a line for Tag Manager sites: "If you configure your tags using Google Tag Manager, don't enable automatic history tracking in Google Analytics, as this can lead to double-counting page views" [2]. The extension loads GA4 through a GTM container, and its user guide warns not to disable the main tag, "labeled WP - GA4, as this tag is required for tracking sessions, page views and other important user metrics" [3]. Check your own container's triggers: the setup the extension generates has no History Change trigger, so history page views on these pages come from the GA4 checkbox unless someone added one.
The setting applies to data collected after you save it. Note the date somewhere your team will see it, so nobody reads the drop in Views that week as lost traffic.
Do you lose the listing data when you turn it off?
No, the listing data survives the switch. The page view was never the event that described what the shopper looked at. The extension sends view_item_list with the products in each result set. The theme modules have pushed impressions on AJAX requests since 2018, and the GA4 extension's own entries date from 2022:
- Layered Navigation v1.7.2 (August 2, 2018): "Add data layer impression push to Google Tag Manager on Ajax requests" [4].
- Ajax Catalog v1.7.2 (August 2, 2018): "data layer impressions push for ajax loaded content" [5].
- GA4 extension v1.11.7 (September 1, 2022) fixed "an issue that would sometimes prevent Product Impressions from being pushed when using Ajax Pagination" [3].
- GA4 extension v1.11.11 (November 11, 2022) added server-side
view_item_listfor category pages, search results and advanced search, among other lists, "(PRO version only)" [3], and both theme modules added compatibility for sending those item list views through the Measurement Protocol in their v1.11.11 releases of November 23, 2022 [4][5].
In the browser, each filtered grid and each newly loaded page arrives as one or more view_item_list pushes carrying its own items. On PRO, if View Item List is one of your Measurement Protocol Track Events and "Automatically disable data layer for enabled measurement protocol events" is on, or you've paused its client-side tag as the user guide instructs, the server copy is the one GA4 receives [3]. A large page arrives in several pushes, which our guide to what your old Enhanced Ecommerce dataLayer still gets wrong explains.
The server-side copy is a PRO feature (see our Standard vs PRO comparison). Since v1.17.4 (September 1, 2026), with Require Visitor Consent for Server-Side Events switched on, that copy is sent only when the shopper's Consent Mode v2 choice allows it, like the extension's other Measurement Protocol events [3]; our guide to server-side events and consent covers the option.
That leaves a cleaner split of questions. "How much did shoppers browse this category?" is an item list question, answered by view_item_list and the items it carries. "How many screens did a session see?" is a page view question. Pick one number for each and stop asking page views to do the first job.
How do you prove it on your own store?
Run the same five interactions twice, once with the history option on and once after you untick it. Our article on verifying GA4 events with DebugView and the preview tools covers getting the store into debug mode and reading the extension's ga4.log; here you only need to click and count. On the PRO setup above, where GA4 receives the server copy, count view_item_list in ga4.log (with Enable File Log on) and page_view in DebugView.
- Open a category page with AJAX filters. Note one
page_viewand theview_item_listfor the first grid. - Apply one filter. Watch the address bar change, then count
page_viewandview_item_list. Google's own check for this is to see "a new page_view event" and confirm the page referrer and page location were updated [2]. - Press Back once. The filter should come off without leaving the page [4]. Count again.
- If you use Ajax Infinite Scroll, scroll down through three loaded pages, then back up to the top, and watch the page number in the address bar the whole way. Count the
page_viewevents againstview_item_list. - Switch to List view. This one reloads the page, so it records a
page_viewwhatever the setting says.
Write the counts down in a small table. After you untick the option, steps 2 to 4 should show no page_view, while view_item_list still arrives, in DebugView or in ga4.log, for each new result set and each newly loaded page, and steps 1 and 5 should look the same as before. If step 4 still shows page views after the change, check your container for a History Change trigger, and check that you edited the stream your store actually sends to.
We can't give you a fixed number of extra page views per session, because it rises with every scroll and every Back press.
FAQ
Does unticking the history option remove page views from past data?
No. The change applies to data collected after you save it, so earlier weeks keep their history page views. Mark the date before comparing periods.
Will filter clicks still show up in GA4 after I turn it off?
Yes, as view_item_list events carrying the filtered products [3][4]. They stop showing up as page views, which is usually the point.
Does this setting depend on the Standard or PRO edition?
No. It's a GA4 stream setting, so it works the same on both. The edition matters only for the server-side view_item_list copy, which is PRO [3].
Keep listing engagement in view_item_list with the Magento 2 Google Analytics 4 extension, and decide in GA4 whether AJAX navigation should count as page views. The current release is v1.17.5, September 16, 2026 [3].
Sources
- [GA4] Enhanced measurement events, Google Analytics Help, retrieved October 14, 2026, https://support.google.com/analytics/answer/9216061
- Measure single-page applications, Google Analytics developer documentation, last updated October 13, 2026, retrieved October 14, 2026, https://developers.google.com/analytics/devguides/collection/ga4/single-page-applications
- WeltPixel Google Analytics 4 User Guide and Change Log (Measurement Protocol settings; Tags and the WP - GA4 note; v1.11.7, v1.11.11, v1.17.4 and v1.17.5 entries), retrieved October 14, 2026, https://docs.weltpixel.com/GA4/User-Guide-WeltPixel-Google-Analytics-4.html
- WeltPixel Layered Navigation User Guide and Change Log (General Settings; v1.7.2, v1.11.7 and v1.11.11 entries), retrieved October 14, 2026, https://docs.weltpixel.com/LayeredNavigation/User-Guide-WeltPixel-Layered-Navigation-Magento2.html
- WeltPixel Ajax Catalog & Infinite Scroll User Guide and Change Log (General Configuration; v1.6.4, v1.7.2 and v1.11.11 entries), retrieved October 14, 2026, https://docs.weltpixel.com/AjaxCatalog/User-Guide-Ajax-Catalog-Infinite-Scroll-Magento-2.html