What Is Not Set Traffic in Google Analytics 4?

Cody Schneider9 min read

Seeing a long list of "(not set)" values in your Google Analytics 4 reports can be a real headache, leaving you wondering where your traffic is actually coming from. This entry isn't an error, but a placeholder for missing information. In this article, we'll walk through what "(not set)" means, the most common reasons it appears, and practical steps you can take to fix it.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

What Does "(not set)" Actually Mean in GA4?

In simple terms, "(not set)" is how Google Analytics says, "I received data, but the specific piece of information for this dimension was missing or unavailable." Think of it like a package arriving at your doorstep. You have the package (the event or session data), but the "from" address on the label is blank. You know something was delivered, but you don't know the origin.

When you see "(not set)," a user interaction was successfully recorded - like a page view, a click, or a purchase - but GA4 couldn't attribute that interaction to a specific dimension category like a traffic source, landing page, or geographic location. It's a signal that there's a gap in your data tracking that needs to be filled.

While an occasional "(not set)" is normal, a high volume indicates underlying problems with your setup that could be skewing your reports and preventing you from making informed marketing decisions.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Common Reports Where "(not set)" Appears and Why

You can find "(not set)" in several different reports, but a few areas are more common than others. Understanding the context helps you pinpoint the root cause more effectively.

1. Traffic Source & Channel Grouping Reports

This is arguably the most critical and frustrating place to see "(not set)". Your traffic reports are meant to tell you which channels are driving results, from social media to email to paid search. If a large chunk is "(not set)," you're essentially flying blind, unable to properly attribute a session's origin.

Here are the primary culprits:

  • Missing or Incorrect UTM Parameters: UTM (Urchin Tracking Module) codes are snippets you add to your URLs to tell GA4 exactly where a user came from (e.g., utm_source=facebook, utm_medium=cpc, utm_campaign=summer_sale). If these are missing on links from your email campaigns, social posts, or ad campaigns, GA4 has no idea how to classify the traffic. Likewise, typos (utm_sorce instead of utm_source) or inconsistencies (using "Facebook" and "facebook") can cause data fragmentation.
  • Redirects Stripping Parameters: Sometimes, you might run a campaign that points to a simple URL, which then redirects to the final page. If this redirect isn't configured correctly, it can strip all the UTM parameters from the URL. The user lands on the page, but the tracking data that identifies the source is lost along the way.
  • Broken Google Ads Auto-Tagging: If you use Google Ads, you should have auto-tagging enabled. This feature automatically adds a GCLID (Google Click Identifier) parameter to your URLs, giving GA4 rich data directly from your ad campaigns. If auto-tagging is turned off or the link between your Google Ads and GA4 accounts is broken, this data won’t pass through, resulting in Google Ads traffic showing up as "(not set)".
  • Server-Side Tracking Issues: If you're using server-side tagging with Google Tag Manager, misconfigurations can lead to session data getting lost. For example, if the client_id and session_id are not passed correctly for every event, GA4 may struggle to stitch a session together and attribute it to its original source.

2. Landing Page + Query String Reports

Finding "(not set)" in your landing page report can be confusing. How can a session happen without a user landing on a page? The key here is understanding how GA4 handles sessions.

In GA4, a session is a collection of events. The landing page dimension is populated by the first page_view event in that session. If a session begins with an event that isn't a page_view, the landing page dimension for that session will be (not set).

This can happen for a few reasons:

  • Session Timeout: A GA4 session automatically times out after 30 minutes of inactivity by default. Imagine a user lands on your blog, reads for a few minutes, then leaves the tab open and takes a 45-minute lunch break. When they return, they scroll down the same page. This scroll action triggers a new session, but since there's no new page_view event (they're still on the original page), the session begins with a user_engagement event instead. As a result, the "landing page" for this new session is "(not set)".
  • Consent Tool Conflicts: Sometimes, cookie consent banners can interfere with tracking. A user might land on a page, and because consent hasn't yet been given, the initial page_view and session_start events don't fire. After they accept cookies, they might trigger another event (like a click), which now starts a session without a preceding page_view event.
  • Measurement Protocol Hits: If you send custom events from your server to GA4 using the Measurement Protocol (e.g., to record offline conversions), they need to include a session_id and be correctly associated with a user's web-based session. If they are not sent with the proper identifiers, they can start sessions that lack page context.
GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

3. Other Dimensions (e.g., City, Region, Browser)

