Anobee

Website Growth

What Does (not set) Mean in GA4? The Common Causes and How to Fix Each

By Bibek Thapa · Published · 9 min read

Quick Answer

(not set) in GA4 is a placeholder that means Analytics received no value for that dimension. On landing page it means the session had no page_view. On source / medium it means session_start was missing, so the traffic also shows as Unassigned. On city it means the IP address could not be placed. Some causes are tagging problems you can fix; others are normal.

Illustration of an analytics table with one highlighted row of empty placeholder cells and a magnifying glass tracing it back to three cause icons: a clock, a broken tag and a map pin
Table of ContentsOn this page
  1. What does (not set) mean in GA4, compared with similar values?
  2. Where (not set) showed up in a real GA4 property
  3. Landing page (not set) in GA4
  4. Source / medium (not set) and Unassigned traffic
  5. City and country (not set)
  6. (not set) in Google Ads and campaign dimensions
  7. Other dimensions that show (not set)
  8. How to check your own (not set) values
  9. Frequently Asked Questions
  10. Sources and References
Key Takeaways
  • (not set) is GA4's placeholder for a dimension that received no value. The cause depends on which dimension shows it.
  • Landing page (not set) means a session with no page_view, usually one that restarted after 30 minutes of inactivity.
  • Source / medium (not set) means session_start was missing; GA4 then reports that traffic as Unassigned.
  • City (not set) comes from IP-based location that could not be resolved. You cannot fix it with tagging.
  • Campaign links tagged with utm_source but no utm_medium also land in Unassigned, even when the source is an AI assistant.

What does (not set) mean in GA4? It is a placeholder. Google Analytics shows (not set) when it has not received any information for a dimension [1]. It is not an error message, and it does not mean the same thing everywhere. On landing page it means the session had no page view. In source / medium reports, the session had no session_start event. For city, GA4 could not match the visitor's IP address to a city.

The useful question is which report shows it, and whether that cause can be fixed. This guide goes through each one.

Method note: the examples come from Anobee's own GA4 property for anobee.com, 1 to 28 October 2026, read in the standard reports and through the GA4 Data API on 29 October 2026. Causes and fixes come from Google's Analytics Help pages, checked the same day.

What does (not set) mean in GA4, compared with similar values?

GA4 has four placeholder values that are easy to confuse. Each one means something different.

ValueWhere it appearsWhat it means
(not set)Any dimensionAnalytics received no value for that dimension [1]
(data not available)Some dimensionsRelated to (not set), but you typically cannot take action to reduce it [1]
UnassignedChannel group dimensionsNo channel rule matched the traffic [4]
(other)Any dimension in a large reportAn aggregated row created when cardinality limits apply [4]

The key difference is whether you can act on it. For (not set), Google says action is "generally possible". For (data not available), it usually is not [1].

Where (not set) showed up in a real GA4 property

Here is what one ordinary property showed over 28 days. Anobee's GA4 recorded 563 sessions from 421 active users between 1 and 28 October 2026.

Report and dimension(not set) or UnassignedShareFixable?
Landing page25 sessions4.44% of sessionsMostly no (session timeouts)
Traffic acquisition, channel group6 Unassigned sessions1.07% of sessionsPartly (tagging and UTMs)
Demographic details, city74 active users17.58% of active usersNo (IP-based location)

The largest (not set) row was the one site owners can do least about. The smallest was the one most worth fixing. That pattern is common, which is why the cause matters more than the size of the row.

Landing page (not set) in GA4

Cause: Google says the landing page dimension shows (not set) when a session does not have a page_view event [1].

In practice, the usual cause is a timeout. By default, a GA4 session ends after 30 minutes of inactivity [3]. If a visitor leaves an article open, comes back an hour later and scrolls or clicks, GA4 starts a new session. That session has a session_start event but no fresh page_view, so it has no landing page.

GA4 Landing page report for anobee.com, 1 to 28 October 2026, with (not set) as the third row: 25 sessions, 4.44% of the total, 0 new users and 3 seconds of average engagement
Anobee's GA4 Landing page report, 1 to 28 October 2026.

