How to Fix (not set) in Google Analytics 4

Cody Schneider9 min read

Seeing "(not set)" pop up in your Google Analytics 4 reports can feel like your data has suddenly sprung a leak. It’s a common frustration that can make your traffic sources, landing pages, or user attributes look incomplete. This article will walk you through what "(not set)" actually means in various GA4 reports and provide a clear, step-by-step checklist to help you find and fix the underlying issues.

GraphedGraphed

Still Building Reports Manually?

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

Watch Graphed demo video

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

At its core, "(not set)" is simply a placeholder that Google Analytics uses when it hasn't received any information for a specific dimension you're looking at. Think of it like a form field that someone left blank. GA4 knows it needs a value there - whether it's a traffic source, a city name, or a landing page - but for some reason, the data never arrived for that particular session or event.

It's important to know that "(not set)" isn't always an "error" you need to fix. In some cases, it's expected behavior. But when it appears in critical reports like traffic acquisition or landing pages, it usually points to a tracking or configuration issue that's muddying your data and making it harder to get clear insights.

Common Places You'll See "(not set)" and Why It Happens

The solution for fixing "(not set)" depends entirely on which report you find it in. Let's break down the most common culprits and how to address them.

GraphedGraphed

Still Building Reports Manually?

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

Watch Graphed demo video

1. Landing Page Reports

This is arguably the most common and confusing place to see "(not set)". A significant number of "(not set)" landing pages means you can't see the true entry point for many user sessions, which is a major blind spot.

Why It Happens: In GA4, the Landing page + query string dimension is populated by the first page_view event in a session. If a session starts but GA4 doesn't record a page_view event right away, the landing page is left blank. This often happens because:

  • Session Timeout: A user is inactive on your site for 30 minutes (or your custom timeout duration), and their session expires. When they come back and click on something, a new session starts, but it might trigger a custom event (like scroll or a click) before the next page_view loads.
  • Measurement Protocol Hits: You might be sending server-side events using the Measurement Protocol. If an event that can start a new session is sent without an accompanying page location (dl) parameter, you'll get a "(not set)" landing page.
  • Consent Banners: Occasionally, cookie consent delays the GA4 tag from firing until after user interaction, which might not be a page view.

How to Fix It:

  • Adjust Session Timeout: In GA4, go to Admin > Data Streams > [Your Web Stream] > Configure tag settings > Show more > Adjust session timeout. If you have content that encourages longer idle times, you can extend the duration up to 7 hours and 55 minutes.
  • Check Non-Pageview Events: Audit events that occur early in a session. Make sure your GTM configuration or on-page code fires the main GA4 configuration tag (which triggers a page_view) as soon as the page loads, before other custom events.

2. Traffic Acquisition Reports (Source/Medium, Campaign)

When "(not set)" appears in traffic source dimensions, it means GA4 couldn't attribute a user's session to a specific marketing channel, making it impossible to measure campaign effectiveness.

Why It Happens:

  • Missing or Incorrect UTM Parameters: This is the number one cause. If traffic arrives from a social post, email newsletter, or any non-Google ad campaign without proper UTM tags (like utm_source, utm_medium), GA4 can’t classify it. The session is categorized as "Direct" traffic, and its campaign-level dimensions will be "(not set)".
  • Google Ads Auto-Tagging is Disabled: If you're running Google Ads but haven't enabled auto-tagging, the gclid (Google Click Identifier) won't be appended to your URLs. Without it, GA4 can't attribute the session to your specific campaign, ad group, or keyword.
  • Misconfigured Referral Exclusions: If your list of excluded referrals includes domains that it shouldn't (like your own), or if you forget to add third-party payment gateways, the original traffic source information gets stripped out when a user returns from that domain.

How to Fix It:

  • Implement a Consistent UTM Strategy: Make it a rule that no link goes out without UTMs. Use a consistent, lowercase naming convention (e.g., "linkedin" vs. "LinkedIn") for all sources and mediums. Tools like Google's own Campaign URL Builder can help.
  • Turn On Auto-Tagging: In your Google Ads account, navigate to Settings > Account Settings and ensure that the "Auto-tagging" box is checked. This allows seamless data flow between Ads and Analytics.
  • Audit Referral Exclusions: In GA4, go to Admin > Data Streams > [Your Web Stream] > Configure tag settings > Show more > List unwanted referrals. Make sure only relevant domains (like payment gateways) are listed and your own domain is not.

3. E-commerce Reports (Item Name, Brand, Coupon)

Seeing "(not set)" in e-commerce reports means you’re losing details about which products customers are viewing, adding to their cart, or purchasing. This is almost always an implementation issue.

