Jak policzyć unikalnych użytkowników według źródła, medium i kampanii w GA4 BigQuery
Jednym z największych ograniczeń interfejsu GA4 jest brak elastyczności w analizie użytkowników na poziomie źródło → medium → kampania. Jeśli chcesz dokładnie wiedzieć, ilu unikalnych użytkowników faktycznie pozyskała dana kampania, BigQuery jest właściwym narzędziem.
W tym artykule pokazuję krok po kroku, jak poprawnie policzyć Unique Users według:
- Traffic Source,
- Traffic Medium,
- Campaign Name
na podstawie eksportu danych GA4 do BigQuery.

Skąd w GA4 BigQuery pochodzą dane o źródle ruchu?
W tabelach eksportu GA4 do BigQuery informacje o pozyskaniu użytkownika znajdują się w obiekcie traffic_source.
Najważniejsze pola, które będziemy wykorzystywać:
traffic_source.source– źródło ruchu (np. google, facebook, newsletter)traffic_source.medium– medium (np. organic, cpc, email)traffic_source.name– nazwa kampanii (utm_campaign)user_pseudo_id– unikalny identyfikator użytkownika

Te pola są przypisane na poziomie użytkownika, a nie pojedynczej sesji czy zdarzenia. Oznacza to, że opisują pierwsze znane źródło pozyskania użytkownika.
Logika liczenia unikalnych użytkowników
Aby poprawnie policzyć unikalnych użytkowników według source / medium / campaign, należy:
- wyciągnąć wartości źródła, medium i kampanii z obiektu
traffic_source, - zliczyć unikalne
user_pseudo_id, - pogrupować dane po:
- źródle,
- medium,
- nazwie kampanii.
Kluczowa zasada:
Każdy użytkownik jest liczony tylko raz w ramach kombinacji source / medium / campaign.
Nie liczymy sesji.
Nie liczymy zdarzeń.
Liczymy realnych użytkowników.
Przykładowe zapytanie SQL
Poniższe zapytanie oblicza liczbę unikalnych użytkowników według źródła, medium i kampanii dla października 2025 roku.

Pamiętaj, aby podstawić własny identyfikator tabeli.
-- Obliczanie liczby unikalnych użytkowników według źródła, medium i kampanii
SELECT
traffic_source.source AS traffic_source,
traffic_source.medium AS traffic_medium,
traffic_source.name AS campaign_name,
COUNT(DISTINCT user_pseudo_id) AS total_users
FROM
`<Enter your table id here>`
WHERE
_TABLE_SUFFIX BETWEEN '20251001' AND '20251031'
GROUP BY
traffic_source,
traffic_medium,
campaign_name
ORDER BY
total_users DESC;
Co dokładnie robi to zapytanie?
Zapytanie:
- pobiera informacje o pierwszym źródle pozyskania użytkownika,
- grupuje użytkowników według source / medium / campaign,
- liczy unikalne identyfikatory użytkowników,
- sortuje wyniki według liczby użytkowników malejąco.
Efektem jest czytelna tabela, która pokazuje:
- które kampanie realnie pozyskują użytkowników,
- które źródła generują największy napływ nowych osób,
- gdzie faktycznie działa marketing, a gdzie tylko „kręcą się sesje”.
Dlaczego to podejście jest ważne?
W raportach GA4 bardzo łatwo pomylić:
- użytkowników z sesjami,
- skuteczność kampanii z aktywnością powracających osób.
BigQuery pozwala:
- jasno oddzielić pozyskanie użytkownika od jego późniejszych wizyt,
- analizować kampanie bez zniekształceń atrybucji,
- budować własne, stabilne definicje metryk.
O czym trzeba pamiętać?
traffic_source.*opisuje pierwsze znane źródło użytkownika, nie każde wejście,- jeśli UTMy były błędne lub nieobecne – dane będą niepełne,
- to podejście najlepiej sprawdza się do:
- analiz akwizycji,
- raportów marketingowych,
- porównań skuteczności kampanii.
Najważniejsza lekcja
Twoje dane GA4 w BigQuery są warte dokładnie tyle, ile logika, którą stosujesz w zapytaniach.
Jeśli rozumiesz:
- skąd pochodzą dane,
- na jakim poziomie są przypisane (user vs session),
- co dokładnie liczysz,
to:
- możesz skalować analizy,
- automatyzować raporty,
- generować SQL nawet przy pomocy AI — bez utraty jakości.
Podsumowanie
- Unikalnych użytkowników liczysz przez
COUNT(DISTINCT user_pseudo_id) - Źródło, medium i kampania pochodzą z
traffic_source - BigQuery daje precyzję, której nie zapewnia GA4 UI
- Kluczem jest zrozumienie logiki, nie sama składnia SQL