The Landing Page report in Universal Analytics was on many people’s short list of favorites. If you are one of those people, the Landing page report in GA4 is likely a bit of a disappointment. For many of the GA4 properties I’ve worked on, the first row in the report is (not set), and for some the majority of conversions show up in that row. What gives?
In this post, we’ll make improvements to the standard report, explore what causes the (not set) issue, and discuss a few mitigation strategies. Then we’ll create a custom First user landing page dimension that you can use to understand what content is attracting new users to your site and whether or not they come back and convert to customers or buyers.
There are two videos that accompany this post. The first, below, covers the standard GA4 Landing page dimension. The second describes how to create the custom First user landing page. That video is embedded further down the post.
The landing page report can be found under Reports > Engagement in GA4. If you don’t find it there, you can add it by clicking on the library icon below the reporting navigation, then select ‘Edit collection’ to add it to a collection of reports. From there you can search for the report and add it to your navigation (Google help on how to do this).
The landing page report shows sessions, users, engagement, conversions and revenue tied to the page on which a user lands at the start of a session. There are a couple of metrics that can make the report a lot more useful:
To add these columns, click on the pencil icon in the upper right – you need to have Editor or Administrator permissions to do this. I walk through detailed steps to add the columns in the video.
One thing to be aware of: since Landing page is a session-scoped dimension, the event counts you see in this report are per session, not per page view. This means that, for example, if a row shows 10 landing page sessions and 20 page_view events, on average people who land on that page go on to view one more page.
A common frustration with the Landing page report is that a lot of sessions are attributed to “(not set)”. What does this even mean? How can a user visit the site and not land on a page? I’ve looked into this a bit and found three common causes:
The first two of these are especially problematic because they typically represent events that are flagged as conversions, meaning that a disproportionate number of conversions show up in the (not set) row.
To understand what content is attracting new users to your site and whether or not they come back in a different session and convert to customers or buyers, we’ll create a custom First user landing page dimension that can be used for reporting in Looker Studio.
Watch the video for a walkthrough of the steps described below.
If you’ve been doing any customization in GA4, you know that Google Tag Manager (GTM) is an essential part of your toolkit. We’ll use GTM to persist a user property that stores the page path on which the user first arrived at a site. The following code persists the user’s landing page path between visits. To implement it, copy the code into a new Custom HTML tag in GTM. Set the trigger to Page View > All Pages.
There are three functions in the code.
If you are wondering why we are getting the user’s page path instead of the full landing page URL, the reason is because GA4 User Properties can’t be longer than 36 characters. Because of that, we need to economize on the number of characters we are pushing to the property.
The Data Layer Variable type in GTM gets a value from the dataLayer and makes it available to other tags. The script above pushes a ‘lp_path’ variable to the dataLayer. This turns it into a GTM variable.
Modify your GA4 configuration tag in Google Tag Manager to include the following user property. Set the value of the property to the variable you just created. Note that double curly braces tell GTM to insert a dynamic GTM variable value.
I named the property ‘first_user_landing_page’ because GA4 prefixes various user-scoped dimensions with ‘First user’. For example, the ‘First user default channel grouping’ dimension indicates the channel a user came from the first time they visited a site.
At this point, you have everything you need in GTM, but there’s one problem: assuming your GA4 configuration tag is also triggered on Page View, the path variable you created won’t exist when the configuration tag fires. You can fix this by changing your configuration tag to fire on the DOM Ready trigger. If you do this, keep in mind that other GA4 tags inherit parameters set in the configuration tag, so you should update their triggers as well. Another way to accomplish the same result would be to configure tag sequencing to fire the Custom HTML tag before the configuration tag.
At this point you are done with the GTM portion of this process. Test your new tag, variable and configuration tag change in GTM preview mode and publish your changes if everything looks good.
In GA4, go to Admin > Custom definitions and add the following dimension.
You’ll need to wait at least a day for data to populate in GA4 before this step.
When ready, refresh your GA4 data source.
I mentioned above that GA4 limits user properties to 36 characters. This is pretty annoying for our purposes, since page paths can often be longer than that. I fixed this in Looker Studio by creating a lookup table in a Google Sheet that cross-references truncated page paths with complete page paths. Below is an example of what this table looks like. I created the lookup column on the left with the Google Sheets LEFT formula, e.g. =LEFT(B2,26)
You’ll then need to create a new data source in Looker Studio to connect to your Sheet.
We’re so close! The last step is to create a blend in Looker Studio from your GA4 data source and the lookup table to get the full LP path in your report. Below is how I have my blend set up, but feel free to pull in other metrics from your GA4 data source.
Also notice that I added a filter to my GA4 data source – the filter excludes null values from the blend. This is not absolutely necessary, but you will likely get some instances where your configuration tag fires and the custom HTML tag you created has not populated the path value.
One caution: make sure not to have any duplicate rows in the lookup sheet. Duplicate rows on the right side of your join will result in duplicate rows in the joined data, which will inflate your metrics.
Voilá, that’s it! You now have a blend you can use to report on First user landing page in Looker Studio!
Plus a few other gotchas.
Google recommends that you avoid creating custom dimensions with “high-cardinality”. What this means specifically is that dimensions with more than 500 unique values may affect reporting performance, and will result in some of your landing pages being aggregated into an “other” row in reporting. So, if you have a lot more than 500 pages on your site that users are likely to land on, the technique I have described here may be of limited value.
A few more things to keep in mind:
If you’d like help with this or anything else to do with GA4 or Looker Studio, check out our marketing data analysis services.
Read more GA4 resources and tutorials.
Nico loves marketing analytics, running, and analytics about running. He's Two Octobers' Head of Analytics, and loves teaching. Learn more about Nico or read more blogs he has written.
Google tests AI Sales Assistant with conversational advice; TikTok launches an AI tool to create…
Trouble with troubleshooting, new features in GA4 & Looker Studio, what "do not sell" means…
Report on traffic from people clicking through from AI services like ChatGPT. Build an exploration…