If you have been working with Google Analytics 4, you have probably noticed that the value (not set) appears in many reports.
This can happen for different reasons, and it is important to understand that it is not always possible to remove it completely. In many cases, the real goal is simply to reduce the number of (not set) values as much as possible.
Contents
What “(not set)” means in Google Analytics 4
“(not set)” is a placeholder used by Google Analytics 4 when the selected dimension has not received a value. In other words, when GA4 does not have the information needed for a given dimension, it groups that data under “(not set)”.
This can happen in different reports and for different reasons. In some cases, it is completely normal. In others, it points to a tracking or implementation issue that should be reviewed.
For example, if a report uses a session-scoped dimension but GA4 cannot populate that value correctly for a given session, the data may appear as “(not set)”. The same can happen with event-scoped dimensions, landing page reports, traffic source dimensions, or custom definitions that are not being sent properly.
That means “(not set)” is not a problem in itself. It is simply a sign that GA4 could not populate that field for that data point. The real question is why that happened in each case.
Why “(not set)” appears in GA4
The reason (not set) appears depends on the report.
For example, if the issue appears in a Google Ads report, the problem may be related to the integration between GA4 and Google Ads. If it appears in acquisition reports, the cause may be incorrect URL tagging. That is why the first step is always to identify which report and which dimension are affected.
It is also worth keeping in mind that GA4 data processing is not always immediate. Before assuming there is a serious issue, it makes sense to give the data enough time to process fully, especially in reports that depend on linked products or derived dimensions. Some data in GA4 can take up to 48 hours to appear.
Below are some of the most common reasons why (not set) appears in different GA4 reports and how to reduce or eliminate it where possible.
“(not set)” in GA4 Google Ads reports
GA4 includes several reports specifically related to Google Ads. These use dimensions such as Google Ads campaign, Google Ads query, and Google Ads ad network type, which are populated with information coming from Google Ads itself.
If you open those reports and see (not set) as the dimension value, the reasons may include the following:
- The Analytics property and the Google Ads account are not linked: Google Ads data is only available in GA4 if both products are linked. If the link has not been set up, you will need to create it in the GA4 property settings.
- Google Ads auto-tagging is not enabled: Auto-tagging is what allows Google Ads campaign information to be imported properly into Analytics. If you are tagging URLs manually instead, dimensions that depend on the Google click identifier, or GCLID, may remain unpopulated.
- You have multiple Google Ads accounts linked, but not all of them are configured correctly. If two or more Google Ads accounts are linked to the same property, make sure all of them are linked correctly and all of them use auto-tagging. If some rows show valid values and others show (not set), the problem may be here.
“(not set)” in the Landing page report in Google Analytics 4
(not set) appears in the Landing page report when a session does not have a page_view event.
That happens because the page_view event is responsible for collecting the page_location parameter. If no page_view is sent, that parameter is missing, and the Landing page report shows (not set) instead.
This can happen, for example, when a user browses your site, leaves the tab open, and later comes back to continue interacting with that same page. A new session may begin, and new events may be sent, but there is no fresh page reload, so no new page_view is triggered.
In this case, there is not always a true fix. The main thing is simply to be aware that this can happen and to keep it in mind when analysing landing page data.
If you absolutely need to reduce (not set) in this report, one option is to increase the GA4 session timeout. That may reduce the number of cases where a new session starts without a new pageview. Still, this approach also has drawbacks and usually is not the best solution unless removing those values is a hard requirement.
“(not set)” in GA4 acquisition reports
Acquisition reports are often the reports where (not set) appears most frequently in GA4.
These issues usually affect dimensions such as Source / Medium and Campaign when GA4 cannot determine the traffic source, medium, or campaign for a session.
The most common reasons are the following:
- Incorrect UTM parameters: UTM parameters help GA4 identify the source, medium, and campaign of a visit. If they are incorrect, incomplete, or inconsistent, GA4 may be unable to attribute the session correctly and the visit may end up under (not set). Google also recommends consistent tagging to avoid (not set) and similar attribution issues.
- The session_start event is missing: The session_start event is triggered automatically when a new session begins and plays a key role in session attribution. If it is missing, GA4 can lose the traffic source information for that session.
- Ad blockers and privacy extensions: Some browser extensions can block or interfere with the data sent to GA4. If part of the tracking request is lost, traffic source information can also be lost.
- Use of Measurement Protocol: If you send data to GA4 using Measurement Protocol, make sure you are also sending the session source information correctly and using a valid session identifier. Measurement Protocol is designed to complement automatic collection, not replace it.
- Audience triggers: Audience triggers send an event each time a user qualifies for a GA4 audience. The problem is that these events are generated on the backend and are not always tied cleanly to the original session, so source and medium can be lost. In practice, if this is the cause, the only real fix is to stop relying on audience triggers for that use case.
“(not set)” in content groupings
The Content group dimension is populated through the content_group parameter. If that parameter is not sent, or is not sent correctly, GA4 shows (not set).
If you are not using content grouping, then this is simply something to be aware of. If you have configured it but the data is not appearing correctly, make sure the parameter name is exactly right. Small spelling mistakes, incorrect capitalisation, or empty values can all cause (not set) to appear.
Another possible cause is sending an empty string or another falsy value as the content group. In those cases, GA4 receives the parameter but still does not have a meaningful value to display.
“(not set)” values in GA4 e-commerce reports
It is also fairly common to find (not set) values in GA4 e-commerce reports when the implementation is not fully consistent.
This happens because item-scoped e-commerce data is not persistent across events. In practice, each event needs to include all the item parameters you want to analyse, because those values are not inherited automatically from previous e-commerce events.
The main recommendation here is consistency. You should always send all the relevant e-commerce parameters in every event where you want those values to be available. For example, if you send a view_item event with both the product name and the product ID, but in the purchase event you only send the product ID, then if you analyse sales using the Item name dimension, some purchases may appear under (not set).
So make sure you are sending all the required parameters correctly across the full purchase journey, and also verify that any custom dimensions related to e-commerce have been registered properly in GA4.
“(not set)” in Google Analytics 4 demographic reports
All demographic dimensions, such as Country, Region, and City, can also show (not set). There are several possible reasons for this:
- IP anonymization: IP anonymization is enabled by default in GA4. This reduces the precision available for location reporting. As a result, you may see very few (not set) values for broad dimensions such as country, but more of them for more granular dimensions such as city or region.
- VPNs, proxies, and similar tools: If the user is using a tool that masks or obscures the IP address, GA4 may not be able to determine the location and may show (not set) instead.
- Use of Measurement Protocol: When events are sent through Measurement Protocol, browser and network context is not available in the same way as with browser-based collection. That can lead to (not set) in demographic dimensions.
- Overwriting the IP address in server-side tagging: If you use GTM server-side tagging, it is possible to remove or overwrite the incoming IP by using ip_override or similar controls. If that happens, GA4 may no longer be able to determine the user’s location correctly in demographic reports.
“(not set)” in GA4 Technology reports
(not set) in Technology reports is usually caused by reasons very similar to the previous section.
Technology dimensions are populated using information taken from the browser’s user agent and related client context. If that information is unavailable, (not set) can appear in the report.
If an event is sent through Measurement Protocol, it does not automatically inherit the user agent from browser-based events. Likewise, if the user is using a privacy tool that masks browser details, or if server-side tagging removes or rewrites the user agent, GA4 may not have the information needed to populate those technology dimensions.
Problems related to Measurement Protocol
As you can see throughout the article, Measurement Protocol is one of the most common causes behind (not set) issues in GA4.
If you use it as part of your implementation, this should be one of the first areas you review. Google’s own documentation explains that Measurement Protocol is meant to augment automatic collection, not replace it, which is why missing context is such a common issue when it is used on its own.
When you send events through Measurement Protocol, they do not inherit information from other events generated on the website.
That means you need to make sure every event sent through Measurement Protocol includes all the parameters needed for the reporting dimensions you care about.
For example, if a Measurement Protocol event does not include the necessary browser-related context, that event can show up as (not set) in Technology reports even if the same user generated browser-based events just seconds earlier. The Measurement Protocol event does not inherit the user agent from those earlier interactions.
As you can see, there are many different situations in which (not set) can appear in GA4 reports. That is why it is important to validate the implementation carefully and, if you notice a high volume of (not set) values, investigate the real cause as soon as possible so you can reduce the issue where possible.

