(not set) in GA4 Reports: Causes and Fixes
(not set) is the value GA4 shows when a dimension has no data. It turns up in landing page reports, in source / medium, in Google Ads reports and in custom dimensions, and each has its own cause. This guide goes through them one by one, with the fix Google gives for each, and explains how (not set) differs from (data not available).
This guide is built from Google's Analytics Help article what the value (not set) means in your reports and its companion on (data not available), plus the other Help pages linked below. How to build campaign links is in our UTM tracking links guide, and how GA4 sorts visits into channels, including Unassigned, is in our channel groups guide. This page is about finding which cause applies to your property.
- What (not set) means
- Causes at a glance
- Landing page shows (not set)
- Session source / medium shows (not set)
- Google Ads dimensions show (not set)
- Custom parameters, content groups and User ID
- Consent mode mistakes
- (not set) vs (data not available)
- How we track down (not set)
- Frequently asked questions
What (not set) means
Google describes (not set) as "a placeholder name that Analytics uses when it hasn't received any information for a dimension." It is not an error message and not a traffic source. It means the event data GA4 received had nothing in that field.
Two things follow. First, the cause depends on the dimension: an empty landing page and an empty Google Ads campaign come from different problems. Second, it is usually fixable. Google contrasts it with (data not available), where you "typically can't take action to reduce it", while for (not set) "action is generally possible." Most fixes only affect data collected after the change; Google's comparison table says the Daily (not set) value is usually not updated later.
Causes at a glance
| Where you see it | Common cause in Google's article | Where to fix it |
|---|---|---|
| Landing page | The session has no page_view event | Tag setup, consent setup |
| Session source / medium | The session_start event is missing, often because the Google tag is not on the Initialization trigger | Tag Manager trigger |
| Google Ads dimensions | Accounts not linked, auto-tagging off, an unlinked Ads account, or incomplete UTM tags | GA4 product links, Google Ads settings, campaign URLs |
| Custom parameters | Less than 24 hours since registration, or the value was not on the first event of the session | Wait, or send the parameter earlier |
| Content group | Combined with session_start or first_visit, or sent as an empty value | Report design, tag values |
| Several dimensions at once | Consent mode commands used the wrong way | Consent banner setup |
Landing page shows (not set)
Google's explanation is one line: "(not set) can appear for the landing page dimension when a session doesn't have a page_view event." The landing page is taken from the first page view of the session, so a session made only of other events has nothing to show.
On the web, the automatically collected events list says page_view fires "each time the page loads or the browser history state is changed by the active site", collected through enhanced measurement. Sessions without one tend to come from:
- Events sent before or without the page view, for example a tag that fires a custom event on a trigger that runs earlier than the Google tag.
- A session that starts again after the 30-minute timeout while the visitor is still on the same page. The next click or scroll event opens a new session, but no page loaded, so it has no landing page. Our users vs sessions guide explains the timeout.
- Page views sent by hand from a custom setup that misses some pages or page types. Our enhanced measurement guide covers what GA4 collects on its own.
- The consent mode mistakes described further down.
A small share of (not set) landing pages is normal for the timeout case. A large share usually points to the tag setup.
Session source / medium shows (not set)
Google says session source / medium "will report (not set) for sessions where the automatically collected event session_start is missing." The cause it names is a Google tag in Tag Manager that is not on the Initialization trigger type.
The fix in Tag Manager: open your container, go to Tags, open your Google tag, click the Triggering section and then the plus sign, choose Initialization - All pages, remove the previous trigger with the minus sign, and save. Then publish the container. The trigger types themselves are covered in our GTM triggers guide.
This matters beyond the one dimension. Google notes that a (not set) source / medium means the traffic "will be shown as Unassigned in the default channel group as there are no channel rules that match the event data." So a rise in Unassigned and a rise in (not set) source / medium often have the same cause.
One case is not a setup fault. Google says you may see (not set) "for sessions with the srsltid parameter, when the referrer is not google.com", for example when someone shares a link copied from a Google result. Google states these sessions "are not classified as organic."
Google Ads dimensions show (not set)
For the Advertising reports, Google lists four common causes:
- The accounts are not linked. Links are made in Admin, under Product links, Google Ads links, as the Google Ads linking article describes. You need to be an administrator or editor of the property, and the Google account needs administrative access in Google Ads.
- Auto-tagging is off. With auto-tagging on, Google Ads adds a gclid parameter to the landing page URL. The auto-tagging article shows where to check it: Admin, Account settings, Auto-tagging. Our Google Ads auto-tagging guide covers the setting and the cases where the gclid gets lost.
- Clicks come from an unlinked Google Ads account. If another Ads account advertises your site, its traffic shows as (not set) "because it's not possible to map these key events to a particular click."
- Manual tags are incomplete or wrong. Google says this applies to links from any source, "social networks, blogs, or other websites", not only Google Ads.
The traffic-source dimensions article explains why a partial tag hurts: when the click ID can't be used and any UTM parameter is present, GA4 takes all traffic-source values from the UTM parameters "exclusively", and "Missing UTM parameters will result in (not set) values being present in reporting." Tag every campaign link with a full set, or none.
Custom parameters, content groups and User ID
New custom dimensions. Google says you may see (not set) "during the first 24 hours after you register a custom parameter." Wait a day before you judge it. Registering parameters is covered in our custom dimensions guide.
Session-scoped values. For session_start and first_visit, Google says "all event parameters from the first event collected are retained." If a parameter was not on that first event, it shows as (not set) when you report it against those events. Send values you need for the whole session on the first hit.
Content groups. Combining content group with session_start or first_visit gives (not set) because "automatically collected events don't accept the content_group parameter." It also appears when the tag sends an empty value, such as a content_group parameter set to an empty string.
User ID as a custom dimension. Google says "it's recommended that you don't register a user ID as a custom dimension", and that (not set) can appear if you do. Our GA4 User-ID guide covers the supported way to send it.
Consent mode mistakes
Google lists two consent mode errors that lead to (not set):
- Using the default command for every consent value, including the change after the visitor answers the banner. In that case "the user_engagement event isn't sent, and the initial event with the session_start parameter is lost." The visitor's choice should be sent with the update command.
- Sending extra events with denied consent after the visitor granted it. Google says these events "are treated as a separate session, which won't have a session_start event."
Google's consent mode article gives the same order: set a default state, then "Update consent state once the visitor indicates their choice." If your (not set) values jumped the week a new cookie banner went live, check this first. Our cookie consent banners guide covers the banner side.
(not set) vs (data not available)
The two look alike in a report but mean different things. Google says (data not available) appears when data "is unavailable or hasn't been processed, and an advertising identifier, like GCLID, or any UTM parameter is present." In that case source and medium show (data not available), the campaign shows "(cross-network)" and the channel becomes Cross-network.
| (not set) | (data not available) | |
|---|---|---|
| Meaning | Google has not received information for the dimension | Google received it but has not processed it yet |
| Dimensions | All dimensions | Source and medium traffic-source dimensions |
| Can you act on it? | Generally yes | Generally no |
| Common causes | Setting or tag misconfigurations | Processing delays |
Google adds that more (data not available) values are expected in Intraday data than in Daily data, and that event-level data can be updated "up to 12 days later." So recent days often look worse than they will. One cause is on your side: a setup that gives the same User ID to many people, which GA4 treats as a single user with (data not available) source and medium.
How we track down (not set)
This is our own practice, not Google guidance:
- We start with the dimension, not the site. We note which dimension shows (not set), its share of sessions, and the date it started, then match that against Google's list above.
- We check the date against the change history: a new consent banner, a container publish, a site redesign or a new Ads account. Our annotations guide shows how to mark those dates in GA4.
- We reproduce the visit in Tag Manager preview and DebugView, with consent granted and denied, and confirm the first events are session_start and page_view.
- We judge a fix by the following week's data, since earlier days are not corrected.
Frequently asked questions
What does (not set) mean in Google Analytics?
It is a placeholder GA4 uses when it has not received any information for a dimension. It is not a traffic source. The cause depends on the dimension, and in most cases you can fix it.
Why is my landing page (not set) in GA4?
Google says this happens when a session has no page_view event. Check that the Google tag sends page views on every page and that consent mode is set up with a default state and an update command.
Why is session source / medium (not set)?
The session is missing its session_start event. A common cause is a Google tag in Tag Manager that is not on the Initialization - All pages trigger. These sessions also show as Unassigned in the default channel group.
Why do my Google Ads campaigns show as (not set)?
Google lists four causes: Google Ads and Analytics are not linked, auto-tagging is off, clicks come from an Ads account that is not linked, or manual UTM tags are incomplete or wrong.
Will GA4 fix old (not set) data after I fix the cause?
Usually not. Google says the Daily (not set) value is usually not updated later, so judge the fix on data collected after the change.
For more on measurement, see our guides to GA4 basics, Google Tag Manager, key events and monthly website reporting.