Two WooCommerce products. Both sold 120 units last month. One converted 40% of the visitors who viewed it. The other converted 4%. Your GA4 Ecommerce Purchases report says they are equally good sellers. It’s sorted by Items Purchased — a volume count that tells you what sold, not what performed.
That’s the metric problem. And if you’re using GA4 product data to decide where to focus ad spend, which SKUs to push in Performance Max, or which items to feature in your store — you’re optimising for the wrong signal.
What GA4 Actually Shows You (and What It Doesn’t)
Open the GA4 Ecommerce Purchases report and you’ll see a table: product names, Items viewed, Items added to cart, Items purchased, and purchase revenue. The default sort is Items purchased, descending. The products at the top of the list sold the most units.
Here’s the thing — that’s not your bestseller list. That’s your highest-volume list. Volume and performance are not the same metric.
A product on your homepage carousel gets seen by 10,000 visitors and converts 50 of them. A niche product on page three of your catalogue gets seen by 80 visitors and converts 32 of them. The homepage product appears higher on your GA4 list. The niche product is 80x more efficient at converting the people who actually find it.
GA4 already has the data to show you the difference. It’s sitting inside the same Ecommerce Purchases report you’re already looking at — in the Items viewed column. The metric you need is Items purchased divided by Items viewed: your product view-to-purchase rate. It just isn’t the default sort, and it isn’t surfaced in any standard GA4 report template.
You may be interested in: Your WooCommerce Variable Products Are Hiding Your Best-Selling Items in GA4
How to Build the Efficiency Report in GA4 Explorations
The view-to-purchase rate doesn’t exist as a native GA4 metric — you have to calculate it from the two component metrics that do exist. Here’s how to build it:
- Go to Explore in GA4 and create a new blank exploration
- Set dimension: Item name
- Add metrics: Items viewed and Items purchased
- Build a calculated metric: Items purchased ÷ Items viewed (expressed as a percentage)
- Sort descending by your calculated rate column
What you’ll see surprises most store owners. The top performers by efficiency are rarely the same as the top performers by volume. Sometimes they’re not even in the same category.
Littledata’s analysis confirms the pattern: building a scatter plot of Items viewed versus Items purchased in GA4 Explorations reveals entirely different product winners and losers than the default sort. The ranking difference isn’t marginal — it regularly inverts the top ten.
67% of data professionals say they cannot trust their analytics data for business decisions (Precisely / Drexel University Data Integrity Trends Report, 2025). For WooCommerce store owners using the default GA4 product sort for merchandising, that trust failure has a specific name: it’s called Items Purchased.
Why the Denominator Is Broken
Here’s the part that makes the problem worse. Even after you build the efficiency report, the calculation is unreliable — because the Items viewed count you’re dividing by is incomplete.
31.5% of global internet users run ad blockers that suppress GA4’s browser-side tracking scripts (Statista, 2024). Every time a visitor with an ad blocker lands on a product page, the view_item event never fires. Their visit doesn’t count in Items viewed. But if they purchase — and server-side WooCommerce order hooks capture the purchase regardless of browser state — that purchase does count in Items purchased.
Translation: the denominator is suppressed. The numerator is closer to complete. The view-to-purchase rate you calculate is inflated for every product that attracts privacy-aware, ad-blocker-running customers — which tends to skew toward higher-traffic pages and more technically literate buyers.
GA4 underreports ecommerce events by 15-50% depending on your audience demographics and ad blocker prevalence (Seresa Research, 2025). That range isn’t uniform across your product catalogue. Products on high-traffic discovery pages attract a different user profile than niche long-tail products found through direct search — meaning the distortion isn’t random noise. It’s systematic bias pointing in a specific direction.
You may be interested in: The WooCommerce Tracking Audit Every Store Needs Before Building a Dashboard
What a Broken Product Ranking Costs You
The downstream consequences are real. Google Performance Max and Smart Shopping campaigns use your conversion data to decide which products to feature in Shopping ads. If the signal you’re sending over-represents high-volume, low-efficiency products, PMax optimises toward them — and away from the high-efficiency products that would actually produce a better return.
Dynamic product ads deliver 34% lower cost-per-acquisition when product identifiers and signals match exactly between events and catalogue (Meta Business, 2025). The inverse is also true: mismatched or volume-biased signals push budget toward the wrong SKUs, and the CPA climbs.
Poor data quality costs organisations $12.9 million annually on average (Gartner, 2025). For a WooCommerce store, the version of this is smaller but structurally identical: directing ad spend and category placement toward high-volume, low-efficiency products is a compounding form of that same loss — every month, at every budget level.
The Server-Side Fix: Accurate view_item From WooCommerce Hooks
The denominator problem has a clean solution. WooCommerce fires server-side hooks when products are displayed — including woocommerce_after_shop_loop_item for catalogue views and the_post within a WooCommerce context for single product pages. These hooks fire on the server before the page reaches the browser — which means they fire regardless of whether the visitor is running an ad blocker.
Capturing view_item server-side produces a complete denominator. Every product page visit is counted — not just the 68.5% of visits from users without ad blockers. The efficiency calculation becomes reliable. The ranking reflects actual product performance rather than a biased sample.
Transmute Engine™ is a first-party Node.js server running on your own subdomain (e.g., data.yourstore.com). The inPIPE WordPress plugin captures view_item events from WooCommerce hooks at the server level and sends them via API to your Transmute Engine server, which routes them to GA4 Measurement Protocol and BigQuery simultaneously — on every product view, from every visitor, with no browser dependency. The Items viewed count in your efficiency report becomes a number you can actually trust.
Key Takeaways
- GA4’s default product sort is Items Purchased (volume) — not conversion efficiency. Two products with identical unit sales can have a 10x difference in how hard they worked to get there.
- View-to-purchase rate is the correct efficiency metric — it’s already inside GA4’s Ecommerce Purchases report (Items purchased ÷ Items viewed) but requires a custom Exploration to surface.
- The Items viewed denominator is broken by browser-side tracking — 31.5% of users run ad blockers that suppress view_item events, inflating apparent conversion rates on products that attract privacy-aware visitors.
- PMax and Meta Catalogue campaigns use your product signal data — a volume-biased ranking sends budget to the wrong SKUs and raises cost-per-acquisition.
- Server-side view_item capture via WooCommerce hooks produces a complete denominator that makes the efficiency calculation reliable for merchandising and ad campaign decisions.
GA4’s Ecommerce Purchases report and WooCommerce’s native bestseller widget are measuring different things. WooCommerce sorts by order count from its own database. GA4 sorts by Items Purchased events captured by your tracking setup — which is already incomplete if any browser-side events are being blocked. Beyond that, neither default view shows conversion efficiency. A product appearing lower in both lists may still be your most efficient converter.
View-to-purchase rate is Items Purchased divided by Items Viewed for a given product, expressed as a percentage. It shows what proportion of visitors who saw a product actually bought it — a measure of conversion efficiency rather than raw volume. In GA4, you calculate it as a custom metric in Explorations using the Items viewed and Items purchased columns from the Ecommerce Purchases report.
Go to Explore in GA4, create a blank Exploration, add Item name as your dimension, and add Items viewed and Items purchased as metrics. Then create a calculated metric: Items purchased ÷ Items viewed. Sort descending by that column. The resulting list is your product efficiency ranking — sorted by what each product does with the attention it gets, not just how many units it sold.
Performance Max and Google Smart Shopping use your GA4 purchase signal data to decide which products to feature. If that data is sorted by volume rather than efficiency — or if the underlying view_item events are incomplete due to ad blocker suppression — PMax receives a biased signal. It optimises toward products that generated the most purchase events in absolute terms, not the products with the highest view-to-purchase rate. Fixing the product signal with accurate, server-side data corrects the campaign’s optimisation target.
The metric you need to rank your products correctly is already inside GA4 — it just isn’t the default. And it only becomes trustworthy once the view_item count is complete. Seresa captures view_item server-side so your efficiency ranking reflects every visitor, not just the ones your browser-side scripts could see.
