Not Set (not set) is a placeholder used by GA4 (Google Analytics 4) when it does not receive the required information for a particular dimension.
Not set shows up in various reports in Google Analytics 4.
In this post, I am going to focus on the Pages and Screens report
The pages and screen report shows you the pages and screen names. This report pulls the page title from the <title> tag of the page. If you see (not set) in this report then that means that GA4 is not getting any information in the <title> tag.
This could be due to a two reasons
<title> tag is missing or <title> tag value is missing from the pages
This generally happens when the developers forget to add the <title> tag from certain pages. In order to find the list of pages that are missing you can add a secondary dimension of the page path and screen class to it. If you find that certain page URLs and screen classes show up only with (not set) Pages and Screen names then this is likely the issue.
Go over to those pages on your site and inspect them visually. You will see the error.
However, if you see that a particular URLs sometimes has the real page or screen name but not all the time, then check the second reason below
<title> tag is not getting set on time
Many pages load the title tag dynamically as the page gets loaded in the browser. Since Google Analytics tags get fired asynchronously, sometimes the GA4 configuration tag, the one that fires the page's view might get fired before the page has a chance to update the title tag. In that case, you will see that the same URL shows the page name sometimes but not all the time.
In this case, you will have to make sure to fire the GA4 configuration tag after the page has been fully rendered. This can be done by adding either a delay to the tag or adding another condition that looks for the page to fully load.