How Do I Fix (not set) Landing Pages in GA4 Reports?

Question from user:

Hi all!

I need some help, I have a high number of users with (not set) on the landing page report. Does anyone know how to fix it? I’ve already googled several contents but I can’t find any solution that fits.

When I change the dimension to “page” and not “landing page”, the (not set) value disappears. Also, if I put a page second dimension in my landing page reports, I can see which pages are being affected.

Answer from Nabil:

What causes the “(not set)” value for landing pages in GA4 reports?

This is a very common issue, Luan, and it’s good that you’ve already noticed the difference between the ‘Landing page’ and ‘Page’ dimensions, as this helps narrow down the cause.

The appearance of (not set) in the ‘Landing page’ report, but not the ‘Page’ report, strongly suggests a problem with the very first event or pageview for a session not firing correctly or having the correct data attached.

When ‘Page’ is used, it reports on events after the session has been established, which is why those values are available.
The ‘Landing page’ dimension relies on the initial page load data.

The most frequent culprit for this is users leaving the page before the initial tracking code has executed fully, or an issue with the timing of your page_view event, which is the event that tells Google Analytics what the landing page was.

If the page_view or an initial event like it doesn’t fire, the session starts but the landing page is never recorded, resulting in (not set).

Since you can see the affected pages with a secondary dimension, you know the data is there later in the session, just not for the very first hit.

Check your Google Tag Manager (GTM) setup to ensure your page_view event is the first thing that fires, ideally on the GTM ‘Initialization’ or ‘Container Loaded’ triggers to execute as quickly as possible.

You should also check for any errors on those specific pages that are showing (not set) using the GTM Preview mode to see if the page_view tag is being blocked or failing to fire.

For a robust, long-term solution that bypasses these client-side timing issues and gives you complete control over your data, integrating the Google Analytics Data API with other services is a powerful approach.

You can use GTM to collect all your raw event data, but instead of sending it directly to Google Analytics 4 (GA4), you can utilize a server-side solution, perhaps via Stape or Google Cloud Platform, to push that data into BigQuery.

BigQuery serves as a reliable, non-sampled data warehouse where every single event is stored.

This architecture is excellent because it allows you to manipulate and clean the data before reporting.

You can then use the Google Analytics Data API to build reports that specifically handle the landing page logic by querying BigQuery directly, or, even better, use the Looker Studio API to pull the pre-cleaned data from BigQuery into custom dashboards.

This allows you to define the ‘landing page’ based on the very first event in the BigQuery session stream, correcting the (not set) issue at the data reporting level, independent of the initial client-side loading failure.

This server-side tagging and BigQuery approach provides data reliability and control far beyond the standard GA4 implementation, effectively fixing the (not set) issue by ensuring a complete record of the session’s first page is always available for analysis.

About The Author