As Google Analytics 4 is replacing Universal Analytics, it is imperative to examine the differences between these two web analytics platforms. One of the things we noticed when using Google Analytics 4 for the first time is the report gaps between Google Analytics Universal vs GA4. The new interface looks more elegant and streamlined. However, it doesn’t include some reports that Universal Analytics offered out of the box. To consolidate the reporting between the web and app, they had to exclude some variables and reports from the ones shipped by default in UA, limiting the information it offers.
This can be frustrating, especially for people who have used the UA interface for years and know where to find everything they need. Fortunately, there are ways to replicate all the good old reports. Some are possible through GA4’s explorations, while others require the mighty BigQuery integration. With enough patience and effort, we would say that GA4 enables granularity and depth in the analyses that weren’t possible with Universal Analytics.
In this post, we’ll cover some of the more significant report gaps between GA4 vs Universal Analytics and how to recreate them. Towards the end, we also provide some exciting analyses that GA4 enables and weren’t possible with Universal Analytics.
The Report Gaps between Universal Analytics and GA4 We Cover
We won’t cover metric and dimension definition differences or describe GA4 reports. We aim to focus on high-value, out-of-the-box reports available in Universal Analytics that don’t exist in GA4 and on how to re-create them with GA4 data. If you are interested in the differences between Adobe Analytics and GA4, you might want to check this other article instead.
eCommerce funnels
Do you recognize this?

It is the hopping behaviour report. It is handy to understand at what step of the shopping funnel people drop, identify the setbacks and blockers, and streamline the buying process.
Unfortunately, it isn’t available in GA4. Luckily, there are alternatives.
The main one, in this case, is to use a funnel exploration and define the high-level steps to conversion: sessions, product list views, product detail views, adds to cart, checkouts, and purchases (these are just examples and there might be other steps you want o define).

As you can see, the result is pretty similar. You can add any breakdowns you want to the exploration, such as user type (i.e., new vs. returning), product name, device category, and demographics, to name a few options.
If you are tracking the steps or fields of any form on your site, you can use this same approach to replicate any funnels, including the checkout funnel.
Product performance
Universal Analytics’s product performance report includes the product performance metrics such as revenue, quantity, unique purchases, avg. price, avg. quantity and product refund amount, as well as cart-to-detail rate as well as buy-to-detail rate. These metrics help understand the products’ performance in absolute and relative terms. You can identify the following:
- Products with high visibility and performance (rock stars)
- Products that have high visibility and low conversions (pigeons)
- Products with low exposure and outstanding performance (diamonds)
- Products with low visibility and performance (dogs)
This opens up many optimization opportunities. You can increase the visibility of the products that perform better; analyze low-performing product pages and test new images, alternative copies, or layouts; or optimize the search result pages to promote the best-performing products or increase the results’ relevance.
GA4 offers a minimal version of the product performance data. The visualization is neat, but it is limited in what it provides.