Why It Happens: GA4 e-commerce tracking relies on a specific data structure sent through the data layer, particularly the items array. If a product in this array is missing properties like item_name, item_id, or item_brand, GA4 will still process the event (like a purchase) but will use "(not set)" for the missing values.

How to Fix It: You need to go to the source.

  • Use GTM Debug Mode: Go into Google Tag Manager's Preview mode and simulate an e-commerce action, like adding a product to the cart. Click on the GTM event (e.g., add_to_cart) and inspect the Data Layer. Look for the items array and verify that every product object contains all the required keys and values.
  • Talk to Your Developers: If the data is missing from the data layer, you'll need to work with your development team to ensure the e-commerce platform is correctly pushing all required product data for every event. Provide them with screenshots from the debugger and a link to Google's e-commerce developer documentation.

Here's an example of a properly formatted add_to_cart data layer snippet. Note how every key, including item_name, has a value.

window.dataLayer.push({
  event: "add_to_cart",
  ecommerce: {
    items: [{
      item_name: "Running Shoes", // If this was blank, it would show as (not set)
      item_id: "SKU12345",
      price: "99.99",
      item_brand: "Graphene Runners",
      item_category: "Footwear",
      quantity: 1
    }]
  }
}),
GraphedGraphed

Still Building Reports Manually?

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

Watch Graphed demo video

4. Language and Location Reports (City, Region)

It's very common to see a small amount of "(not set)" values in geographic and language reports. Often, this is normal and not a result of a misconfiguration.

Why It Happens: Google determines location based on the user's IP address. Some users may be using VPNs, proxies, or privacy-focused browsers that block or obscure this information. GA4 also doesn't always have pinpoint-accurate IP-to-location mapping for every corner of the globe. For language, it relies on browser settings, which can also be unavailable.

How to Fix It: For the most part, you don’t. A small percentage (typically <5%) of "(not set)" here is perfectly normal. However, if you see a huge spike, you should investigate for bot traffic, as bots often do not pass location data.

A Simple Troubleshooting Checklist

Feeling overwhelmed? Don't be. Use this concise checklist to methodically track down the source of any "(not set)" issue.

1. Pinpoint the Report and Primary Dimension

Start by identifying exactly where the issue is. Is "(not set)" appearing for the Landing page dimension in the Pages and screens report, or is it the Session source / medium dimension in the Traffic acquisition report?

2. Add a Secondary Dimension for Context

Never troubleshoot with a single dimension. Adding a second layer can provide instant clues.

  • If Landing page is (not set): Add Event count as a metric and Event name as a secondary dimension. You might discover that the sessions start with a session_start event but are missing the initial page_view.
  • If Session source is (not set): Add Landing page + query string as a secondary dimension. This can show you which specific pages are receiving poorly tagged or untagged traffic.
GraphedGraphed

Still Building Reports Manually?

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

Watch Graphed demo video

3. Use DebugView for Live Inspection

GA4's DebugView (found in the Admin panel) is your best friend. Enable it through a browser extension or within GTM's Preview mode. You can then watch events arrive in GA4 in real time and inspect all the parameters being sent with them. This allows you to instantly see if a page location (dl), campaign ID (cid), or product name is missing from the data sent to Google.

4. Audit Your Implementation Source

Based on your findings, go back to the source:

  • For traffic issues: Check your ad platform settings (Google Ads auto-tagging), social media link shorteners, and email campaign links to ensure UTMs are applied correctly.
  • For on-page issues: Use GTM Preview to check your triggers, variables, and data layer. Does the GA4 tag fire correctly on page load? Is your e-commerce data rich and complete?

Final Thoughts

Chasing down "(not set)" values is a standard part of managing your analytics. It's an indicator of missing data, and working through the affected reports dimension by dimension is the best way to clean up your configuration and restore your confidence in your reporting. By using secondary dimensions and tools like DebugView, you can transform it from a frustrating mystery into an actionable fix.

Of course, troubleshooting issues like this is just one piece of the data-wrangling puzzle. Reporting can feel like a constant battle against finicky tools, unclear data, and endless manual work. At Graphed, we’ve automated this entire process. We allow you to connect all your data sources - like Google Analytics, Shopify, and Facebook Ads - in a single click and simply ask for the reports and dashboards you need in plain English. Instead of hunting through reports for a "(not set)" value, you could just ask, "Show me my top landing pages by revenue," and get an instant, real-time visualization, without the headaches. To stop digging and start getting answers, give Graphed a try.

Related Articles

How to Enable Data Analysis in Excel

Enable Excel's hidden data analysis tools with our step-by-step guide. Uncover trends, make forecasts, and turn raw numbers into actionable insights today!