Last Modified on December 20, 2023
Google Analytics 4 can be quite helpful in getting insights. However, if the very tool you use to get insights doesn’t do that or gives half of the story, then it becomes a problem.
Seeing (not set) just does that. We all understand how frustrating it can be, especially if you’re new to using GA4 and already learning a lot of the other things.
But if you know the causes, you can learn how to fix not set in GA4 by looking at those factors. In some cases, though, it might be something we will have to live with.
Yes, there could be multiple reasons behind it depending on where you see it in the reports. We’ll cover all of those and how to fix not set in GA4, which includes the following topics:
- What Does (not set) Mean
- How to Fix Not Set in GA4 Reports and Dimensions
- Other Reasons of (not set)
- New Update to Reduce (not set)
Let’s dive right in!
What Does (not set) Mean
(not set) is seen in the different GA4 reports when Google doesn’t have the information it needs to show for a particular dimension, so it’s a placeholder value. What causes it depends on the dimension it’s coming up for.
Understandably, it can be quite frustrating wherever it is seen.
It doesn’t mean that you didn’t set those values when you sent the data to GA4. It’s just that for some reason, the value never reached Google’s servers or the incorrect value was sent.
How to Fix Not Set in GA4 Reports and Dimensions
Following are the major reports and dimensions where you can see the (not values):
- (not set) in Source/Medium
- (not set) in Campaign
- (not set) in Landing Page
- (not set) in Google Ads
- (not set) in Page Title
- (not set) in Content Group
- (not set) in Measurement Protocol
- (not set) in Country
- (not set) in Browser
- (not set) in Language
- (not set) in Item Name
- (not set) in Custom Dimensions
It’s a bit of a long list, so we should get started right away to learn how to fix not set in GA4!
(not set) in Source/Medium
One of the most common places to see the (not set) value is in the source/medium dimension which is found in Acquisition → User acquisition and/or Traffic acquisition reports.
This is grouped under the Unassigned default channel grouping and can happen for several reasons:
- It can happen when you tag your URLs with incorrect UTM parameters that don’t match Google’s definition. So, UTMs must be tagged correctly, so GA4 can associate traffic to the correct source/medium.
💡 Top Tip: Here is a guide on UTM Codes in GA4 where we discuss all you need to know for proper UTM tracking – what they are, why they are important, and some best practices.
- If the automatically collected session_start event is missing, then it will result in (not set) for source/medium dimension.
The most frequent cause of this is when the previous session is timed out or ended and the user comes back to the same page.
The second most frequent cause is the use of server-side tagging. Increasing the session timeout duration in the settings can help mitigate it, but you should discuss this with your wider team before you do it.
- If you use audience triggers, then GA4 logs an event whenever a user becomes part of that audience. This can increase (not set) even more if you choose the option to log an additional event when audience membership refreshes.
This can happen because these audience creation events are not associated with other sessions. But since it all happens in the back end of GA4, it’s hard to know what’s causing it every time.
Your safest bet is to use fewer audience triggers and not log an additional event when the audience refreshes.
- When you use Measurement Protocol and send events with incorrect session IDs (other than what’s collected client-side), then the source/medium information cannot be associated with that session.
This gets a bit more problematic when you want to send events for sessions that happened in the past because then you need the correct session ID and the timestamp of when that session happened on the website. Get any of them wrong and it will increase your (not set) values in source/medium.
These are some major causes of seeing not set values in the source/medium dimension and their possible solutions.
(not set) in Campaign
This dimension is quite similar to the source/medium one and is in a way connected to it, as well, primarily because the campaign is also provided through the UTM parameters.
This is often high in (not set) because the value is simply not added to the UTM parameters as it’s not required, like for the utm_source and utm_medium tags. This can be seen in Session Campaign, User Campaign, and Campaign.
The simple solution is to tag the utm_campaign parameter along with the source and medium.
(not set) in Landing Page
For every session that starts in GA4, an automatic event of page_view is sent. If that event is missing, then you won’t have the associated parameters which are page_title, page_location, page_referrer, and page_path.
So, if you don’t have all those parameters, you won’t be able to tell which landing page it is, hence the (not set) values.
So, if the page_view event is sent automatically, then how can it be missing? This brings us back to the session timeout duration, i.e., 30 minutes.
For instance, if someone starts a session on one page and then decides to go on some other website or grab a snack and comes 30 minutes later to scroll on the page, then you will have a new session with events like user_engagement and scroll, but no page_view if they don’t reload the page or navigate to some other page.
The solution is to have the page_view event with all your sessions, but the session timeout duration makes that difficult. You can increase the default session timeout from 30 minutes to anywhere up to the maximum of 7 hours and 55 minutes.
In the new Admin section layout, go to Data collection and modification → Data streams → Click on the stream → Configure tag settings.
On the next screen, click on the Show More option and then click on the Adjust session timeout settings and you will see the below screen.
These deeply buried settings will not completely resolve your Landing page (not set) woes, but they should considerably reduce them.
(not set) in Google Ads
In GA4, you can find different Google Ads dimensions like Session Google Ads campaign, Ad group, keyword text, query, ad network type, and account name, tucked away under the Reports → Acquisition → Overview.
So, if you find (not set) values in this report, then it could be for the following reasons:
- Your GA4 account is not linked to your Google Ads account. If both accounts are not talking to each other, then it’s understandable to not see the values reflected. The simple solution here is to link them.
💡 Top Tip: Check out our guide on How to Link Google Ads to Google Analytics 4.
- If Auto-tagging is not enabled, then GA4 won’t be able to get all the data from Google Ads automatically, especially the data about user behavior on your website after interacting with your ads.
The alternative to this is to go with manual tagging. But let’s be honest, if something can be done automatically without chances of human error, then that’s your best bet.
If manual tagging is not done properly, you will see (not set) values. We would advise to enable auto-tagging.
- If you have multiple Google Ads accounts, it would be best practice to link them all if they are running ads. Otherwise, even one of the unlinked accounts can cause (not set) values to show up.
Generally, this is an easier fix and shouldn’t have many (not set) values if you’re doing all of the above. If you still find it (not set), then there’s more debugging needed to root out the cause(s).
(not set) in Page Title
If the page’s HTML is missing the <title></title> tag or it’s empty for any reason then you won’t be able to see the page title in the reports because that information isn’t being sent to GA4. This generally doesn’t happen unless the website isn’t being run properly.
If the GA4 tag fires before the title is loaded or set, that can cause (not set) titles. If it’s a single-page application (SPA) website, it can even result in having the previous page’s title being set later, but that’s a different issue.
But how do you find out the exact pages where you’re missing the page titles? You go to Reports → Engagement → Pages and screens → Select Page title dimension from the dropdown.
Lastly, add a secondary dimension of the Page path and screen class. If you also use a (not set) table filter, you will get all the pages missing titles.
The solution for this one is simple: ensure that the page title is being set correctly and the GA4 tag loads after the title is loaded.
(not set) in Content Group
Content groups can help analyze the performance of different types of content and the dimension is available in Reports → Engagement → Pages and screens by default.
The most common cause for the content group having (not set) is that the data is not being sent to GA4, even though the dimension is available out of the box. This can be easily set up with Google Tag Manager.
The content_group parameter being set with GA4’s config tag in GTM is case-sensitive. If it’s spelled incorrectly or there are case variations then you won’t receive the values and it will be (not set).
Lastly, you could be sending the content_group’s value empty or incorrectly, which results in (not set).
This can happen if your GA4 tag fires before the content group values are pushed into the data layer or the content group element is completely loaded, and you’re using one of these methods to get content group values.
Understandably, if any of the pages don’t have a content group setup, then you won’t be able to get that information and it will come up as (not set).
(not set) in Measurement Protocol
Sending events and data from other systems like your CRM, PoS, etc. to have more context for your GA4 data is done through measurement protocol (MP), which is important for some businesses.
But it can only be done for existing sessions, i.e., to connect more data to existing sessions in your GA4 data. This works for sessions that go back as much as 72 hours.
So how does measurement protocol lead to (not set)? The most common issue is that it doesn’t use the existing data already collected on the client side like page location, referrer, etc. for that session.
So, when you send the event data with this method, it doesn’t include any of those parameters and that can cause (not set) for several dimensions. Generally, using MP can complicate things for your GA4 property.
(not set) in Country
Country and other geographical dimensions like region, city, etc. can be (not set) due to a missing or incorrect IP address, which can happen in several cases, as GA4 uses it to determine the location. Let’s look at these below:
- VPNs and Proxies – With more use of VPNs and proxies users can obfuscate or even change their IP address, which can make it difficult for Google to determine the correct location.
- Measurement Protocol – As mentioned earlier, MP can cause (not set) in several dimensions. In this case, it’s because when you send event data with MP, you cannot override the IP address or user agent (more on this in the next section) manually which means no location data.
- Server-side GTM (ssGTM) – If you’re using ssGTM, you can alter the IP address or even completely remove it, and then you would see (not set) values for location dimensions.
(not set) in Browser
The browser and other technology dimensions can show (not set) when the user agent string is either modified or not sent with the events.
User-agent identifies things like browser name, version, OS, device category, and so on. Here’s when it happens:
- When we use MP, we cannot send the user agent with it. So your browser dimension will show (not set) values.
- When users activate browser extensions, they can hide the browser details, especially if they want a private browsing session. Whereas other tools can alter or not send the user agent.
- When ssGTM is used to alter or even remove the values of the user agent, that will cause a surge in (not set) values.
Where the ball is in the users’ court, you can’t do much. However, you can limit the use of MP if it’s not needed to reduce (not set) in the browser and not alter or remove the user agent with ssGTM.
(not set) in Language
Language values are generally based on your browser’s settings and they can be (not set) for similar reasons as the browser, with minor differences.
- Measurement protocol can create problems if you don’t send the language values with all the events. The solution is to make sure you send the language values with every single event.
- Privacy or any other extension or tool that hides the browser information can also hide the language as well, so you won’t be able to get it.
- Your ssGTM setup excludes the language parameter from the requests, so you might want to double-check that.
Generally, (not set) in the language is quite low and shouldn’t cause much worry. But if it’s significantly high, i.e. ~20%, then something needs fixing.
(not set) in Item Name
The problem with item-scoped and event-scoped dimensions is that they only apply to the event they are sent with originally and are not inherited by other events.
So, if your add-to-cart event has the item name dimension but your checkout event does not have it, it will show up as a (not set) checkout.
Therefore, it’s very important to send the same parameters with all your eCommerce events, so there’s more consistent data available because you might not want the same parameters for all your other events.
This applies to all the item-scoped parameters in e-commerce like item ID, item category, item brand, item variant, etc., which you can find in Reports → Monetization → E-commerce Purchases.
Another reason for seeing (not set) could occur if you use the data layer for your GA4 tags by firing the GA4 tags first and pushing the data layer values later on.
Since the value is not received at the time of firing your tags, it returns undefined which is just another way of saying (not set) in GA4.
(not set) in Custom Dimensions
The primary reason you see (not set) in custom dimensions is that they are not retroactive.
So, if your date range is outside the period you registered it, then it won’t have any values to show. For example, if it was registered on 1st November, you won’t have values before that period.
As discussed above for item-scoped dimensions, if these custom dimensions are not added to all the events, then they won’t automatically be inherited by other events in the same session.
Sometimes there could be just other reasons for seeing (not set) in your GA4, let’s quickly explore that.
Other Reasons of (not set)
You might see the (not set) values when a dimension has been recently set up, because GA4 has a processing time of up to 48 hours, and in some cases, it can go to even 72 hours.
So, if you have set up something just now, you won’t see it reflected in the reports. A good idea would be to wait for 48 hours and then take things seriously if the issue persists.
Another reason could be sending custom parameters with the automatically collected events i.e., first_visit and session_start, as they can only have the default parameters of page location, page referrer, page title, language, and screen resolution.
If you send the wrong data types for the dimension values, e.g., string instead of integer, then it can cause GA4 to display (not set) since the data type isn’t supported.
Lastly, despite GA4 filtering bot traffic automatically, some of the lesser-known bots can slip through and you might see an unusual spike in traffic which won’t be normal for your website. It could result in (not set) for different dimensions, as there’s generally no engagement by bots.
New Update to Reduce (not set)
Thankfully, Google has understood our pain and released an update on 2nd November 2023, which will hopefully reduce the (not set) values caused by the automatically collected events of first_visit and session_start.
These events will now have the same parameter values as the first client-triggered event in the same session. It won’t completely remove the (not set), but will hopefully reduce these values.
The update was originally launched to help with the filtering of these automatic events for subproperties for 360 customers, but hey, we’ll take any help we can get!
This post has covered a lot of ground, but that’s because there are many reasons for (not set) in GA4 and we explored the most common ones and their possible solutions.
The bottom line is that you will always see some (not set) values in your GA4 reports. Some of them you can fix, like UTM tags and auto-tagging for Google Ads, while others you can’t do much about like privacy extensions and custom dimensions not working retroactively.
The important bit is to know when you can jump in to fix things and when you have to just live with it.
Hopefully, Google’s recent update for automatic events will reduce the(not set) values and there might be more such updates in the future, as well.
Talking about new updates, you can now schedule reports from GA4. Read more about it in our handy guide on Google Analytics 4 Scheduled Email Reports.
So, how often do you see (not set) values in your or your clients’ GA4 account? What dimensions have the highest (not set) values and what have you done to fix them? Drop it all in the comments below.