# Zdarzenia niestandardowe GA4: jak je zaprojektować i śledzić poza domyślnymi

**Author:** Piotr Litwa - GTM & Analytics Specialist  
**Published:** 2026-09-11  
**URL:** https://piotrlitwa.com/articles/pl/zdarzenia-niestandardowe-ga4.html  
**Language:** pl  
**Keywords:** zdarzenia niestandardowe ga4, ga4 custom events, nazewnictwo zdarzeń ga4, kluczowe zdarzenia ga4, plan śledzenia ga4

---

Zdarzenia niestandardowe GA4 to zdarzenia, które sam nazywasz i definiujesz, dla działań, których GA4 nie śledzi od ręki i dla których Google nie ma zdarzenia zalecanego. Zanim jakieś utworzysz, sprawdź dwie listy: pomiar zaawansowany (który już zbiera m.in. `scroll`, `file_download` i `form_submit`) oraz zdarzenia zalecane Google (`generate_lead`, `sign_up`, `purchase` i spółka). Dopiero kiedy nic nie pasuje, wymyślasz nazwę.

Ta kolejność znaczy więcej niż jakikolwiek trik z nazewnictwem. Większość bałaganiarskich usług GA4, które audytuję, nie poległa na składni. Poległa, bo ktoś wymyślił `contact_form_sent`, kiedy istniało już `generate_lead`, a pół roku później ktoś inny wymyślił `lead_submit`.

> **Najważniejsze wnioski**
> - Używaj zdarzenia zalecanego zawsze, gdy pasuje, bo raporty i integracje GA4 już oczekują tych nazw i parametrów.
> - Nazwy zdarzeń rozróżniają wielkość liter, mają maksymalnie 40 znaków, muszą zaczynać się od litery i nie mogą używać nazw zastrzeżonych ani prefiksów `firebase_`, `google_` i `ga_`.
> - Do 25 parametrów na zdarzenie, a każdy widać w raportach dopiero po rejestracji.
> - Domyślnie wysyłaj zdarzenia z GTM, a "Utwórz zdarzenie" w GA4 zostaw na drobne poprawki, których nie zrobisz w kontenerze.

## Niestandardowe, zalecane czy automatyczne: sprawdź, zanim cokolwiek nazwiesz

GA4 ma cztery rodzaje zdarzeń i tylko jeden z nich wymaga Twojej kreatywności.

| Typ zdarzenia | Kto je definiuje | Przykłady | Musisz je budować? |
|---|---|---|---|
| Zbierane automatycznie | GA4 | `first_visit`, `session_start`, `user_engagement` | Nie, po prostu się dzieją |
| Pomiar zaawansowany | GA4, włączany per strumień danych | `page_view`, `scroll`, `click` (wychodzące), `file_download`, `form_start`, `form_submit`, `view_search_results`, `video_start` | Nie, włącz go w ustawieniach strumienia danych |
| Zalecane | Google je nazywa, Ty wysyłasz | `generate_lead`, `sign_up`, `login`, `search`, `purchase`, `add_to_cart` | Tak, ale z dokładną nazwą i parametrami Google |
| Niestandardowe | Ty | `pricing_toggle`, `calculator_complete`, `demo_video_cta` | Tak, i nazewnictwo jest Twoje |

Lista zdarzeń zalecanych jest dłuższa, niż większość ludzi myśli. Są zdarzenia lead-genowe jak `qualify_lead` i `close_convert_lead`, zdarzenia treściowe jak `select_content` i `share` oraz cały zestaw e-commerce. Jeśli Twoje działanie to "ktoś wysłał formularz kontaktowy", to jest `generate_lead`. Nie `contact_form`, nie `lead`, nie `Form Submit`.

Po co się męczyć? Zdarzenia zalecane mają znane parametry (`value` i `currency` przy `generate_lead`, `method` przy `sign_up`), a część raportów i integracji ich oczekuje. Własna nazwa wyrzuca to do kosza za nic.