Anobee's data fits that pattern. The 25 (not set) sessions had 0 new users, so every one came from someone who had visited before. Instead of page views, the events inside them were session_start, user_engagement and a few clicks on FAQ items and scroll events. No page_view appeared in any of them. Only 2 of the 25 counted as engaged sessions.

Fix: usually none is needed. A small, stable share of landing page (not set) is a by-product of how sessions work. Look closer only if:

  • the share suddenly grows, which can mean page_view events stopped firing on some templates;
  • custom events fire before the Google tag loads. Google warns that events sent before the config command can end up separated from the page view and session start [2].

GA4 also lets you adjust the session timeout in the tag settings [3]. However, a longer timeout changes every session count, so do it only for a real business reason, not to hide a (not set) row.

Source / medium (not set) and Unassigned traffic

Cause: session source / medium reports (not set) when the automatically collected session_start event is missing. Those sessions then appear as Unassigned in the default channel group, because no channel rule matches them [1].

Google lists three common reasons session_start goes missing:

  1. The tag fires too late. In Google Tag Manager, the Google tag should use the "Initialization - All pages" trigger [1]. The Google Tag Manager setup guide shows where that trigger is set.
  2. Events fire before the tag. Custom events sent before the config command get batched with session_start, and later events cannot be tied back to that session [2].
  3. Consent mode is set up incorrectly. Using the default command for later consent changes, instead of the update command, can lose the session_start event [1].
GA4 Traffic acquisition report for anobee.com, 1 to 28 October 2026, showing five channels with Unassigned as the last row at 6 sessions, 1.07% of the total, and 0 engaged sessions
Anobee's GA4 Traffic acquisition report, 1 to 28 October 2026.

So what does (not set) mean in GA4 when it reaches the channel report? Anobee's 6 Unassigned sessions show two versions of it. The Data API broke down 4 of them for the same dates. Two had a fully (not set) source / medium, the classic missing session_start case. The other two had a source but no medium: openai / (not set) and perplexity / (not set).

The second pattern matters more in 2026. GA4's AI Assistant channel requires the medium "ai-assistant", which Analytics sets automatically when the referrer matches its list of AI assistants [4]. A link tagged with utm_source alone overrides that referrer and leaves the medium empty, so the visit falls into Unassigned instead of AI Assistant. Google's tagging guide makes the same point: traffic from a user-defined source or medium can end up Unassigned when no rule fits it [2].

Fix: set the Google tag to the Initialization trigger, fire custom events only after it, and use consent mode's update command. When you tag links yourself, always include both utm_source and utm_medium. The Google Analytics setup guide covers the base installation.

One case is not a fault. Google says sessions carrying the srsltid parameter can show (not set) when the referrer is not google.com, for example when someone shares a modified Google result URL. GA4 does not count those sessions as organic [1].

City and country (not set)

Cause: GA4 approximates geography dimensions such as city and region from the IP address of the traffic [5]. When GA4 cannot match an IP address to a city, the city is (not set).

For some regions, there is also a second cause. GA4 lets you turn off granular location and device data collection per region. When it is off, Analytics does not collect city, along with details such as device model [6].

GA4 Demographic details report switched to City for anobee.com, 1 to 28 October 2026, with (not set) as the top row at 74 active users, 17.58% of the total
Anobee's GA4 Demographic details report by City, 1 to 28 October 2026.

City (not set) was the largest row in Anobee's city report: 74 active users, more than any named city. However, the Data API split it by country. China accounted for 31 users with only 2 engaged sessions between them, and Nepal for 28 users with 10 engaged sessions. Country itself was (not set) for just 2 users. In other words, GA4 usually knew the country and could not narrow it to a city.

Fix: none through tagging. Treat city (not set) as "location unknown", and judge low-engagement clusters on their behavior, not their location. If you disabled granular location for a region, the (not set) share for that region is expected.

(not set) in Google Ads and campaign dimensions

If Google Ads dimensions show (not set), Google lists four causes [1]:

  • Google Ads and Analytics are not linked.
  • Auto-tagging is turned off.
  • Another Google Ads account that is not linked to the property is sending traffic with the GCLID parameter.
  • Someone tagged destination URLs manually with incomplete or incorrect UTM parameters.

