If you open GA4 on Monday morning and your Organic Shopping channel has fallen off a cliff since September 17, stop hunting for your broken tag right now: there isn’t one. On September 17 and 18, 2026, over roughly 48 hours and with no advance notice whatsoever, Google removed free product listings and the “popular products” carousels from its results across the entire European Economic Area. Independent trackers report drops of 90 to 100 percent in France, Germany, Belgium, the Netherlands and Sweden, while the exact same formats stay perfectly stable in the UK, the US and Australia. It is a perfect geographic control test, and anyone can verify it.
Free product listings removed from the EEA is a Digital Markets Act compliance move, not a bug on your side and not a penalty. That is the context, and it is about all you need to know about it. The real subject, the one nobody is writing about, is how to settle this in thirty minutes: confirm the drop is genuinely exogenous, cleanly isolate the free listings traffic, size what you actually lost, and rebuild a report that stops comparing apples to oranges from September 17 onward. This is a practitioner playbook, and it will hold for the next surface Google removes.
Where the drop shows in GA4, and why it is a trap
Everyone’s first reflex is to open the source/medium report. And there, surprise, everything looks normal. The source / medium of your old free listings is google / organic, exactly like your regular product SEO. So free product listings removed does not surface in a source/medium report: it is buried inside your overall organic traffic.
Where it does show is the Default Channel Group. GA4 files free listings traffic under the Organic Shopping channel, not Organic Search. The classification rule does not rely on the medium alone: it uses additional signals, notably the Merchant Center link and the auto-tagging parameter. The result is an Organic Shopping channel collapsing toward zero while your google / organic barely moves, because the free listings share was a minority next to classic SEO.
This is reading trap number one, and it is expensive. An acquisition lead who only watches source/medium will attribute the drop to the wrong place, or worse, miss it entirely and discover the hole a month later in revenue. If you want the full mechanics of these source groupings and how GA4 picks the channel, I laid it out in the GA4 Source Group dimension. For this case, remember one thing: the loss lives in the channel, not in source/medium.
Cleanly isolating free listings traffic: the srsltid parameter
The Organic Shopping channel gives you the order of magnitude, but it aggregates several Shopping surfaces. To surgically isolate free listings traffic, there is exactly one reliable signal: srsltid.
What srsltid is
srsltid is the auto-tagging parameter that Merchant Center appends to click URLs on your free listings and Shopping surfaces. Every click from a free listing lands on your site with an srsltid in the URL. That is your marker: srsltid present, therefore free listing click. Almost nobody connects this dot in the context of the removal, and yet it is the heart of the measurement.
The GA4 trap, and why you go through BigQuery
Inside the GA4 interface, srsltid is unmanageable. The parameter generates a flood of unique page_location values with no new page load, which pollutes your pages reports and makes URLs show up poorly aggregated or missing altogether. Worse, GA4 stores an encoded, scrambled srsltid value inside page_location, while the real parameter value lives elsewhere.
In the BigQuery export, the actual value sits in collected_traffic_source.srsltid. The practical consequence is twofold: to count unique URLs, you first have to strip the srsltid parameter from page_location, otherwise you artificially inflate your page count; and to isolate free listings traffic, you read collected_traffic_source.srsltid rather than digging through page_location.
The BigQuery query to copy
Here is the query that gives you sessions, users and revenue per day for free listings traffic, over an August 1 to today window, with the September 17 switch visible on a single line. Replace your_project.analytics_XXXXXX with your dataset.
SELECT
PARSE_DATE('%Y%m%d', event_date) AS day,
COUNT(DISTINCT CONCAT(user_pseudo_id,
(SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id'))) AS sessions,
COUNT(DISTINCT user_pseudo_id) AS users,
ROUND(SUM(ecommerce.purchase_revenue), 2) AS revenue
FROM `your_project.analytics_XXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260801'
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
AND collected_traffic_source.srsltid IS NOT NULL
GROUP BY day
ORDER BY day;
You will see free listings revenue and sessions hold their level through September 16, then drop toward zero. That is your dated, defensible, hard number for the meeting. To go further with this kind of analysis, the full cookbook is in the 10 essential BigQuery queries for GA4 in 2026. And if you do not have a BigQuery export running yet, you cannot read collected_traffic_source at all: start by wiring the GA4 export to BigQuery, it is the prerequisite.
One last point, and it is counterintuitive. GA4 lets you exclude srsltid from query parameters in the data stream settings, to clean up your pages reports. Do not turn that on before you have finished measuring: the exclusion wipes out precisely the signal you need to isolate free listings traffic. You clean up afterward, not during.
The Search Console cross-check
BigQuery tells you what your site collected. Search Console tells you what Google served, independent of your tag. Together they settle a simple but crucial question: did the surface disappear, or is my tag no longer collecting?
In the performance report, filter on the “merchant listings” search appearance. You get impressions and clicks on Google’s side for your free listings. If impressions collapse on September 17, the surface really is gone and your tag is blameless. If impressions hold but your GA4 sessions drop, then it is a collection problem, which is not the subject of this article. This cross-check logic is exactly the decision tree I detailed in GA4 missing data: Google bug or your tracking?; this case is its perfect illustration. To get the most out of the GSC and GA4 crossover, see also 5 SEO analyses with GA4 and Search Console.
The cannibalization test: how much is truly lost
This is the section that prevents the bad budget decision. The delta on your Organic Shopping channel is not your net loss, because part of the traffic shifts elsewhere.
Three possible shifts. The product stays indexed in classic web results, so a share of traffic moves to Organic Search. Another share moves to paid Shopping, since the same queries no longer have a free alternative. A last share goes to comparison shopping services, the CSS providers, which pick up the freed space and take their margin along the way.
The method is simple. Over the same window before and after September 17, and per product landing page, compare Organic Shopping, Organic Search and Paid Shopping sessions. Your net loss is the global delta across the three channels, not the hole in Organic Shopping alone. If your Paid Shopping and Organic Search rise mirroring the drop, some of your customers are coming back through another door, and your real loss is smaller than the Organic Shopping channel suggests.
An honest guardrail, because you need one: two days of data lets you conclude nothing. Wait at least 14 days after the switch before deciding, and beware of seasonality: back-to-school and the run-up to Black Friday muddy the reading. An article that had you decide a budget on 48 hours of data would disqualify itself. And if you need to make your purchase event reliable before sizing anything at all, go back through GA4 ecommerce tracking with GTM.
What to do right now in your reporting
Before deciding anything on the budget side, protect your numbers. Here is the checklist:
- Annotate September 17, 2026 in GA4, Looker Studio and every shared dashboard. An unannotated drop will be misread in three months by someone who was not there.
- Rebase your YoY and MoM comparisons. From September 17 onward, comparing to last year means comparing to a world where free listings existed. It is no longer the same surface.
- Warn the media and SEO teams before they attribute the drop to their own work. This is the most urgent message: nobody underperformed, the surface disappeared.
- Document the isolation method (srsltid, BigQuery, Organic Shopping channel) in a shared note, so the next person who looks at these numbers does not start from scratch.
The budget decision, in three cases
Once the net loss is sized and stable over at least two weeks, the decision comes down to three situations. Here is the arbitration grid.
| Situation | What the measurement says | What to do |
|---|---|---|
| Free listings were a significant share of revenue | Meaningful net loss after the cannibalization test | Weigh paid Shopping against going through a CSS, pricing the equivalent acquisition cost before you commit |
| Free listings were a marginal share | Small net loss, largely offset by the shift | Buy nothing back, just annotate and rebase your comparisons |
| You are in travel, hospitality or price comparison | Not hit yet, but the pattern is the same | Measure now, while the baseline still exists, so you are not blind when your turn comes |
A word on the first case, because it is a trap. Buying paid Shopping to fill the hole is an option, not a recommendation. You are now paying for a placement that was free last week, and none of the three routes (paid, CSS with its margin, absorb the loss) equals the removed placement. Price the equivalent acquisition cost before you decide, and do not decide it in the Monday morning panic.
And keep the perspective. Google already pulled travel search features and vacation rentals in the EEA in early September 2026, and redesigned its European results pages. Free listings are not an isolated case, they are a DMA compliance pattern that will repeat across other verticals. The method you just put in place, isolate a surface, size it cleanly, rebase the reporting, will serve you again. Next time, you will not waste your Monday morning hunting for a broken tag that does not exist.