Six reasons why organizations are doubting their GA4 reporting capabilities. It’s not you, it’s Google.
By now you have migrated your GA-UA into GA4. Whether you hired a “GA4 expert”, did it on your own, or were auto-migrated by Google’s force. Unless you are a 360 premium customer, GA4 is now your world.
But why does it seem to suck?
Despite its unique positioning within the Google Marketing Platform, many brands and organizations are still doubting GA4’s reporting capability even after they have migrated. There are many challenges that we can highlight (see our other post on GA4 limitations every analyst must know), but in this blog post, I will dive deeper into 6 contradictions between what is missing from, and what is new in, Google Analytics 4 that is causing a lot of frustration even in the most die-hard GA and GTM proponents.
In this blog post we will cover: (Note: all comparisons made on GA4 Standard licenses, and for Web only)
Sessions are deduped, but not all sessions sources are reported
GA-UA used to increment a session every time a new campaign source was detected. Meaning if you came from Google Paid Search then again from a Facebook campaign within 30 minutes, this would count as 2 sessions overall and 1 for each channel. This had nice side-effect because when you summed a table of sessions by Channel you would get an exact count than if you just took total sessions. However, it also meant you were overcounting sessions and decreasing overall conversion rates. Google was also not in line with industry standards.
Conversely, in GA4 sessions are now deduped where a new campaign source will not increase the session count. This is great! And in line with the industry standard across other digital analytics tools. In theory the above scenario should count as 1 session overall with 1 session associated to Paid Search and 1 session to Paid Social. In GA4 world, that’s not really the case. The next section explains why you will have 1 session overall, 1 session to Paid Search, and no visibility into your Paid Social traffic by default.
Traffic sources default to First Touch, not Last Touch like in UA
For years we have all been trained by Google to assume Last Non-Direct Click attribution model is the default. However, for some reason GA4 decided it is best to change the default to First Touch – without updating help documentation properly. As of this writing, in the official Google Help doc you have this paragraph.
![]()
English is not my native language, but it sure does look like the yellow highlights say session-scoped dimensions are First Touch, but the red highlight contradicts it with saying new values are assigned each time users return to the site; AKA Last Touch. To be fair, if you scroll the help doc down enough you will find an example that attempts to illustrate the first touch nature these session-scoped dimensions, but the use case is so confusing I wonder who leaves that page with a full understanding?
So here is my example:
- I went softcrylic.com?utm_source=first_source
- Submitted a lead
- I immediately went to softcrylic.com?utm_source=second_source
- Submitted a lead
The expectation is 1 overall session, with 1 session to first_source and 1 session to second_source. However, in GA4 you will be missing out on the second_source session. See the results of my test by comparing Adobe Analytics to GA4:
![]()
For a much better understanding of this, checkout this blog post that details the challenge very well and proposes a workaround: https://www.charlesfarina.com/the-traffic-source-challenge-in-ga4/
Need Google Analytics guidance? Talk to our consultants!
Both missing and abundance of metrics
Apart from the UI, one of the major changes you will notice when you load the GA4 platform for the first time is that some of the metrics available in Universal Analytics are now missing, while at the same time you are being blasted with a whole new set of metrics and dimensions never previously available.
For example, one of the most important metrics you will find missing from the default reports is the Bounce Rate, and instead you have a shiny new Engagement Rate. The latter is nothing but the opposite of Bounce Rate, so why confuse? During the initial phases of GA4, Bounce Rate was completely missing. A lot of authors out there were quick to point it out and publish posts about this, so many people think its still missing. Only recently did Google add that metric in the new platform, but it’s not a default metric in Standard Reports. To add bounce rate metric to your reports, you will need to manually add it by editing a report and then saving it.
![]()
At the same time, the explosion of new metrics include; Total Revenue, Ecommerce Revenue, Item Revenue, Product Revenue, Gross Item Revenue, Gross Purchase Revenue. That’s a lot of revenue metrics. On top of that some are in the middle of being deprecated but instead of being actually deprecated there are messages hidden in the tool tip, like this one:
![]()
Missing out-of-box Standard Reports, while having more control than ever to customize
Another difference between UA and GA4 is the number of standard reports that are available out of the box. In Universal Analytics, there are at least 50 standard reports that allow you to analyze different types of data. You can view real-time data, analyze top marketing channels, get technical with website performance metrics, and view the top performing landing pages. They were the same for every GA property no matter what, so if you knew a little bit of GA from one company you could carry that knowledge to the next with no problem.
Google Analytics 4, on the other hand, has limited standard reports available out of the box. GA4 provides the ability to edit those standard reports. It can get tricky though, and without the proper resource or governance process to manage that, organizations could end up with very disparate Standard Reports menus. Here is how that looks like for one organization with 4 properties:
Standard Reports are quicker, new Explorations are sexier but slower, and neither will ever match
Standard Reports are great because they use a pre-processed data set which makes them both load quicker, and don’t suffer from Sampling like UA did. But they are limited in capabilities. The addition of Explorations allows you to analyze data in new ways not before possible in GA. For example, the Path exploration report is a far cry from the old Behavior Flow in UA. Funnels are also more flexible with the addition of Trended Funnel (a personal favorite). However, since Explorations rely on a raw detailed data set, they are slower to load and it’s not possible to do current-day reporting in Explorations.
Current-day is possible in Standard Reports, but the data freshness takes 12 – 48 hours to process (regardless of the claimed 4 – 8 hours). There is an hourly dimension available, but as of this writing, you can’t use it as a primary dimension, only as a breakdown. And guess what? Data freshness can get even slower when you break down. Or does it? I don’t know, check for yourself in Google’s complicated data freshness limits. By the way, have you heard of thresholding and sampling and the effects on data discrepancies between Standard Reports and Explorations? My head is spinning…
What I do know is the end result; gone are the days of near-real-time reporting for businesses that relied on that in UA.
More Custom Dimensions with more limitations
You get more custom dimensions with GA4 than with GA-UA, and while custom dimensions have been around for many years, there are some changes in the way that they work. First off, the touted event-driven with a parameter payload model is confusing a lot of implementors. From a reporting standpoint, any event you send to GA4 will show its parameters automatically in Real-Time reports.
![]()
This leads many to think that the job is done, and data is being captured in GA4. But don’t fall for it! You still must enable custom dimensions and map them to the corresponding event parameters. During this process is where I see the biggest difference to UA: the available dimension scopes.
In Universal Analytics, you could set your custom dimension scope at the hit, session, user, or product level. But in Google Analytics 4, you have to set your custom dimension scope at either the user-level, event level, or item level.
Originally item level was not supported so there are still some people out there that think it is not. Product scope is now Item scope, and you set them within the items array similar to how you did before. This is fine. The problem is for session-scoped custom dimensions from UA. Since they do not exist in GA4 as of this writing, you are going to have to get creative.
![]()
For now, you will need to set them up as event-scoped dimensions in Google Analytics 4, but that comes with its own limitations. You will get (not set) values for some automatically generated events, and since you need the value to persist now you need to store the value somewhere in the browser and pass it on every hit. Before that was automatically done, now you have to figure it out.
By the way, now you have a 100-character limit for values within custom dimensions (it used to be 40 when GA4 launched). In Universal Analytics that was 150 characters. So, think about abbreviating!
Closing thoughts
It’s not your fault you don’t trust you newly implemented GA4. GA4 is a world of contradictions. It is both exhilarating, and frustrating. With years of experience under its belt and the largest user base for Digital Analytics, Google had the chance to up its game against other solutions. Instead, it has chosen to MVP (minimal viable product) its way into a barely acceptable solution that is making organizations think about other solutions. Even Simo, who is probably the #1 GTM expert in the entire connected world, is asking for Google to do better. I agree… Every month GA4 releases a new feature, but with close to 3 years in beta testing mode (remember App+Web properties?), Google could have done better.
So what do you think… Is it time to consider other solutions that have evolved along with the digital analytics industry? Or, is this frustration just growing pains, and Google will be able to deliver on its “next generation” promise of analytics?
Maybe its time.