Przejdź do treści

„(not set)” i ruch bezpośredni w GA4: 9 przyczyn zawyżonych wartości i jak je naprawić

Rosnący udział „(not set)” i ruchu bezpośredniego prawie zawsze ma przyczynę techniczną. Pokazujemy 9 najczęstszych źródeł problemu, jak je rozpoznać po objawach i co poprawić w tagach, linkach i banerze zgód.

Redakcja Pixel Insider9 min czytaniaPoziom: średni

  • GA4
  • GTM
  • Consent Mode
  • SQL
Spis treści
  1. Czym różni się „(not set)”, „(other)”, Unassigned i Direct?
  2. Skąd się bierze zawyżony ruch bezpośredni? Przyczyny 1–4
  3. Dlaczego w raportach pojawia się „(not set)”? Przyczyny 5–9
  4. Jak zdiagnozować problem krok po kroku?
  5. Co z ruchem z asystentów AI i „ciemnym” ruchem?
  6. Najczęściej zadawane pytania

„(not set)” w GA4 oznacza, że dla danego wiersza raportu GA4 nie otrzymało wartości wymiaru, np. źródła, kampanii albo strony docelowej. Ruch bezpośredni, czyli (direct) / (none), to z kolei sesje, przy których nie było ani parametrów kampanii, ani adresu odsyłającego. Oba zjawiska są normalne w małej skali, ale gdy ich udział rośnie, przyczyna jest prawie zawsze techniczna: gubione parametry UTM, przekierowania, sposób obsługi zgód, zdarzenia z serwera bez identyfikatora sesji albo błędy w warstwie danych. Poniżej znajdziesz 9 najczęstszych przyczyn, objawy i sposoby naprawy.

Najważniejsze w skrócie

  • „(not set)” to brak wartości wymiaru, „(other)” to przekroczony limit liczby unikalnych wierszy, a Unassigned to sesja, której źródło i medium nie pasują do żadnej reguły kanału.
  • Najczęstsze źródło zawyżonego ruchu bezpośredniego to linki bez UTM-ów w e-mailach, SMS-ach, komunikatorach i aplikacjach oraz przekierowania gubiące parametry.
  • Strona docelowa „(not set)” zwykle oznacza sesje rozpoczęte zdarzeniem innym niż page_view, np. po 30 minutach bezczynności w otwartej karcie.
  • Zdarzenia wysyłane z serwera bez client_id i session_id z przeglądarki trafiają do raportów bez źródła.
  • Danych już zebranych nie poprawisz wstecz, dlatego każda diagnoza powinna kończyć się poprawką u źródła i datą zapisaną w dzienniku zmian.

Czym różni się „(not set)”, „(other)”, Unassigned i Direct?

Te cztery etykiety często są mylone, a każda wskazuje inny problem. Zanim zaczniesz szukać przyczyny, ustal, z którą masz do czynienia.

Etykieta Co oznacza Typowa przyczyna Gdzie szukać
(not set) GA4 nie dostało wartości wymiaru Brak parametru w zdarzeniu, sesja bez page_view, zdarzenie z serwera DebugView, BigQuery
(other) Zbyt wiele unikalnych wartości w raporcie Wymiary o wysokiej kardynalności, np. pełne adresy z parametrami Eksploracje, BigQuery
Unassigned Źródło i medium nie pasują do reguł kanałów Niestandardowe utm_medium, np. „mailing” Raport źródło/medium
(direct) / (none) Brak UTM-ów i adresu odsyłającego Linki bez opisu, przekierowania, utrata referrera Strony docelowe, testy linków

W raportach zdarzeń kluczowych opartych na modelu atrybucji ruch bezpośredni dostaje zasługę tylko wtedy, gdy na ścieżce nie było innego punktu styku. Dlatego ten sam problem może wyglądać inaczej w raporcie pozyskania ruchu, a inaczej w sekcji Reklamy. Rozbieżności między tymi widokami szerzej omawiamy w tekście o różnicach w liczbie konwersji między GA4, Google Ads i Meta.

Skąd się bierze zawyżony ruch bezpośredni? Przyczyny 1–4

Ruch bezpośredni rośnie, gdy wizyta traci informację o tym, skąd przyszła. Pierwsze cztery przyczyny dotyczą właśnie gubienia tej informacji po drodze.