You may also spot "(not set)" in reports related to user location, device, or browser.

  • Geographic Dimensions (Country, Region, City): This happens when GA4 cannot determine the user's location from their IP address. Reasons include a user being on a VPN, browser privacy settings blocking this information, or simply limitations in IP lookup databases.
  • Language Dimension: This field is pulled from the user's browser settings. If for some reason the browser doesn't report its language, it will appear as "(not set)".
  • Device Category: While rare, this can happen if the User Agent string sent by the user's browser is malformed or incomplete, preventing GA4 from identifying it as mobile, desktop, or tablet.

A Step-By-Step Guide to Investigating and Reducing "(not set)"

Tackling "(not set)" data involves a mix of strategic process and technical checks. Follow these steps to diagnose and resolve the issue.

Step 1: Isolate the Problem with GA4 Explorations

Before you start changing things, you need to understand the scope of the problem. Don't just look at the standard reports, use the "Explore" section in GA4 to dig deeper.

Start a new "Free Form" exploration and follow these steps:

  1. Set your rows to the dimension where you see the "(not set)" value. Let's use Session default channel group as our example.
  2. Drag the Sessions metric into the "Values" box. This will show you how many sessions fall into the (not set) category.
  3. Now, start adding secondary dimensions to identify patterns. Drag dimensions like Landing page + query string, Device category, or Country into the "Rows" area below your primary dimension.

By doing this, you might discover insights like:

  • The majority of (not set) traffic is coming from mobile devices.
  • It’s almost exclusively happening on one specific landing page.
  • A large portion is coming from a region where privacy-focused browsers are popular.

This intel focuses your investigation so you’re not just guessing where the problem lies.

Step 2: Enforce a Strict and Consistent UTM Tagging Strategy

For (not set) traffic sources, inconsistent UTMs are the single most common culprit. The solution is creating a process that your whole team follows.

  • Use a Centralized Tool: Instead of letting everyone create their own UTMs, use a shared spreadsheet or a dedicated tool. This ensures everyone uses the same naming conventions (e.g., always lowercase, using "facebook" not "FB"). Google's Campaign URL Builder is a great place to start.
  • Audit Your Existing Campaigns: Go through the links in your active social media bios, email marketing campaigns, and non-Google ad platforms. Are they all tagged? Are the tags correct? Fix any you find.
  • Always use utm_source, utm_medium, and utm_campaign: While other parameters exist, these three are the most fundamental for traffic attribution in GA4. Source identifies the referrer (e.g., google, newsletter), medium explains the type (e.g., cpc, email), and campaign specifies the campaign (e.g., spring_promo).
GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Step 3: Check Your Technical Setup and Integrations

If your UTM strategy is solid, it's time to look at the more technical aspects of your setup.

  • Confirm Google Ads Link and Auto-Tagging: In your Google Ads account, go to Account Settings > Auto-tagging and make sure the box for "Tag the URL that people click through from my ad" is checked. In your GA4 Admin panel, navigate to Product Links > Google Ads Links to ensure your accounts are correctly linked.
  • Audit Your Redirects: Ask your developer to help you check for any redirects that might be stripping URL parameters. You can also use SEO tools like Screaming Frog to crawl your site and identify redirect chains. Ensure all redirects are set up to pass on any parameters they receive.
  • Check Your GA4 Tag Implementation: Use Google Tag Assistant (tagassistant.google.com) to simulate a user visit. Ensure your GA4 configuration tag fires immediately on every page, especially before any conflicts with cookie consent banners. The first events of a session (page_view and session_start) must fire to set the context for the rest of an arriving user's journey.

Final Thoughts

Fixing "(not set)" traffic in GA4 is ultimately about restoring clarity and confidence in your marketing data. By methodically identifying the source of the missing information - whether it’s loose UTM practices, a technical redirect issue, or a misconfigured integration - you ensure every dollar and hour spent on your marketing efforts can be properly measured and optimized.

One of the biggest challenges leading to (not set) is that your data lives in separate silos. Ensuring your paid traffic from Google Ads, Facebook Ads, and other ad platforms matches up with what GA4 is reporting takes hours of manual exports into spreadsheets. We built Graphed to solve this by bringing all your sources into a single view automatically. You can connect your marketing platforms in seconds and ask simple questions like, "Compare my Facebook Ads click data to my GA4 paid social sessions for last month," and instantly see if there are major discrepancies you would have otherwise missed, saving countless hours spent troubleshooting manually.

Related Articles