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)
- Wejdź w GA4 → Reports → Events
- Wybierz niestandardowe zdarzenie nie-kluczowe
- 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.