1. Linki bez UTM-ów w kanałach, które nie przekazują referrera

Klient poczty, aplikacja SMS, komunikator, plik PDF czy aplikacja mobilna zwykle nie wysyłają adresu odsyłającego. Link w newsletterze bez UTM-ów da więc sesję bezpośrednią, nawet jeśli to Ty wysłałeś mailing. Podobnie działa część przeglądarek wbudowanych w aplikacje społecznościowe. Objaw: skoki ruchu Direct w dniu wysyłki newslettera lub kampanii SMS. Naprawa: opisuj każdy link wychodzący z kanałów własnych zgodnie z konwencją UTM dla zespołu. Przy okazji sprawdź, czy utm_medium nie wpada do Unassigned.

2. Przekierowania i skracacze, które gubią parametry

Przekierowanie 301 lub 302 skonfigurowane bez przenoszenia ciągu zapytania obcina UTM-y i identyfikatory kliknięć. To samo robią niektóre skracacze linków oraz przekierowania z wersji bez www na wersję z www albo z HTTP na HTTPS. Objaw: kampania ma kliknięcia w panelu reklamowym, ale prawie zero sesji w GA4. Naprawa: przetestuj każdy link docelowy, sprawdź adres końcowy w przeglądarce, a w regułach serwera upewnij się, że ciąg zapytania jest przekazywany.

3. Utrata adresu odsyłającego i identyfikatorów kliknięć

Strona partnera z nagłówkiem Referrer-Policy: no-referrer nie przekaże Ci informacji o źródle. Przejście ze strony HTTPS na HTTP też usuwa referrer. Dochodzą do tego zabezpieczenia przeglądarek: Safari w określonych kontekstach usuwa z adresów znane identyfikatory kliknięć, takie jak GCLID czy fbclid, choć zostawia parametry UTM. Szczegóły opisujemy w artykule o Safari 26 i identyfikatorach kliknięć. Naprawa: na własnej stronie zostaw domyślną politykę przeglądarki albo ustaw ją jawnie:

Referrer-Policy: strict-origin-when-cross-origin

Ta wartość przekazuje innym serwisom domenę (bez pełnej ścieżki), co wystarcza do atrybucji, a nie ujawnia adresów podstron z danymi w parametrach.

4. Baner zgód, który przeładowuje stronę lub zbiera zgodę zbyt późno

Przy Consent Mode w trybie podstawowym tagi GA4 czekają na zgodę. Jeśli użytkownik zaakceptuje baner dopiero na drugiej podstronie, pierwsza odsłona z UTM-ami i adresem odsyłającym nie zostanie zmierzona, a sesja zacznie się na stronie, na którą przeszedł z Twojej domeny. Część platform zgód przeładowuje też stronę po kliknięciu „Akceptuję”, co kasuje oryginalny referrer. Objaw: wzrost Direct po wdrożeniu lub zmianie banera. Naprawa: sprawdź, czy aktualizacja zgody wywołuje zdarzenie na tej samej stronie bez przeładowania, i rozważ tryb zaawansowany. Różnice między trybami opisujemy w tekście o Consent Mode w trybie podstawowym i zaawansowanym. Sama konfiguracja banera wiąże się z obowiązkami z RODO i Prawa komunikacji elektronicznej, więc w razie wątpliwości skonsultuj ją z prawnikiem.

Dlaczego w raportach pojawia się „(not set)”? Przyczyny 5–9

„(not set)” w GA4 pojawia się, gdy zdarzenie dociera, ale bez wartości potrzebnej dla danego wymiaru. Pięć kolejnych przyczyn odpowiada za większość takich wierszy.

5. Sesje rozpoczęte bez page_view

Strona docelowa „(not set)” to najczęściej sesja, której pierwszym zdarzeniem nie była odsłona. Typowy scenariusz: użytkownik zostawia kartę otwartą, po 30 minutach bezczynności wraca i przewija stronę. Zdarzenie scroll lub user_engagement rozpoczyna nową sesję, ale bez strony docelowej. To samo dzieje się w aplikacjach jednostronicowych, w których zdarzenia odpalają się przed pierwszym page_view. Naprawa: w aplikacjach SPA wyślij page_view przed innymi zdarzeniami i sprawdź kolejność w DebugView w GA4. Niewielki odsetek takich sesji jest normalny i nie da się go usunąć.

