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

Podobne wpisy