Fixing (not set) in GA4: Causes and Solutions
The (not set) value in GA4 reports is not a single problem, it is a symptom that appears across different dimensions for different reasons. Fixing it requires identifying which dimension is affected and tracing back to the specific data gap causing it.
(not set) in Source/Medium and Channel Grouping
Source/medium (not set) is almost always caused by events being fired without an associated session.
In GA4's event based model, some events, particularly those fired server side via the Measurement Protocol or through background processes, can be attributed without a session context.
When GA4 cannot associate an event with a session that has a source, it assigns (not set) to the source/medium dimension.
The most common triggers are:
- Measurement Protocol events sent with a client ID but without a valid session ID
- events fired before the GA4 session_start event completes on page load (a timing issue in some tag configurations)
- offline conversion imports that are not correctly attributed to an originating session.
To diagnose, segment your (not set) source traffic by event type, if it is concentrated in specific custom events or in certain device categories, that points to the specific implementation area causing the gap.
(not set) in Landing Page and Page Location
(not set) in the landing page dimension indicates sessions where GA4 could not determine the first page the user visited.
This can happen when the page_view event for the first page fires before the GA4 configuration tag is fully loaded, meaning the page location parameter is missing or empty.
It can also occur when single page application navigation events are fired without the correct page_location and page_referrer parameters. In some implementations, the gtag.
js library loads asynchronously and the page_view fires before the measurement ID is configured, creating a headless event with no page data.
Checking the ratio of sessions with (not set) landing pages against your total sessions tells you whether this is a minor edge case or a significant tracking gap.
High proportions, above 2 to 3%, usually indicate a structural loading order issue rather than a rare edge case.
(not set) in Custom Dimensions
(not set) in custom dimensions simply means the registered parameter was not included in the event for those sessions.
This is expected behaviour when a custom dimension only applies to specific events or specific user segments.
However, if you are seeing (not set) in a dimension that should be populated on every session or every purchase, it indicates inconsistent implementation, not every tag firing path is sending the required parameter.
For user scoped custom dimensions, (not set) appears for users who have not yet triggered any event that sets the parameter. For event scoped dimensions, it appears for any event where the parameter was not included.
Reviewing your GTM tag configuration against the full list of custom dimensions, and checking that parameters are being populated in every relevant trigger scenario, will systematically reduce (not set) in custom dimension reports.
Ready to audit your GA4 property?
Run a full GA4 audit in under 10 minutes. Free to start.
Start Free Audit