Also, the last cause applies beyond ads. Google notes that badly tagged URLs from social networks, blogs or other sites produce (not set) in the same way [1]. Anobee's campaign name dimension showed (not set) for exactly the sessions that were Unassigned, which is what incomplete tagging looks like.

If you run ads across several networks, the cross-network channel guide explains how GA4 groups those campaigns.

Other dimensions that show (not set)

DimensionWhy (not set) appearsWhat to do
Content groupAutomatic events such as session_start do not accept content_group, or the value was sent empty [1]Expected when combined with automatic events; check for empty values
Custom parametersRegistered less than 24 hours ago, or missing from the first event of the session [1]Wait 24 hours; send the parameter on the first event
Custom-defined User IDRegistering user ID as a custom dimension [1]Google generally recommends against it
Event metrics with session or user dimensionsInconsistent cookie prefixes split users and sessions [2]Use one cookie prefix across the site

How to check your own (not set) values

  1. Open the report where it appears. Landing page sits under the Landing page report; Unassigned under Traffic acquisition; city under Demographic details.
  2. Note the share, not just the count. Google does not publish an acceptable percentage, so compare against your own previous periods.
  3. Add a second dimension. For landing page (not set), add session source / medium. For Unassigned, do the same to see whether only the medium or everything is missing.
  4. Match the cause to the dimension using the sections above, and fix the tagging causes first.
  5. Recheck after a full week, because a tag change only affects new data.

Finally, once you know what does (not set) mean in GA4 for each report, check how engaged those sessions really are. For that, the guide to GA4 engaged sessions explains the metric used in the tables above.

Frequently Asked Questions

Is (not set) in GA4 bad?

Not always. A small landing page (not set) row from timed-out sessions is normal. A large or growing (not set) in source / medium, or in Google Ads reports, usually points to a tagging or linking problem worth fixing.

What is the difference between (not set) and Unassigned in GA4?

(not set) is a dimension value meaning GA4 received no data for it. Unassigned is a channel group value meaning no channel rule matched the traffic. Sessions with a (not set) source / medium are reported as Unassigned.

Why is my landing page (not set) in GA4?

Google says landing page shows (not set) when a session has no page_view event. The most common case is a visitor who leaves a tab open for more than 30 minutes and then interacts again, which starts a new session without a new page view.

Can I remove (not set) from GA4 reports?

You can reduce the causes you control: fire the Google tag on the Initialization trigger, use complete UTM parameters, link Google Ads with auto-tagging and use the consent update command. Location and timeout-based (not set) values will remain.

Sources and References

  1. Google Analytics Help: What the value (not set) means in your reports ↩
  2. Google Analytics Help: Tagging best practices to avoid unassigned, (not set), and direct traffic issues ↩
  3. Google Analytics Help: About Analytics sessions ↩
  4. Google Analytics Help: Default channel group ↩
  5. Google Analytics Help: Predefined user dimensions ↩
  6. Google Analytics Help: EU, Switzerland, or UK-focused data and privacy ↩

Was this guide helpful?

Your answer helps Anobee improve future updates.

Bibek Thapa

Written by

Bibek Thapa

AI-Powered Digital Growth Strategist

Bibek Thapa works across AI workflows, SEO, AI search optimization, content strategy, website growth, and productivity systems at Anobee.

  • AI workflows
  • Digital growth
  • SEO
  • GEO
  • AEO
  • Content strategy
  • Website growth

Related Articles

Google Analytics setup in four parts: create the GA4 property, add a web data stream, install one Google tag, and verify the data, with a warning not to install the tag twice

Website Growth

Google Analytics Setup Guide: GA4 for Websites

Set up GA4 on a website once and correctly: create the property, install one Google tag, confirm it works, and change the settings that quietly limit your reports.

Bibek Thapa · May 10, 2026 · 12 min read

Google Tag Manager setup workflow from website container to GA4 verification

Website Growth

Google Tag Manager Setup Guide: Install GTM + GA4

Install a Google Tag Manager web container, add the GA4 Google tag, test it in Tag Assistant and publish safely, then add one custom event you can trust.

Bibek Thapa · Jun 12, 2026 · 13 min read