Przejdź do treści

Testy A/B w GA4: jak przekazywać warianty eksperymentu i analizować wyniki

GA4 nie prowadzi testów, ale dobrze nadaje się do ich analizy – pod warunkiem, że poprawnie przekażesz informację o wariancie. Pokazujemy specyfikację zdarzeń, konfigurację w GTM i zapytanie SQL, które policzy wynik testu.

Redakcja Pixel Insider8 min czytaniaPoziom: średni

  • GA4
  • GTM
  • BigQuery
  • SQL
Spis treści
  1. Jak GA4 obsługuje eksperymenty po wyłączeniu Optimize
  2. Jakie zdarzenie i parametry wysyłać do GA4
  3. Konfiguracja testu A/B w GA4 przez Google Tag Managera krok po kroku
  4. Analiza w interfejsie GA4: odbiorcy, porównania i eksploracje
  5. Analiza testu A/B w BigQuery: konwersja na użytkownika według wariantu
  6. Pułapki: zgody, progi danych i limity
  7. 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_string to 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.

  1. Ustal źródło zdarzenia. Narzędzie do testów albo kod strony wykonuje dataLayer.push po przydzieleniu wariantu.
  2. Utwórz zmienne. W GTM dodaj dwie zmienne typu „Zmienna warstwy danych”: experiment_id i variant_id.
  3. Utwórz regułę. Typ „Zdarzenie niestandardowe”, nazwa zdarzenia experiment_impression.
  4. Utwórz tag zdarzenia GA4. Nazwa zdarzenia experiment_impression, parametry experiment_id i variant_id ze zmiennych.
  5. 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 zdarzenia gtag.config – szczegóły w tekście o zmianach w Google Tag Managerze w 2026 r.
  6. Zarejestruj wymiary. W GA4 przejdź do sekcji definicji niestandardowych w panelu administracyjnym i utwórz dwa wymiary o zakresie zdarzenia dla parametrów experiment_id i variant_id.
  7. 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.
  8. 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_id i variant_id obsł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.