„(not set)" in GA4 - wo das Auditing wirklich anfängt
(not set) ist das vielleicht häufigste Symptom in GA4-Reports - und
gleichzeitig das am häufigsten ignorierte. Wer einen Page-Title nicht
weiß, einen Channel nicht zuordnen kann oder eine sessionSource
verliert, hat im Reporting nichts mehr in der Hand. Der Auditor prüft
das auf zwei Ebenen.
Was im Code passiert
Page-Title (BigQuery-Sicht)
Der Check in app/queries/checks/page_quality.sql
klassifiziert jeden Page-View in eine Status-Klasse:
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-Sicht)
Auf der Live-API-Seite prüft
app/services/ga4_api_check_service.py
den Anteil der Sessions mit 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 %
)
Schwellenwerte (kombiniert)
| Check | Grün | Gelb | Rot |
|---|---|---|---|
Page-Title (not set) |
<1 % | 1-5 % | >5 % |
sessionSource = (not set) |
<5 % | 5-15 % | >15 % |
Die beiden Schwellen sind bewusst unterschiedlich: Ein (not set)-Page-Title
ist immer ein Tracking-Bug (jede Seite hat einen Titel), während eine
gewisse (not set)-Quote bei Traffic-Sources unvermeidbar ist
(z. B. direkte Adress-Eingaben).
Typische Ursachen
<title>-Tag fehlt oder kommt zu spät - Single-Page-Applications, die den Titel erst nach dem erstenpage_viewüber JavaScript setzen, liefern dem GTM-Trigger einen leeren Wert.- UTM-Parameter fehlen - Organische Sessions landen im Fallback,
sobald
utm_sourcenicht durchgereicht wird. Newsletter-Klicks, Social-Posts und Affiliate-Links ohne UTM landen alle hier. - No-Referrer-Policy im Browser - Wenn die Site oder die
Werbeplattform
Referrer-Policy: no-referrersetzt, sieht GA4 weder Source noch Medium. - Bot-/Crawler-Traffic - Suchmaschinen-Bots ohne User-Agent-Klassifikation
landen oft als
(not set). - Ungetaggte Affiliate-Links - Partner setzen Links ohne UTM, der
Traffic landet als Direct oder
(not set).
Wo der Auditor das Problem zeigt
Die Sektion create_page_quality_section in
app/components/dashboard/sections/content.py
zeigt die Page-Title-Probleme:
- Summary-Karten zu
(not set)- und Error-Page-Anteilen. - Detail-Tabelle mit konkreten URLs, Views und Status.
Den Traffic-Source-Anteil siehst du im Live-Check als eigene Karte - ohne dedizierte BigQuery-Sektion, aber mit klarer Ampel.
So gehst du vor
- Page-Title-
(not set)-Anteil zuerst - er ist immer behebbar.
- Bei SPAs den Titel direkt vor dem ersten
page_view-Tag setzen (z. B. via History-Change-Listener im GTM, der wartet bisdocument.titlebefüllt ist). - Bei Multi-Page-Apps prüfen, ob jede Seite einen
<title>-Tag im<head>hat.
sessionSource = (not set)zerlegen - über die GA4-UI nach Landing-Page gruppieren und die Top-Landing-Pages auditieren.- UTM-Disziplin etablieren - Newsletter-Tool, Social-Scheduler und Affiliate-Programme verpflichten, UTMs zu setzen.
- Referral-Exclusion prüfen - siehe Blog Bank- und Payment-Provider als Referrer und Self-Referrals.
- Im Auditor unter Attribution & Akquisitions-Qualität den Fortschritt nach 48 h prüfen.