Dlaczego GA4 NIE przypisuje source/medium do wszystkich zdarzeń

Wielu marketerów i analityków zakłada, że Google Analytics 4 automatycznie przypisuje source/medium do każdego zdarzenia. W praktyce szybko okazuje się, że w raportach na poziomie zdarzeń bardzo często widzimy wartość „(not set)”. To nie jest błąd — to sposób, w jaki GA4 został zaprojektowany.

Poniżej wyjaśniam:

  • dla jakich zdarzeń GA4 faktycznie zapisuje source/medium,
  • dlaczego większość zdarzeń ich nie posiada,
  • jak to zweryfikować samodzielnie w GA4 i BigQuery,
  • co możesz zrobić, jeśli potrzebujesz source/medium na poziomie zdarzeń.

Dlaczego source/medium jest często „(not set)” w zdarzeniach GA4?

W GA4 source i medium nie są traktowane jako uniwersalne parametry zdarzeń. Ich rola jest ściśle związana z:

  • momentem wejścia użytkownika na stronę,
  • oraz kluczowymi akcjami konwersyjnymi.

Dlatego dla nie-kluczowych zdarzeń (non-key events) GA4 bardzo często nie zapisuje kontekstu atrybucji, co skutkuje wartością „(not set)”.

Zdarzenia, dla których GA4 automatycznie zapisuje source/medium

GA4 priorytetyzuje zdarzenia, które:

  • rozpoczynają ścieżkę użytkownika,
  • lub mają bezpośrednie znaczenie atrybucyjne.

1. Zdarzenia wejścia (entry-point events)

GA4 automatycznie przypisuje source/medium do zdarzeń takich jak:

  • first_visit – pierwsza wizyta użytkownika,
  • session_start – rozpoczęcie sesji,
  • inne zdarzenia systemowe związane z początkiem interakcji.

Dlaczego?
Ponieważ source/medium opisuje skąd pochodzi sesja, a nie każdą pojedynczą interakcję w jej trakcie.

2. Zdarzenia kluczowe (Key Events / Conversions)

Dla kluczowych zdarzeń GA4 zapisuje source/medium automatycznie, ponieważ:

  • są one podstawą raportów atrybucji,
  • służą do oceny skuteczności kanałów marketingowych,
  • mają bezpośrednie przełożenie na wynik biznesowy.

Przykłady:

  • purchase,
  • generate_lead,
  • sign_up,
  • inne zdarzenia oznaczone jako Key Event.

W tym przypadku brak source/medium pozbawiłby sensu analizę konwersji, dlatego GA4 zawsze stara się je przypisać.

3. Zdarzenia nie-kluczowe na początku ścieżki użytkownika

Jeśli masz własne zdarzenia (custom events) wywoływane bardzo wcześnie (np. na pierwszym widoku strony), GA4:

  • nie przypisze im source/medium automatycznie,
  • chyba że są one traktowane jak zdarzenia wejścia.

Co to oznacza w praktyce:

  • takie zdarzenia będą miały „(not set)”,
  • chyba że jawnie przekażesz source/medium przez Google Tag Manager.

4. Zdarzenia nie-kluczowe w dalszej części ścieżki

Zdarzenia takie jak:

  • kliknięcia w elementy UI,
  • interakcje z treścią,
  • użycie funkcji aplikacji,
  • scroll, video_progress, click itp.

👉 niemal zawsze będą miały source/medium = (not set).

Dlaczego?

  • ponieważ źródło ruchu nie zmienia się w trakcie sesji,
  • a przypisywanie go do każdego zdarzenia:
    • zwiększałoby wolumen danych,
    • obciążało przetwarzanie,
    • nie wnosiłoby realnej wartości analitycznej.

Dlaczego Google tego oficjalnie nie wyjaśnia?

Google nie opublikowało oficjalnej dokumentacji, która wprost tłumaczy to zachowanie. Jednak logiczne wnioski są następujące:

  • zapisywanie source/medium dla każdego zdarzenia:
    • dramatycznie zwiększyłoby ilość danych,
    • podniosłoby koszty przechowywania i przetwarzania,
    • utrudniłoby skalowanie GA4.

Dodatkowo:

  • w większości przypadków source/medium na poziomie zdarzenia nie daje nowych insightów,
  • a analizy marketingowe i tak powinny opierać się na:
    • sesjach,
    • użytkownikach,
    • oraz zdarzeniach kluczowych.

Jak samodzielnie sprawdzić, które zdarzenia mają source/medium?

Metoda 1: Interfejs GA4 (szybka weryfikacja)

  1. Wejdź w GA4 → Reports → Events
  2. Wybierz niestandardowe zdarzenie nie-kluczowe
  3. Dodaj Secondary dimension:
    • Session source
    • Session medium
    • Session source / medium

Jeśli zobaczysz:

  • (not set) → zdarzenie nie ma kontekstu atrybucji
  • konkretne wartości → GA4 przypisał je automatycznie

Metoda 2: BigQuery (najbardziej wiarygodna)

Jeśli masz połączenie GA4 z BigQuery, możesz sprawdzić to bezpośrednio w danych surowych:

SELECT
  event_name,
  traffic_source.source,
  traffic_source.medium
FROM
  `your_project.analytics_xxxx.events_*`
WHERE
  event_name = 'your_event';

Co zobaczysz:

  • traffic_source.* będzie wypełnione głównie na poziomie użytkownika,
  • nie dla każdego pojedynczego zdarzenia,
  • szczególnie dla zdarzeń nie-kluczowych.

Co z tego wynika praktycznie?

Najważniejsze wnioski:

  • „(not set)” w source/medium na poziomie zdarzeń jest normalne,
  • GA4 nie jest narzędziem event-level attribution,
  • atrybucję analizuj:
    • na poziomie sesji,
    • użytkownika,
    • i zdarzeń kluczowych.

Jeśli naprawdę potrzebujesz source/medium na poziomie konkretnego zdarzenia:

  • musisz jawnie przekazywać te wartości przez GTM,
  • i robić to świadomie, tylko tam, gdzie ma to sens biznesowy.

Podobne wpisy