"(not set)" in GA4 - where auditing really begins
(not set) is perhaps the most common symptom in GA4 reports - and at the
same time the most frequently ignored one. If you do not know a page title,
cannot assign a channel or lose a sessionSource, you have nothing left to
work with in reporting. The auditor checks this on two levels.
What happens in the code
Page title (BigQuery view)
The check in app/queries/checks/page_quality.sql
classifies every page view into a status class:
CASE
WHEN page_title IS NULL OR page_title = '' OR page_title = '(not set)'
THEN 'not_set_page'
WHEN page_title LIKE '%404%' OR page_title LIKE '%not found%'
THEN 'error_page'
ELSE 'ok'
END AS page_status
Traffic source (Data API view)
On the live API side,
app/services/ga4_api_check_service.py
checks the share of sessions with sessionSource = (not set):
not_set_sessions = _safe_int(_get_single_metric_value(source_not_set_report))
share = (not_set_sessions / total_sessions) if total_sessions > 0 else 0.0
status_traffic = _evaluate_threshold(
share,
warning=THRESHOLDS["traffic_not_set_share"]["warning"], # 5 %
fail=THRESHOLDS["traffic_not_set_share"]["fail"], # 15 %
)
Thresholds (combined)
| Check | Green | Yellow | Red |
|---|---|---|---|
Page title (not set) |
<1 % | 1-5 % | >5 % |
sessionSource = (not set) |
<5 % | 5-15 % | >15 % |
The two thresholds are deliberately different: a (not set) page title is
always a tracking bug (every page has a title), whereas a certain
(not set) rate for traffic sources is unavoidable (e.g. direct address
entries).
Typical causes
<title>tag missing or arriving too late - single-page applications that set the title only after the firstpage_viewvia JavaScript deliver an empty value to the GTM trigger.- UTM parameters missing - organic sessions fall into the fallback as
soon as
utm_sourceis not passed through. Newsletter clicks, social posts and affiliate links without UTM all end up here. - No-referrer policy in the browser - if the site or the ad platform
sets
Referrer-Policy: no-referrer, GA4 sees neither source nor medium. - Bot/crawler traffic - search engine bots without user-agent
classification often land as
(not set). - Untagged affiliate links - partners set links without UTM, the traffic
ends up as Direct or
(not set).
"(not set)" vs. "Unassigned" and "landing page (not set)"
Three terms that are often confused:
(not set)- GA4 received no value at all (a capture or timing problem). Affects page title,sessionSourceand also the landing page: "landing page(not set)" means the first session had no validpage_viewwithpage_location- usually SPA timing, a consent gap or a redirect chain.- "Unassigned" - a value is present but cannot be assigned to any channel group. That is a channel/UTM problem, not a capture problem - details in Unassigned traffic in GA4.
(not provided)- a historical UA relic for encrypted organic keywords.
Where the auditor shows the problem
The create_page_quality_section section in
app/components/dashboard/sections/content.py
shows the page title problems:
- Summary cards for
(not set)and error-page shares. - Detail table with concrete URLs, views and status.
You see the traffic source share in the live check as a separate card - without a dedicated BigQuery section, but with a clear traffic light.
How to proceed
- Page title
(not set)share first - it is always fixable.
- For SPAs, set the title right before the first
page_viewtag (e.g. via a history-change listener in GTM that waits untildocument.titleis filled). - For multi-page apps, check whether every page has a
<title>tag in the<head>.
- Break down
sessionSource = (not set)- group by landing page in the GA4 UI and audit the top landing pages. - Establish UTM discipline - require the newsletter tool, social scheduler and affiliate programmes to set UTMs.
- Check referral exclusion - see the blog post Banks and payment providers as referrers and Self-referrals.
- In the auditor, check the progress after 48 h under Attribution & acquisition quality.
Related topics
- Blog Fixing unassigned traffic in GA4
- Blog GA4 audit checklist
- Help page Attribution & acquisition quality
- Help page Event quality & PII hints
- Blog E-commerce attribution: live API vs. BigQuery
- Blog When the
gclidis there - and Google Ads still is not
Frequently asked questions
- What does (not set) mean in GA4?
- (not set) means GA4 received no value for a field - for example no page title or no traffic source. For page titles it is always a tracking bug (every page has a title); for traffic sources a small share is normal (e.g. direct entries).
- What is the difference between (not set), (not provided) and Unassigned?
- (not set): GA4 received no value - a capture or timing problem. (not provided): historically from Universal Analytics for encrypted organic keywords. Unassigned: a value is present but does not fit any channel group - a channel-definition or UTM problem.
- How do I fix landing page (not set) in GA4?
- landing page (not set) usually occurs when the first session had no valid page_view with page_location - due to tag timing in single-page apps, consent gaps or redirect chains. Make sure page_view fires with a valid URL before all other events.