Kliknięcia linków i filmy z YouTube to osobny temat. [Śledzenie kliknięć linków w GTM](https://piotrlitwa.com/articles/pl/sledzenie-klikniec-linkow-ga4.html) opisałem oddzielnie, a wideo dostanie własny artykuł w dalszej części serii.

## Zasady nazewnictwa, które GA4 egzekwuje (i te, których nie egzekwuje)

Część zasad to twarde limity. Złam je, a zdarzenie zostanie odrzucone albo pokiereszowane.

- **Do 40 znaków** w nazwie zdarzenia.
- **Zaczyna się od litery.** Tylko litery, cyfry i podkreślniki. Bez spacji, bez myślników.
- **Wielkość liter ma znaczenie.** `Sign_Up` i `sign_up` to dwa różne zdarzenia w Twoich raportach, a GA4 będzie radośnie liczyć oba w nieskończoność, nie dając znać, że coś jest nie tak.
- **Nazwy zastrzeżone**, których nie użyjesz, m.in. `session_start`, `first_visit`, `user_engagement`, `first_open` i `error`.
- **Zastrzeżone prefiksy**: `firebase_`, `google_`, `ga_`.

Są też zasady, których GA4 nie egzekwuje. Te ważą więcej.

Używaj snake_case, zawsze, bo tak wyglądają wszystkie zdarzenia Google, a mieszanie stylów to przepis na duplikaty. Stosuj wzorzec obiekt_akcja, żeby powiązane zdarzenia sortowały się razem: `pricing_toggle`, `pricing_cta_click`, `calculator_start`, `calculator_complete`. Trzymaj spójne czasowniki; nie mieszaj `_click`, `_clicked` i `_press`.

I nie wkładaj wartości do nazwy. `cta_click_header` i `cta_click_footer` powinny być jednym zdarzeniem, `cta_click`, z parametrem `cta_location`. Inaczej masz 14 zdarzeń tam, gdzie wystarczyłoby jedno, a raport Zdarzenia zamienia się w ścianę.

## Problem Grzegorza: trzy nazwy, jedno działanie

Grzegorz odpowiada za marketing w firmie B2B z oprogramowaniem z Poznania. Kiedy otworzyłem jego usługę, raport Zdarzenia pokazywał `Form_Submit` z 312 zdarzeniami, `form_submit_custom` ze 118 i `formSubmit` z 47. Wszystkie trzy to był ten sam formularz zamówienia demo.

Trzy agencje w cztery lata. Każda dodała swój tag. Nikt nie usunął starych, a dwa wciąż strzelały.

Jego kluczowe zdarzenie "zapytania o demo", oparte wyłącznie na `Form_Submit`, pokazało 312 za kwartał. CRM miał 389 zapytań. Na tyle blisko, że nikt nie pytał, i na tyle źle, żeby wykrzywić każde porównanie kanałów, bo nowszy tag działał tylko na landingach z ruchu płatnego.

Naprawa zajęła popołudnie. Jedno zdarzenie, `generate_lead`, z parametrem `form_name` ustawionym na `demo_request`. Jeden tag w GTM.

Dwa martwe tagi zostały wstrzymane, duplikat usunięty, a stare kluczowe zdarzenie `Form_Submit` wyłączone, żeby nikt przez przypadek nie porównywał go z nowym. W następnym kwartale GA4 pokazało 402, a CRM 417, z różnicą wyjaśnioną zgodami.

Nudna lekcja: projektowanie zdarzeń to najpierw problem zarządzania, a dopiero potem techniczny.

## Parametry: co wysyłać, a co rejestrować

Każde zdarzenie może nieść do **25 parametrów**. Nazwy parametrów mają podobne zasady jak nazwy zdarzeń: do 40 znaków, a wartości do 100 znaków w standardowych usługach. Tu też nie używaj zastrzeżonych prefiksów.

Dobry parametr odpowiada na pytanie, które faktycznie zadasz. Dla zdarzenia `calculator_complete` mogą to być `calculator_type`, `result_band` i `value`. Dla `generate_lead` zwykle `form_name`, `form_location`, plus `value` i `currency`, jeśli leady mają znaną wartość.

Tu jest haczyk, na którym wykłada się większość zespołów. GA4 przyjmuje i przechowuje każdy parametr, ale parametr niestandardowy pokaże w raportach standardowych i eksploracjach dopiero po zarejestrowaniu go jako wymiaru niestandardowego. Slotów na poziomie zdarzenia jest 50 w standardowej usłudze, więc wybieraj z głową. Konfigurację, zakresy i limity 50/25/10 opisałem w artykule o [wymiarach niestandardowych GA4](https://piotrlitwa.com/articles/pl/wymiary-niestandardowe-ga4.html).

Czego nie wysyłałbym jako parametru:

- Niczego osobowego: e-maili, numerów telefonów, imion i nazwisk. To łamie regulamin Google, a w świetle RODO robi z Twojej usługi analitycznej problem z ochroną danych, który ktoś będzie musiał komuś wytłumaczyć.
- Unikalnych ID, po których nigdy nie będziesz segmentować. Ich miejsce jest w BigQuery, nie w raporcie.
- Wolnego tekstu wpisywanego przez ludzi. Wysoka kardynalność, a często i tak zawiera dane osobowe.

## Mały plan śledzenia, który mieści się na jednym ekranie

Każda usługa, którą konfiguruję, dostaje plan śledzenia, zanim dostanie pierwszy tag. Nie musi to być arkusz na 40 zakładek. Dla typowej strony B2B to mniej więcej całość:

| Nazwa zdarzenia | Typ | Kiedy strzela | Kluczowe parametry | Kluczowe zdarzenie? | Rejestruj jako wymiar niestandardowy |
|---|---|---|---|---|---|
| `generate_lead` | Zalecane | Formularz kontaktowy lub demo zakończony sukcesem (stan podziękowania, nie kliknięcie przycisku) | `form_name`, `form_location`, `value`, `currency` | Tak | `form_name`, `form_location` |
| `sign_up` | Zalecane | Konto utworzone | `method` | Tak | `method` |
| `pricing_toggle` | Niestandardowe | Użytkownik przełącza miesięcznie/rocznie na stronie cennika | `billing_period` | Nie | `billing_period` |
| `calculator_complete` | Niestandardowe | Kalkulator ROI pokazuje wynik | `calculator_type`, `result_band` | Nie | `calculator_type`, `result_band` |
| `cta_click` | Niestandardowe | Kliknięty główny przycisk CTA | `cta_location`, `cta_text` | Nie | `cta_location` |
| `file_download` | Pomiar zaawansowany | Pobranie PDF lub broszury | wbudowane `file_name`, `file_extension` | Może | Brak, wbudowane |

Sześć zdarzeń. Dwa kluczowe. Siedem wymiarów niestandardowych. To wystarczy, żeby odpowiedzieć na większość pytań dyrektora marketingu, i jest na tyle małe, że ktoś faktycznie będzie to aktualizował. Dzień, w którym plan przestaje mieścić się na jednym ekranie, to dzień, żeby zapytać, z których wierszy nikt nie korzysta.

## Wysyłanie z GTM kontra "Utwórz zdarzenie" w GA4

Są dwa sposoby, żeby wprowadzić zdarzenie niestandardowe do GA4, i nie są wymienne.

**Z Google Tag Manager.** Budujesz tag zdarzenia GA4 (typ tagu **Google Analytics: GA4 Event**), ustawiasz nazwę zdarzenia i parametry, podpinasz trigger. Zwykle to trigger typu Custom Event nasłuchujący `dataLayer.push`, co opisałem w [poradniku o data layer, GA4 i GTM](https://piotrlitwa.com/articles/pl/data-layer-ga4-gtm-poradnik.html):

```js
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
  event: 'calculator_complete',
  calculator_type: 'roi',
  result_band: '10k_50k'
});
```

**Z interfejsu GA4.** Wejdź w Administracja > Wyświetlanie danych > Zdarzenia > Utwórz zdarzenie. Definiujesz nową nazwę zdarzenia i warunki dopasowania na bazie istniejącego zdarzenia, na przykład `event_name` równa się `page_view` i `page_location` zawiera `/thank-you`. GA4 tworzy wtedy nowe zdarzenie z pasujących danych przychodzących.

Usługa pomieści do 50 utworzonych i 50 zmodyfikowanych zdarzeń. Na łatki aż nadto, a niczym więcej to być nie powinno.

Powiem wprost: "Utwórz zdarzenie" traktuję jak łatkę, nie strategię. Nie działa wstecz. Żyje poza kontenerem GTM, więc nikt czytający kontener nie wie, że istnieje. I dziedziczy każdą słabość zdarzenia źródłowego. Każdą.

Beata przekonała się o tym boleśnie. Jej zespół zbudował `generate_lead` w interfejsie GA4 z `page_view` na `/thank-you`. GA4 pokazało 1180 leadów w kwartale. CRM miał 860.

Dlaczego? Ludzie odświeżali stronę podziękowania, zapisywali ją w zakładkach, wracali do niej z maila. Każde wyświetlenie było leadem.

Przeniosłem zdarzenie do tagu GTM odpalanego z `dataLayer.push`, który dzieje się tylko po udanym wysłaniu formularza. Leady spadły do 874. Prezes nie był zachwycony. Za to liczby wreszcie były prawdziwe.

Kiedy "Utwórz zdarzenie" jest OK: przy zmianie nazwy starego zdarzenia, zanim poprawka w GTM wejdzie w cykl wydań, albo przy wydzieleniu bardziej szczegółowego zdarzenia, kiedy nie masz dostępu do kontenera. Traktuj to jako tymczasowe i zapisz gdzieś.

## Oznaczanie jako kluczowe zdarzenie i testy w DebugView

Zdarzenie nie jest konwersją, dopóki tego nie powiesz. W GA4 wejdź w **Administracja > Wyświetlanie danych > Kluczowe zdarzenia > Nowe kluczowe zdarzenie** i wpisz dokładną nazwę zdarzenia albo znajdź je w **Administracja > Wyświetlanie danych > Zdarzenia** i oznacz tam jako kluczowe. Standardowa usługa pozwala na 30 kluczowych zdarzeń. Nie będziesz potrzebować więcej niż pięciu.

Jeśli dodatkowo licytujesz na nie w Google Ads, kluczowe zdarzenie trzeba tam zaimportować jako konwersję. Na tym ludzie potykają się bez przerwy, a opisuje to [poradnik konfiguracji GA4](https://piotrlitwa.com/articles/pl/konfiguracja-ga4-krok-po-kroku.html).

Potem testuj, zanim czemukolwiek zaufasz, bo zdarzenie, które wygląda dobrze w podglądzie GTM, wciąż może dotrzeć do GA4 ze złą wielkością liter, brakującym parametrem albo zdublowanym hitem. Moja rutyna przy każdym nowym zdarzeniu:

1. Otwórz **Podgląd** (Preview) w GTM. Tag Assistant się łączy, a Twoje hity automatycznie dostają flagę debugowania.

2. Wywołaj działanie na stronie. W Tag Assistant sprawdź, czy tag zdarzenia GA4 odpalił dokładnie raz, a nie dwa razy, co jest najczęstszą awarią, kiedy w szablonie strony wciąż siedzi stary, wpisany na sztywno fragment gtag.

3. Otwórz **Administracja > Wyświetlanie danych > DebugView** w GA4. Znajdź swoje urządzenie i kliknij zdarzenie.

4. Sprawdź każdy parametr: dobra nazwa, dobra wielkość liter, sensowna wartość, nic nie obcięte.

5. Odczekaj 24 do 48 godzin i sprawdź raport Zdarzenia. DebugView działa w czasie rzeczywistym, raporty standardowe nie.

Jeśli zdarzenie pokazuje się w DebugView, ale nigdy w raportach, zwykle odfiltrowuje je filtr ruchu wewnętrznego albo ruchu deweloperskiego, ewentualnie patrzysz na zły zakres dat. [Poradnik o testowaniu w DebugView](https://piotrlitwa.com/articles/pl/ga4-tryb-debugowania.html) przechodzi przez typowe awarie jedna po drugiej.

## Najczęstsze pytania

**Czym jest zdarzenie niestandardowe w GA4?**
To zdarzenie, które sam nazywasz i definiujesz dla działania, którego GA4 nie zbiera automatycznie i dla którego Google nie ma zdarzenia zalecanego. Zwykle wysyłasz je z Google Tag Manager z własnymi parametrami. Najpierw sprawdź pomiar zaawansowany i listę zdarzeń zalecanych.

**Jakie są zasady nazewnictwa zdarzeń w GA4?**
Nazwa zdarzenia może mieć do 40 znaków, musi zaczynać się od litery i może zawierać tylko litery, cyfry i podkreślniki. Wielkość liter ma znaczenie. Nie użyjesz nazw zastrzeżonych jak `session_start` ani prefiksów `firebase_`, `google_` i `ga_`.

**Ile parametrów może mieć zdarzenie GA4?**
Do 25 parametrów na zdarzenie. Wartości parametrów mają limit 100 znaków w standardowych usługach. Parametry niestandardowe pokazują się w raportach dopiero po zarejestrowaniu ich jako wymiarów niestandardowych.

**Lepiej GTM czy "Utwórz zdarzenie" w GA4?**
Domyślnie GTM, bo logika żyje w jednym miejscu, które możesz wersjonować i audytować. "Utwórz zdarzenie" w interfejsie GA4 sprawdza się przy szybkich poprawkach i zmianach nazw, ale nie działa wstecz i łatwo zapomnieć, że w ogóle istnieje.

**Jak zrobić z niestandardowego zdarzenia kluczowe zdarzenie?**
Wejdź w Administracja > Wyświetlanie danych > Kluczowe zdarzenia, kliknij Nowe kluczowe zdarzenie i wpisz dokładną nazwę zdarzenia albo oznacz je z listy Zdarzeń. Standardowa usługa pozwala na maksymalnie 30 kluczowych zdarzeń. Jeśli chcesz na nie licytować, zaimportuj je osobno do Google Ads.

**Dlaczego moje zdarzenie niestandardowe nie pojawia się w raportach GA4?**
Raporty standardowe zwykle potrzebują 24 do 48 godzin, żeby pokazać nowe zdarzenia, więc najpierw sprawdź DebugView. Jeśli jest w DebugView, a nie ma go w raportach, szukaj filtrów danych (filtry ruchu deweloperskiego z założenia wykluczają hity debugowania) albo rozjazdu w wielkości liter. Nie ma go nawet w DebugView? To winny jest tag albo trigger w GTM.

## Co dalej

Otwórz Raporty > Zaangażowanie > Zdarzenia i posortuj po nazwie zdarzenia. Szukaj prawie-duplikatów: to samo działanie, inna wielkość liter, inny przyrostek. Każda para, którą znajdziesz, to liczba, którą ktoś czyta źle.

Potem napisz plan śledzenia na jeden ekran, zanim dodasz cokolwiek nowego. Sześć wierszy wystarczy. To plan powstrzyma następną agencję przed wymyśleniem czwartej nazwy dla Twojego formularza demo.

Jeśli chcesz, żeby ktoś drugi rzucił okiem na sam kontener, [darmowy audyt GTM](https://piotrlitwa.com/checkGTM/) wypisuje każdy tag zdarzenia GA4, wysyłane nazwy i duplikaty. A jeśli chcesz, żeby taki dryf był wyłapywany, zanim trafi do prezentacji dla zarządu, do tego służy [retainer z monitoringiem GA4](https://piotrlitwa.com/services.html#ga4).

---

**Źródła i dalsza lektura**
- [Recommended events](https://support.google.com/analytics/answer/9267735) (Google Analytics Help)
- [Event collection limits](https://support.google.com/analytics/answer/9267744) (Google Analytics Help)
- [Rename and generate new events](https://support.google.com/analytics/answer/10085872) (Google Analytics Help)
- [Set up events](https://developers.google.com/analytics/devguides/collection/ga4/events?client_type=gtm) (Google for Developers)

---

*Written by [Piotr Litwa](https://piotrlitwa.com/about.html) - independent GTM & Analytics specialist.*
