What Does Not Set Mean in Google Analytics 4?
Seeing "(not set)" in a Google Analytics 4 report can be frustrating. You're trying to analyze your data, but GA4 is giving you a vague label instead of a clear answer. This isn't an error, but a placeholder telling you that GA4 collected data for an event but was missing the specific piece of information (the dimension) you’re looking at. This article breaks down why "(not set)" appears in your most common GA4 reports and gives you actionable steps to fix or diagnose the root cause.
What Does "(not set)" Actually Mean?
Think of it as receiving a package with a blank "return to sender" label. You got the package (the event, like a page view or a session start), but you don't have a specific detail about its origin (like the landing page or traffic source). Google Analytics uses "(not set)" as a default value when it has no data for a given dimension.
This isn't just one problem, it's a symptom that can have different causes depending on which report you're viewing. The key to resolving it is to identify the context - the specific dimension and report where you see "(not set)" - and work backward from there.
Common Reports Where "(not set)" Appears and How to Fix It
Let's go through the most likely places you'll encounter "(not set)" and analyze what's happening behind the scenes.
1. Landing Page + query string is (not set)
This is probably the most common place people see "(not set)". A landing page is the first page a user sees in a session. For GA4 to identify a landing page, a session needs to begin with a page_view event. If a session starts with a different event, there's no page associated with its beginning, leading to "(not set)" as the landing page value.
Common Causes:
- Sessions Without a Page View: In GA4's event-based model, a session can technically start without a
page_viewevent. For example, if a user opens a tab and leaves it idle for more than the 30-minute session timeout, the next interaction - even just auser_engagementevent triggered by returning to the tab - can start a new session. Since that first event wasn't a page view, GA4 doesn't have a landing page to assign. - Measurement Protocol Hits: If you are sending events to GA4 from a server using the Measurement Protocol (for example, server-side tracking), a session might start with an event you send. If that server-side event doesn't include the page location parameters (
dl) and page title (dt), GA4 won’t be able to determine the landing page. - Consent Mode Issues: If a user lands on your site and doesn't initially grant cookie consent, some tags might be blocked. By the time they grant consent, the first logged event in the session might not be the initial
page_view.
How to Investigate and Fix:
- Use Explorations to Drill Down: In GA4, go to the Explore section and create a new free-form report. Set your rows to "Landing page + query string". For columns, add "Event name". Now you can see which events are firing within sessions that have a "(not set)" landing page. You might see a lot of
session_startandfirst_visitevents followed by nothing else, indicating a bounce or a session that ended before a page truly loaded and tracked. - Review Your Custom Events: Look for custom events that might be firing automatically before the main page view tracker has a chance to load. Adjusting the firing order in Google Tag Manager can sometimes resolve this.
- Check Measurement Protocol Implementation: If you use the Measurement Protocol, ensure every event that could start a session includes the appropriate session ID (
sid), engagement parameters, and page location details (dl).
2. Session Source / Medium is (not set)
When you see "(not set)" as the source/medium, it means GA4 can't determine where the traffic came from. GA4 follows a specific set of rules to attribute traffic, and if none of those rules can be met, you get "(not set)".
Common Causes:
- Missing or Incorrect UTM Parameters: This is the number one cause. If you're running email campaigns, social media ads, or linking from external documents, you must tag your URLs with UTM parameters (e.g.,
?utm_source=facebook&utm_medium=social&utm_campaign=summer_sale). If you simply link to your site without these tags, GA4 may not know where the click came from. - Google Ads Auto-Tagging Problems: If auto-tagging is enabled in Google Ads, it adds a
gclid(Google Click ID) to your final URLs. If this parameter gets stripped by a URL redirect or a privacy setting on your website, GA4 can't connect the session to your Google Ads campaign, resulting in "(not set)". - Offline or Unattributable Events: Similar to landing page issues, if you're sending events from a server (via Measurement Protocol) and don't include attribution details like UTMs, GA4 has no idea how to categorize that session's source.
How to Investigate and Fix:
- Establish a Consistent UTM Strategy: Create a universal system for tagging all your inbound marketing links. Use lowercase letters, replace spaces with underscores, and be consistent with your source and medium names. A spreadsheet or a URL builder tool can help your team stay organized.
- Audit Your Google Ads Account: Go to your Google Ads settings and confirm that auto-tagging is enabled. Perform a test click on one of your ads and check that the
gclid=...parameter is present on the final URL in your browser. - Differentiate from "(direct) / (none)": It's important to know the difference. (direct) / (none) means GA4 determined the user came directly (e.g., they typed your URL or used a browser bookmark). (not set) means GA4 has no idea how the traffic arrived and is essentially throwing up its hands.
3. Content Group is (not set)
Content groups are a great way to analyze performance by categorizing pages (e.g., 'Blog', 'Product Pages', 'Services'). If you're seeing a large number of 'not set' values here, it simply means many of your pages haven't been assigned to a group.
Common Causes:
- Incomplete Grouping Rules: When you set up content groups in GA4 (Admin > Data display > Content groupings), you create rules based on page path, hostname, or page title. Any pages that don't match one of your predefined rules will fall into the "(not set)" category.
- Newly Published Pages: If you've recently added new sections to your site, they might not be included in your existing content grouping rules.
How to Investigate and Fix:
- Audit Your Page Paths: Go to the Pages and Screens report and look at the list of pages. Are there new URL structures (e.g., a new
/case-studies/section) that you haven't categorized yet? - Refine Your Content Grouping Rules: Go back to your content grouping settings and add or adjust your rules to capture all relevant pages. It might be helpful to create a broad "catch-all" rule for pages that don't fit into other groups, such as an "Other" category.
4. Custom Dimensions are (not set)
Custom dimensions are tags you create to collect information specific to your business, like tracking the author of a blog post, a user's subscription level, or the variant of a product viewed. Seeing "(not set)" here is often normal and expected.
Common Causes:
- Relevant Only to Certain Events: A custom dimension is often tied to a specific event. For example, if you have a custom parameter
author_namethat fires with apage_viewon blog posts, this dimension will be "(not set)" for every other event (likeadd_to_cart,sign_up, etc.) on your website. - Implementation Issues: The parameter for your custom dimension may not be included in your GTM tag or on-page code for all the events it should be.
How to Investigate and Fix:
- Evaluate if It’s a Problem: First, ask yourself if it's expected. For a
post_authordimension, it's perfectly fine for it to be "(not set)" on your homepage. The value only matters in the context of your blog post pages. - Use DebugView for Live Testing: Google Tag Manager's preview mode and GA4's DebugView are your best friends here. As you trigger events, you can see in real-time whether your custom parameters are being sent correctly. If an event is supposed to have your custom parameter but doesn't, you've found the source of the problem.
A Quick Troubleshooting Workflow
Feeling overwhelmed? Here’s a simple process to follow whenever you find '(not set)' in a key report.
- Identify the Primary Dimension: What report are you in? What information is missing? (e.g., "Landing Page").
- Add a Secondary Dimension for Context: This is a powerful move. If your landing pages are "(not set)", add "Event Name" as a secondary dimension. You might discover that most of those sessions only contain a
session_startand auser_engagementevent, confirming the idle tab theory. If your source/medium is "(not set)", add "Landing Page" to see which pages are getting unattributed traffic. - Trace the Data Collection Path: Based on the context, where did the data breakdown occur?
- Test with Debugging Tools: Use GTM Preview Mode and GA4's DebugView to watch event data flow in real time. This confirms what parameters are - and are not - being sent as you interact with your site.
Final Thoughts
Seeing "(not set)" in Google Analytics isn't a single flaw to be fixed, but rather an indicator that your data story is missing a chapter. By understanding the context of the report you’re in and following a logical troubleshooting process, you can fill in those blanks and gain a clearer, more accurate picture of your user behavior and marketing performance.
Digging through GA4 reports with secondary dimensions, drilling down into event parameters, and cross-referencing platforms just to diagnose a tracking issue takes time and expertise. This is precisely the kind of manual work we built Graphed to eliminate. Instead of spending hours in GA4’s interface, you can connect your accounts and simply ask, "Show me the events causing '(not set)' landing pages" or "compare revenue from my Facebook ads vs Google ads." We turn manual reporting cycles into 30-second conversations, giving you actionable insights faster so you can get back to growing your business.
Related Articles
How to Connect Facebook to Google Data Studio: The Complete Guide for 2026
Connecting Facebook Ads to Google Data Studio (now called Looker Studio) has become essential for digital marketers who want to create comprehensive, visually appealing reports that go beyond the basic analytics provided by Facebook's native Ads Manager. If you're struggling with fragmented reporting across multiple platforms or spending too much time manually exporting data, this guide will show you exactly how to streamline your Facebook advertising analytics.
Appsflyer vs Mixpanel: Complete 2026 Comparison Guide
The difference between AppsFlyer and Mixpanel isn't just about features—it's about understanding two fundamentally different approaches to data that can make or break your growth strategy. One tracks how users find you, the other reveals what they do once they arrive. Most companies need insights from both worlds, but knowing where to start can save you months of implementation headaches and thousands in wasted budget.
DashThis vs AgencyAnalytics: The Ultimate Comparison Guide for Marketing Agencies
When it comes to choosing the right marketing reporting platform, agencies often find themselves torn between two industry leaders: DashThis and AgencyAnalytics. Both platforms promise to streamline reporting, save time, and impress clients with stunning visualizations. But which one truly delivers on these promises?