Spis treści
- Jak GA4 obsługuje eksperymenty po wyłączeniu Optimize
- Jakie zdarzenie i parametry wysyłać do GA4
- Konfiguracja testu A/B w GA4 przez Google Tag Managera krok po kroku
- Analiza w interfejsie GA4: odbiorcy, porównania i eksploracje
- Analiza testu A/B w BigQuery: konwersja na użytkownika według wariantu
- Pułapki: zgody, progi danych i limity
- Najczęściej zadawane pytania
Test A/B w GA4 polega na przekazaniu do Analytics informacji, który wariant eksperymentu zobaczył użytkownik, a następnie porównaniu zachowania grup w raportach, eksploracjach lub BigQuery. Sam podział ruchu i zmianę treści wykonuje zewnętrzne narzędzie albo Twój kod. Google zaleca, by narzędzia wysyłały zdarzenie experience_impression z parametrem exp_variant_string. Przy własnych testach możesz użyć zdarzenia experiment_impression z parametrami experiment_id i variant_id, zarejestrowanymi jako wymiary niestandardowe.
Najważniejsze w skrócie
- Zdarzenie z wariantem wysyłaj w chwili przypisania użytkownika do wariantu, np. przy załadowaniu strony objętej eksperymentem.
- Zalecany format
exp_variant_stringto identyfikator narzędzia, eksperymentu i wariantu połączone myślnikami, np.ABC-F2948574-3495F49. - Parametry trzeba zarejestrować jako wymiary niestandardowe, inaczej nie zobaczysz ich w raportach ani eksploracjach – a standardowa usługa ma limit 50 wymiarów na poziomie zdarzenia.
- Odbiorcy dla wariantów mogą mieć czas członkostwa do 540 dni, a raporty pokazują jednocześnie najwyżej cztery porównania.
- Najdokładniejszą analizę na poziomie użytkownika zrobisz w BigQuery, licząc konwersje dopiero po pierwszej ekspozycji na wariant.
Jak GA4 obsługuje eksperymenty po wyłączeniu Optimize
GA4 jest warstwą pomiaru: nie przydziela użytkowników do wariantów i nie zmienia strony. Robi to narzędzie do testów, które przekazuje do GA4 informację o wariancie zgodnie ze specyfikacją integracji opublikowaną przez Google.
Specyfikacja obejmuje trzy elementy. Pierwszy to zdarzenie experience_impression z parametrem exp_variant_string. Drugi to odbiorcy tworzeni dla każdego wariantu przez Admin API (properties.audiences.create) – użytkownik trafia do odbiorców, jeśli wartość parametru dokładnie odpowiada identyfikatorowi wariantu. Czas członkostwa można ustawić do 540 dni, a Google zaleca opcję atAnyPointInTime, żeby użytkownik mógł brać udział w kolejnych testach. Trzeci element to archiwizacja odbiorców po zakończeniu testu (properties.audiences.archive). Zarchiwizowani odbiorcy zachowują dane historyczne, ale w interfejsie zamiast nazwy widać ich identyfikator.
Żeby narzędzie mogło utworzyć odbiorców, osoba uruchamiająca eksperyment musi mieć w usłudze GA4 rolę co najmniej edytora. Odbiorców nie da się wstrzymać – jeśli test jest pauzowany, narzędzie przestaje wysyłać zdarzenie, a okres przerwy trzeba wykluczyć z analizy filtrem dat. Przegląd narzędzi, które obsługują taką integrację, znajdziesz w artykule o narzędziach do testów A/B, a podstawowe pojęcie testu A/B – w słowniku.
Jakie zdarzenie i parametry wysyłać do GA4
Wysyłasz jedno zdarzenie na ekspozycję: w momencie, gdy użytkownik zostaje przypisany do wariantu i go widzi. Nie wysyłaj go przy każdym kliknięciu ani przy każdej odsłonie, jeśli narzędzie tego nie wymaga.
| Element | Integracja narzędzia (zalecenie Google) | Własna implementacja | Uwagi |
|---|---|---|---|
| Nazwa zdarzenia | experience_impression |
experiment_impression |
jedna nazwa dla wszystkich testów |
| Identyfikacja wariantu | exp_variant_string w formacie NARZĘDZIE-EKSPERYMENT-WARIANT |
experiment_id i variant_id |
unikalne w całej usłudze |
| Moment wysłania | przypisanie do wariantu | przypisanie do wariantu | np. załadowanie strony z testem |
| Rejestracja w GA4 | wymiar niestandardowy, zakres zdarzenia | dwa wymiary, zakres zdarzenia | standardowo limit 50 wymiarów |
| Długość wartości | krótkie identyfikatory | krótkie identyfikatory | wartości parametrów do 100 znaków |
Wywołanie w gtag.js dla integracji zgodnej ze specyfikacją Google:
gtag('event', 'experience_impression', {
exp_variant_string: 'ABT-HERO2026-B'
});
Przy własnej implementacji i Google Tag Managerze lepiej przekazać dane do warstwy danych, a tag GA4 skonfigurować w kontenerze:
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'experiment_impression',
experiment_id: 'karta_produktu_cta_2026_10',
variant_id: 'B'
});
Nazwy eksperymentów ustal według stałego wzoru, np. obszar_element_rok_miesiąc. Dzięki temu po roku nadal będzie wiadomo, czego dotyczył test. Specyfikację warstwy danych najlepiej przekazać programiście razem z resztą wymagań – wzór takiego dokumentu znajdziesz w tekście o dataLayer dla e-commerce GA4.
Konfiguracja testu A/B w GA4 przez Google Tag Managera krok po kroku
Konfiguracja zajmuje kilkanaście minut, jeśli zdarzenie w warstwie danych jest już wdrożone. Najwięcej błędów pojawia się przy rejestracji wymiarów i testowaniu.
- Ustal źródło zdarzenia. Narzędzie do testów albo kod strony wykonuje
dataLayer.pushpo przydzieleniu wariantu. - Utwórz zmienne. W GTM dodaj dwie zmienne typu „Zmienna warstwy danych”:
experiment_idivariant_id. - Utwórz regułę. Typ „Zdarzenie niestandardowe”, nazwa zdarzenia
experiment_impression. - Utwórz tag zdarzenia GA4. Nazwa zdarzenia
experiment_impression, parametryexperiment_idivariant_idze zmiennych. - Sprawdź kolejność. Tag Google musi być zainicjowany przed tagiem zdarzenia. Jeśli korzystasz z reguł zdarzeń niestandardowych z wyrażeniem regularnym dopasowującym wszystko, pamiętaj, że od 8 października 2026 r. wywołania
gtag('config')pojawiają się jako zdarzeniagtag.config– szczegóły w tekście o zmianach w Google Tag Managerze w 2026 r. - Zarejestruj wymiary. W GA4 przejdź do sekcji definicji niestandardowych w panelu administracyjnym i utwórz dwa wymiary o zakresie zdarzenia dla parametrów
experiment_idivariant_id. - Przetestuj. Wymuś każdy wariant, sprawdź w podglądzie GTM, czy tag się uruchamia, a w DebugView – czy zdarzenie ma oba parametry. Typowe przyczyny braku zdarzeń opisujemy w artykule o DebugView w GA4.
- Opublikuj i odczekaj. Wymiary niestandardowe nie działają wstecz, a dane w raportach pojawiają się z opóźnieniem do 24–48 godzin. Uruchom test dopiero, gdy wymiary są zarejestrowane.
Analiza w interfejsie GA4: odbiorcy, porównania i eksploracje
W interfejsie GA4 masz trzy sposoby analizy: odbiorców i porównania w raportach standardowych, segmenty w eksploracjach oraz wymiar wariantu w tabelach. Każdy daje nieco inne liczby, więc wybierz jeden i stosuj go konsekwentnie.
Odbiorcy i porównania. Jeśli narzędzie utworzyło odbiorców dla wariantów, dodajesz ich jako porównania w raportach, np. w raporcie zakupów. Jednocześnie widać najwyżej cztery porównania. Przy większej liczbie wariantów trzeba je wymieniać.
Eksploracje z segmentami. W eksploracji w formie dowolnej utwórz segment użytkowników, którzy mieli zdarzenie experiment_impression z variant_id równym A, i analogiczny dla B. Jako dane wybierz liczbę użytkowników, zdarzenia kluczowe i przychód. Eksploracja lejka pokaże, na którym kroku warianty się różnią. Zakup musi być oznaczony jako zdarzenie kluczowe – jak to zrobić, wyjaśniamy w tekście o zdarzeniach kluczowych w GA4.
Wymiar w tabeli. Dodanie wymiaru variant_id do tabeli pokaże zdarzenia z ekspozycją, ale nie przypisze zakupu do wariantu, bo zakup to osobne zdarzenie bez tego parametru. Dlatego do oceny testu używaj segmentów użytkowników albo BigQuery.
Dokumentacja Google zwraca uwagę na ograniczenie analizy w eksploracjach: segment użytkowników obejmuje także ich zachowania sprzed ekspozycji, co jest mniej dokładne niż analiza od momentu przypisania do wariantu.
Analiza testu A/B w BigQuery: konwersja na użytkownika według wariantu
BigQuery pozwala policzyć wynik dokładnie tak, jak wymaga tego statystyka: jedna osoba to jedna obserwacja, a konwersja liczy się tylko po pierwszej ekspozycji. Potrzebujesz do tego włączonego eksportu GA4.
WITH ekspozycje AS (
SELECT
user_pseudo_id,
ANY_VALUE(wariant) AS wariant,
MIN(event_timestamp) AS pierwsza_ekspozycja
FROM (
SELECT
user_pseudo_id,
event_timestamp,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'variant_id') AS wariant
FROM `twoj-projekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261028'
AND event_name = 'experiment_impression'
AND (SELECT value.string_value FROM UNNEST(event_params)
WHERE key = 'experiment_id') = 'karta_produktu_cta_2026_10'
AND user_pseudo_id IS NOT NULL
)
GROUP BY user_pseudo_id
HAVING COUNT(DISTINCT wariant) = 1 -- pomija osoby, które widziały oba warianty
),
zakupy AS (
SELECT user_pseudo_id, event_timestamp, ecommerce.purchase_revenue AS przychod
FROM `twoj-projekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261028'
AND event_name = 'purchase'
)
SELECT
e.wariant,
COUNT(DISTINCT e.user_pseudo_id) AS uzytkownicy,
COUNT(DISTINCT z.user_pseudo_id) AS kupujacy,
SAFE_DIVIDE(COUNT(DISTINCT z.user_pseudo_id), COUNT(DISTINCT e.user_pseudo_id)) AS konwersja,
SUM(z.przychod) AS przychod
FROM ekspozycje e
LEFT JOIN zakupy z
ON z.user_pseudo_id = e.user_pseudo_id
AND z.event_timestamp >= e.pierwsza_ekspozycja
GROUP BY e.wariant
ORDER BY e.wariant;
Liczby użytkowników i kupujących z wyniku wstawiasz do testu dla dwóch proporcji, który pokazujemy w artykule o istotności statystycznej i wielkości próby. Sprawdź też, czy podział użytkowników między warianty odpowiada założonemu – istotne odchylenie od 50/50 oznacza błąd wdrożenia. Jeśli zakupy w eksporcie są zduplikowane, najpierw usuń duplikaty według transaction_id. Jak skonfigurować sam eksport i ile kosztuje, opisujemy w tekście o połączeniu GA4 z BigQuery.
Pułapki: zgody, progi danych i limity
Wynik testu w GA4 może się różnić od wyniku w narzędziu do testów, bo obie strony widzą inną część ruchu. Najczęstsze przyczyny to zgody, progi danych i limity usługi.
- Zgody. W trybie podstawowym Consent Mode GA4 nie dostaje danych od osób bez zgody, a w zaawansowanym dostaje pingi bez trwałego identyfikatora, których nie przypiszesz do wariantu na poziomie użytkownika. Jeśli wariant zmienia sposób wyświetlania banera, odsetek zgód może się różnić między grupami i zafałszować wynik. Różnice między trybami opisujemy w porównaniu Consent Mode podstawowego i zaawansowanego.
- Progi danych. Przy małych liczbach GA4 może ukrywać wiersze w raportach. Jak od 15 czerwca 2026 r. działają Google Signals i co zmieniło się w danych reklamowych, wyjaśniamy w tekście o oddzieleniu Google Signals od ad_storage. Przy wątpliwościach analizuj test w BigQuery.
- Wiersz „(other)”. Wiele równoległych eksperymentów i odbiorców zwiększa liczbę unikalnych wartości, co może powodować wiersz „(other)”. Klienci GA4 360 mają do dyspozycji rozszerzone zbiory danych.
- Limity wymiarów. Nie twórz osobnego wymiaru dla każdego testu. Dwa wymiary
experiment_idivariant_idobsłużą wszystkie eksperymenty. - Brak działania wstecz. Wymiar zarejestrowany po starcie testu nie pokaże danych z pierwszych dni.
Pozostałe błędy, które fałszują wyniki – od niezrównoważonego podziału ruchu po podglądanie wyników – opisujemy w artykule o 12 błędach w testach A/B. Wszystkie poradniki o eksperymentach zebraliśmy w dziale Testy A/B.
Najczęściej zadawane pytania
Czy GA4 może sam podzielić ruch na warianty testu A/B?
Nie. GA4 nie ma funkcji przydzielania użytkowników do wariantów ani zmieniania treści strony – po wyłączeniu Google Optimize we wrześniu 2023 r. robią to zewnętrzne narzędzia lub własny kod. GA4 służy do pomiaru: przyjmuje zdarzenie z informacją o wariancie i pozwala porównać zachowanie grup w raportach, eksploracjach oraz w eksporcie do BigQuery.
Jakie zdarzenie wysyłać do GA4 przy teście A/B?
Google zaleca zdarzenie experience_impression z parametrem exp_variant_string w formacie identyfikator narzędzia, eksperymentu i wariantu połączone myślnikami. Przy własnej implementacji możesz użyć zdarzenia experiment_impression z parametrami experiment_id i variant_id. W obu przypadkach wysyłaj je w chwili przypisania użytkownika do wariantu i zarejestruj parametry jako wymiary niestandardowe.
Dlaczego wymiar z wariantem nie pokazuje się w raportach GA4?
Najczęściej parametr nie został zarejestrowany jako wymiar niestandardowy albo zarejestrowano go po starcie testu, a wymiary nie działają wstecz. Dane w raportach pojawiają się też z opóźnieniem do 24–48 godzin. Sprawdź w DebugView, czy zdarzenie ma parametr o dokładnie tej samej nazwie co w definicji wymiaru – wielkość liter ma znaczenie.
Czy wyniki testu w GA4 i w narzędziu do testów mogą się różnić?
Tak, i to normalne. Narzędzie do testów i GA4 inaczej liczą użytkowników, mają inne zasady przypisywania konwersji i różnie reagują na brak zgody lub blokowanie skryptów. Ważne, żeby kierunek i skala efektu były podobne. Duża rozbieżność, np. odwrotny wynik, oznacza zwykle błąd w przekazywaniu wariantu albo różny odsetek zgód w grupach.
Ile wymiarów niestandardowych zużywa jeden test A/B?
Przy dobrze zaprojektowanej implementacji żadnego dodatkowego. Wystarczą dwa wymiary o zakresie zdarzenia, experiment_id i variant_id, zarejestrowane raz i używane przez wszystkie kolejne testy. Przy integracji zgodnej ze specyfikacją Google wystarczy jeden wymiar dla exp_variant_string. Standardowa usługa GA4 ma limit 50 wymiarów o zakresie zdarzenia.