6. Zdarzenia z serwera bez identyfikatorów z przeglądarki

Zakupy wysyłane z backendu przez Measurement Protocol, Data Manager API albo server-side GTM trafiają do raportów bez źródła, jeśli nie zawierają client_id i session_id z sesji użytkownika. Objawia się to transakcjami z kanałem „(not set)” lub Direct, mimo że użytkownik przyszedł z kampanii. Poprawny ładunek Measurement Protocol wygląda tak:

{
  "client_id": "1234567890.1761552000",
  "events": [{
    "name": "purchase",
    "params": {
      "session_id": "1761552000",
      "engagement_time_msec": 100,
      "transaction_id": "ZAM-2026-10001",
      "value": 249.00,
      "currency": "PLN"
    }
  }]
}

Wartości client_id (z ciasteczka _ga) i session_id zapisz przy składaniu zamówienia, np. w ukrytych polach formularza lub w danych zamówienia. Szerzej o przesyłaniu danych z serwera piszemy w poradniku o wzbogacaniu zdarzeń po stronie serwera.

7. Problemy z połączeniem Google Ads i autotagowaniem

Kampania „(not set)” przy źródle google / cpc zwykle oznacza, że konto Google Ads nie jest połączone z usługą, autotagowanie jest wyłączone albo identyfikator kliknięcia został obcięty. Naprawa: sprawdź połączenie w panelu administracyjnym GA4, włącz autotagowanie na poziomie konta i przetestuj, czy parametr gclid przeżywa przekierowania. Gdy łączysz autotagowanie z ręcznymi UTM-ami, zajrzyj do tekstu o autotagowaniu Google Ads a UTM. Pamiętaj, że w danych z ostatnich godzin część wymiarów może być jeszcze nieprzetworzona.

8. Wymiary niestandardowe o złym zakresie lub bez wartości

Wymiar niestandardowy pokazuje „(not set)” dla każdego zdarzenia, które nie zawierało danego parametru, oraz dla danych sprzed jego rejestracji. Częsty błąd to łączenie wymiaru o zakresie zdarzenia z metryką sesji albo wymiaru użytkownika ustawianego dopiero po zalogowaniu. Naprawa: sprawdź, przy których zdarzeniach parametr jest wysyłany, i analizuj go tylko w tym kontekście.

9. Niepełne dane e-commerce w warstwie danych

Produkty bez item_id lub item_name, transakcje bez tablicy items albo różne nazwy parametrów w różnych szablonach strony dają „(not set)” w raportach produktowych. Naprawa: porównaj wysyłane zdarzenia ze specyfikacją z artykułu o warstwie danych dla e-commerce GA4 i ustal z programistą jeden format dla wszystkich widoków.

Jak zdiagnozować problem krok po kroku?

Nie zaczynaj od poprawiania tagów. Najpierw ustal, gdzie i od kiedy problem występuje, bo to zawęża listę przyczyn do jednej lub dwóch.

  1. Określ etykietę i wymiar. Sprawdź, czy chodzi o „(not set)”, Unassigned czy Direct i w którym wymiarze (źródło, kampania, strona docelowa, produkt).
  2. Znajdź datę początku. Ustaw wykres dzienny za 90 dni i porównaj go z dziennikiem zmian: wdrożeniem banera, migracją sklepu, zmianą przekierowań.
  3. Podziel ruch według urządzenia i przeglądarki. Problem tylko w Safari lub aplikacjach wskazuje przyczynę 3, a równy rozkład raczej przyczyny 1, 2 lub 4.
  4. Sprawdź strony docelowe. Ruch Direct na stronach kampanijnych to sygnał zgubionych UTM-ów.
  5. Przetestuj ścieżkę samodzielnie. Kliknij link z kampanii w trybie podglądu GTM i sprawdź w DebugView, jakie parametry ma pierwsze zdarzenie.
  6. Zweryfikuj w BigQuery. Policz sesje bez page_view i zdarzenia bez źródła.
  7. Wprowadź poprawkę i zapisz datę. Po tygodniu porównaj udział problematycznej etykiety z okresem sprzed zmiany.