Regardless, it still lacks details critical to analyzing efficiently and systematically: it doesn’t include the ratios between the metrics of interest (the relative performance), and it doesn’t update with the filters to the table. We tried to replicate the analysis using an exploration, but it wasn’t showing any data. It seems like another feature included in GA4 that isn’t production-ready.
So, to get this type of insight, we’ll have to use the BigQuery4 data export and replicate the reports. The queries are somewhat complex, and you might need to tweak them depending on the dimensions you want to include. Here is an example query to get a basic version:
WITH event_items as ( select concat(user_pseudo_id,(select value.int_value from unnest(event_params) where key = 'ga_session_id')) as session_key, event_name, event_date, items.item_id, items.item_name, items.price, items.quantity, items.item_revenue from `analytics_<id>.events_<date|*>`, unnest(items) as items ) SELECT item_id, item_name, COUNT(DISTINCT IF(event_name = 'view_item_list', session_key, null)) view_item_list, SUM(DISTINCT IF(event_name = 'view_item_list', 1, 0)) view_item_list_total, COUNT(DISTINCT IF(event_name = 'select_item', session_key, null)) click_list_item, SUM(DISTINCT IF(event_name = 'select_item', 1, 0)) click_list_item_total, COUNT(DISTINCT IF(event_name = 'view_item', session_key, null)) view_item, SUM(DISTINCT IF(event_name = 'view_item', 1, 0)) view_item_total, COUNT(DISTINCT IF(event_name = 'add_to_cart', session_key, null)) add_to_cart, SUM(DISTINCT IF(event_name = 'add_to_cart', quantity, 0)) add_to_cart_quantity, COUNT(DISTINCT IF(event_name = 'remove_from_cart', session_key, null)) remove_from_cart, SUM(DISTINCT IF(event_name = 'remove_from_cart', quantity, 0)) remove_from_cart_quantity, COUNT(DISTINCT IF(event_name = 'begin_checkout', session_key, null)) begin_checkout, SUM(DISTINCT IF(event_name = 'begin_checkout', 1, 0)) begin_checkout_total, COUNT(DISTINCT IF(event_name = 'add_shipping_info', session_key, null)) add_shipping_info, SUM(DISTINCT IF(event_name = 'add_shipping_info', 1, 0)) add_shipping_info_total, COUNT(DISTINCT IF(event_name = 'add_payment_info', session_key, null)) add_payment_info, SUM(DISTINCT IF(event_name = 'add_payment_info', 1, 0)) add_payment_info_total, COUNT(DISTINCT IF(event_name = 'purchase', session_key, null)) purchases, SUM(DISTINCT IF(event_name = 'purchase', quantity, 0)) item_quantity, SUM(DISTINCT IF(event_name = 'purchase', price, 0)) item_price, SUM(DISTINCT IF(event_name = 'purchase', item_revenue, 0)) item_revenue, FROM event_items GROUP BY 1, 2, 3
Depending on the size of your data, the number of product ids, and other factors, this query will return a different number of rows. For many clients, we had to pre-aggregate some of the data around the dimensions we wanted for the analysis.
Using dbt with the GA4 package can help a great deal. Still, you must run custom SQL like the example above to answer in-depth questions.
List performance
The list performance reports help identify what product lists and locations perform better. It provides insight into how many people:
- Viewed the product in the list (“view_item_list”)
- Clicked on a list item (“select_item)
- Viewed a product page (“view_item”)
- Added a product to the cart (“add_to_cart”)
- Started a checkout (“begin_checkout)
- Placed an order (“purchase”)
The names in parentheses are the corresponding GA4 events. With the information this report provides, you can identify what lists perform better in general, what is the visibility of the products in each position, and what is the relative performance of the products depending on their position in the list.

As with the previous report, this isn’t available in GA4, and the best way to generate it is to use the BigQuery data export. You can use an SQL query like the above, adding the relevant list variables: item.list_id, item.list_name and item.list_index.
This can result in a massive dataset with a big cardinality. For one of our customers, this query yielded a response containing over 700K rows and weighing almost one Gb with just one day of data. You can easily calculate the size and weight it would have if you ran this query with the date dimension for extended periods.
There are techniques to work around this, like grouping the products, using categories instead of IDs, not breaking the response down by date, or focusing on list names and indexes without including product data. If your volume is high, focus on the data you need to answer your questions and leave the rest out.
Landing pages
The landing pages report gives information about the first page users see on each session. It is a powerful tool for optimizing website performance and improving the user experience for visitors.
By looking at the engagement and conversion rates, you can identify which pages are performing well and which ones need improvement. You can use this information to send traffic to the best-performing landing pages, test different variations and pick the one that drives more conversions, ultimately improving your results.
Regularly reviewing this report and making data-driven changes to landing pages can drive more traffic, increase engagement, and boost conversions.
Initially, we thought this report didn’t exist in GA4. After researching a bit, we found out we were wrong. You can easily add the report from Reports > Library > Life Cycle (tile) > Edit Collection. On the new screen, search for “Landing Page”, drag and drop the report to the Engagement section, refresh the page, and … That’s it.
Now you’ll find the report under the engagement section:

If you want to add other metrics like the number of engaged sessions, engagement rate, or session conversion rate, you have two alternatives: create a custom exploration or, if you want to have it in the reports section, you can customize the report above clicking on the pencil in the upper right corner. It will open a new interface where you can add any user, session, or custom metric you want.
Behavior flow
What about the good ol’ behavior flow report? You might ask. Isn’t that one of the huge reporting gaps between Universal Analytics and GA4? You might think. Look how cool it looks:

We have just two things to say about this report: we only looked at it when Google released it, and we thought it looked great but never used it again to generate valuable insights. If you disagree with us and you love this report, worry not. The information is available as an exploration in GA4, and you can replicate it.
Closing Thoughts
In this post, we shared the approach we are following to replicate the reports we miss the most. It is far from a comprehensive list, but the approaches presented can be extended to other reports.
The report gaps between Google Analytics 4 vs Universal Analytics are wide and deep. It is not only the number of reports but their depth. Sure, it offers the explorations as an alternative to replicate some of them, but it is still clunky and somewhat limited.
If there are any reports you are already missing and unsure how to replicate, please comment on the post, and we’ll happily add them to the list. And if you need help with your digital analytics implementations, just contact us.