Do kroku 6 przyda się poniższe zapytanie, które liczy sesje bez odsłony:

SELECT
  COUNT(*) AS sesje,
  COUNTIF(odslony = 0) AS sesje_bez_page_view,
  ROUND(COUNTIF(odslony = 0) / COUNT(*) * 100, 1) AS procent
FROM (
  SELECT
    user_pseudo_id,
    (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS sesja_id,
    COUNTIF(event_name = 'page_view') AS odslony
  FROM `twoj-projekt.analytics_123456789.events_*`
  WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261026'
  GROUP BY 1, 2
);

Odtwarzanie źródeł sesji w SQL omawiamy szczegółowo w poradniku o sesjach i źródłach ruchu w BigQuery.

Co z ruchem z asystentów AI i „ciemnym” ruchem?

Część wzrostu ruchu bezpośredniego nie jest błędem, tylko efektem zmian w zachowaniu użytkowników. Linki przesyłane w komunikatorach, kopiowane z aplikacji czy otwierane z asystentów AI bez adresu odsyłającego GA4 zapisze jako Direct. Od 13 maja 2026 r. kliknięcia z ChatGPT, Gemini czy Claude z przekazanym referrerem trafiają do osobnego kanału, co opisujemy w artykule o ruchu z ChatGPT w GA4, ale wizyty z aplikacji bez referrera nadal zasilają Direct.

Takiego ruchu nie da się przypisać w pełni. Możesz go jednak oszacować pośrednio: obserwować ruch bezpośredni na stronach poradnikowych, których nikt nie wpisuje z pamięci, zestawiać go z wolumenem zapytań brandowych i dodać pytanie „skąd o nas wiesz” w formularzu zamówienia. Więcej poradników o raportach znajdziesz w podtemacie GA4 i raporty.

Najczęściej zadawane pytania

Jaki udział ruchu bezpośredniego w GA4 jest normalny?

Nie ma jednej normy, bo zależy to od rozpoznawalności marki, udziału powracających klientów i kanałów, z których korzystasz. Ważniejszy od poziomu jest trend. Nagły wzrost udziału Direct, zwłaszcza na stronach kampanijnych lub w jednej przeglądarce, prawie zawsze oznacza problem techniczny: zgubione UTM-y, przekierowanie albo zmianę w banerze zgód.

Czy da się poprawić historyczne dane z „(not set)” w GA4?

Nie. Danych już przetworzonych przez GA4 nie można zmienić wstecz. Możesz natomiast ujednolicić je w raportach, np. w BigQuery, przypisując sesjom bez strony docelowej pierwszą stronę z kolejnego zdarzenia, albo w Looker Studio przez pole obliczeniowe. Najważniejsza jest poprawka u źródła, żeby problem nie narastał.

Dlaczego kampania Google Ads ma w GA4 nazwę „(not set)”?

Najczęściej konto Google Ads nie jest połączone z usługą GA4, autotagowanie jest wyłączone albo identyfikator gclid ginie przy przekierowaniu. Czasem przyczyną jest też świeżość danych: nazwy kampanii z ostatnich godzin mogą nie być jeszcze przetworzone. Sprawdź połączenie kont, ustawienie autotagowania i adres końcowy po kliknięciu reklamy.

Sam Consent Mode nie, ale sposób jego wdrożenia może. W trybie podstawowym, gdy użytkownik zgadza się dopiero na drugiej stronie, pierwsza odsłona z informacją o źródle nie zostaje zmierzona. Podobny efekt daje baner przeładowujący stronę po kliknięciu zgody. Sprawdź kolejność zdarzeń w podglądzie GTM i ustawienia platformy zgód.

Czym różni się „(not set)” od „(other)” w GA4?

„(not set)” oznacza, że GA4 nie otrzymało wartości wymiaru, np. zdarzenie nie zawierało parametru. „(other)” pojawia się, gdy raport ma zbyt wiele unikalnych wartości i GA4 łączy najrzadsze w jeden wiersz. Pierwszy problem naprawiasz w tagach, drugi ograniczając liczbę unikalnych wartości albo korzystając z eksploracji i BigQuery.