Blog

Optymalizacja sklepu

Google Analytics 4 dla sklepu internetowego – konfiguracja od zera

Skonfiguruj GA4 dla sklepu internetowego: zdarzenia e-commerce, dataLayer, GTM, Consent Mode v2, test zakupu i raportowanie.

Konfiguracja Google Analytics 4 dla sklepu internetowego od zera

Google Analytics 4 dla sklepu internetowego trzeba skonfigurować w trzech warstwach: w panelu GA4, w kodzie sklepu i w Google Tag Managerze. Samo wklejenie identyfikatora pomiaru pokaże ruch, ale nie odpowie wiarygodnie na pytania o produkty, koszyki, zamówienia i przychód. Poniżej znajdziesz kolejność wdrożenia, która prowadzi od pustej usługi GA4 do przetestowanej transakcji.

Najważniejsza zasada brzmi: najpierw zaprojektuj dane, które sklep ma udostępniać, później konfiguruj tagi. GTM może przesłać informacje do Google, ale nie odtworzy numeru zamówienia, wartości koszyka ani wariantu produktu, jeśli aplikacja ich nie wystawi.

Zanim zaczniesz: ustal źródło prawdy

GA4 nie powinno być systemem księgowym. Źródłem prawdy o liczbie i wartości zamówień pozostaje backend sklepu, system płatniczy lub ERP. Analytics służy do łączenia sprzedaży z zachowaniem użytkownika i źródłem wizyty.

Ta różnica jest praktyczna. W GA4 część transakcji może nie zostać zarejestrowana z powodu braku zgody, blokady przeglądarki, utraty połączenia albo niewczytania strony potwierdzenia. Dlatego celem wdrożenia nie jest uzyskanie identycznych wartości w każdym systemie, lecz stabilnej, wyjaśnialnej różnicy.

Przed pracami przygotuj krótki plan pomiaru. Dla każdego zdarzenia zapisz:

  • moment wywołania;
  • potrzebne parametry;
  • źródło każdej wartości w sklepie;
  • zachowanie w nietypowych sytuacjach, np. przy zmianie liczby sztuk, odświeżeniu strony podziękowania lub częściowym zwrocie;
  • właściciela technicznego, który odpowiada za dane.

Jeżeli sklep działa w kilku walutach, ma zewnętrzną domenę checkoutu albo korzysta z aplikacji SPA, uwzględnij to od początku. Późniejsze poprawianie modelu danych zwykle pozostawia w raportach okresy, których nie da się porównać.

Krok 1. Utwórz usługę GA4 i strumień danych

W Google Analytics utwórz konto dla firmy, a następnie usługę GA4. Ustaw:

  • strefę czasową zgodną z podstawowym rynkiem rozliczeniowym sklepu, np. Polską;
  • domyślną walutę, zazwyczaj PLN;
  • strumień danych typu „Sieć” dla domeny sklepu.

Po utworzeniu strumienia otrzymasz identyfikator w formacie `G-XXXXXXXXXX`. Będzie potrzebny w Google Tag Managerze.

Włącz pomiar zaawansowany tylko dla interakcji, które rzeczywiście chcesz zbierać, np. wyszukiwania w witrynie, przewijania, pobierania plików czy kliknięć wychodzących. Ta funkcja **nie wdraża zdarzeń e-commerce**. Google wyjaśnia wprost, że zdarzenia zakupowe trzeba dodać do witryny, aplikacji lub kontenera GTM — nie są wysyłane automatycznie (dokumentacja konfiguracji e-commerce).

Ustawienia administracyjne, które warto zmienić od razu

  1. **Retencja danych:** ustaw 14 miesięcy dla danych użytkowników i zdarzeń. W standardowej usłudze GA4 dostępne są 2 lub 14 miesięcy. Ustawienie wpływa na eksploracje i raporty ścieżki, ale nie usuwa standardowych raportów zagregowanych po 14 miesiącach (Google: przechowywanie danych).
  2. **Ruch wewnętrzny:** zdefiniuj adresy IP biura, agencji i zespołu deweloperskiego. Najpierw pozostaw filtr w trybie testowym. Aktywuj go dopiero po sprawdzeniu, że nie obejmuje klientów.
  3. **Niechciane witryny odsyłające:** dodaj domeny operatorów płatności, jeśli klient opuszcza sklep i wraca z bramki. Bez tego PayU, Przelewy24, PayPal lub inny operator może pojawić się jako źródło sesji zakończonej zakupem. Jeśli dopiero wybierasz dostawcę, sprawdź porównanie bramek płatności dla sklepu.
  4. **Pomiar w wielu domenach:** skonfiguruj cross-domain tracking, jeżeli koszyk albo checkout działa na innej domenie należącej do firmy. Wykluczenie witryny odsyłającej nie zastępuje śledzenia między domenami — rozwiązuje inny problem.
  5. **Połączenia z usługami:** połącz GA4 z Google Ads i Search Console, jeśli firma ich używa. Nie importuj jednak zakupu do Ads przed jego pełnym przetestowaniem.

Krok 2. Zaprojektuj lejek zdarzeń e-commerce

GA4 opiera pomiar sklepu na zdarzeniach i tablicy `items`. Nazwy z oficjalnego schematu zasilają gotowe wymiary, metryki i raporty. Własne nazwy typu `productClick` lub `orderComplete` mogą być technicznie wysłane, lecz nie zastąpią `select_item` i `purchase` w standardowych raportach.

Nie każdy sklep musi wdrażać cały katalog pierwszego dnia. Sensowne minimum obejmuje `view_item`, `add_to_cart`, `begin_checkout` i `purchase`. Bez wcześniejszych kroków zobaczysz sprzedaż, ale nie ustalisz, na którym etapie klienci odpadają.

EtapZdarzenieMoment wywołania
Lista produktów`view_item_list`Produkty zostały rzeczywiście pokazane na liście kategorii, w wynikach wyszukiwania lub rekomendacjach
Wybór produktu`select_item`Użytkownik kliknął produkt na konkretnej liście
Karta produktu`view_item`Użytkownik zobaczył stronę lub widok produktu — sprawdź, co powinna zawierać dobra karta produktu
Koszyk`add_to_cart`Sklep potwierdził dodanie produktu do koszyka
Koszyk`remove_from_cart`Produkt lub określona liczba sztuk została usunięta
Widok koszyka`view_cart`Użytkownik otworzył stronę koszyka albo panel boczny
Checkout`begin_checkout`Rozpoczął się pierwszy właściwy krok składania zamówienia
Dostawa`add_shipping_info`Użytkownik zatwierdził metodę dostawy
Płatność`add_payment_info`Użytkownik zatwierdził metodę płatności
Zamówienie`purchase`Sklep potwierdził utworzenie opłaconego lub przyjętego zamówienia zgodnie z ustaloną definicją
Zwrot`refund`System potwierdził pełny albo częściowy zwrot

Osobno można wdrożyć `view_promotion` i `select_promotion` dla banerów oraz wewnętrznych kampanii. Rób to wtedy, gdy zespół faktycznie będzie analizował skuteczność takich powierzchni.

Moment wywołania powinien odzwierciedlać skutek, a nie samą próbę. Przykładowo `add_to_cart` wyślij po odpowiedzi aplikacji potwierdzającej dodanie produktu. Kliknięcie przycisku, po którym sklep zwróci błąd magazynowy, nie jest dodaniem do koszyka.

Krok 3. Ustandaryzuj dane produktów w `items`

Każde zdarzenie produktowe powinno przekazywać tę samą tożsamość i klasyfikację towaru. Jeśli na liście produkt ma `item_id: "KUR-10293"`, a przy zakupie `item_id: "10293-XL-NAVY"`, GA4 potraktuje te wartości jako różne produkty.

Podstawowy obiekt produktu powinien zawierać:

  • `item_id` — stabilny identyfikator produktu lub SKU;
  • `item_name` — nazwę produktu;
  • `price` — cenę jednostkową zgodną z przyjętą w firmie definicją;
  • `quantity` — liczbę sztuk;
  • `item_brand` — markę;
  • `item_category` do `item_category5` — kolejne poziomy kategorii;
  • `item_variant` — wariant, np. kolor i rozmiar;
  • `item_list_id` oraz `item_list_name` — źródłową listę produktu, gdy zdarzenie dotyczy listy.

GA4 przyjmuje do 200 elementów w tablicy `items` oraz do 27 dodatkowych parametrów niestandardowych w każdym obiekcie, poza parametrami zdefiniowanymi przez Google (specyfikacja pomiaru e-commerce). To limit techniczny, nie zachęta do wysyłania wszystkiego. Parametr niestandardowy dodaj tylko wtedy, gdy ma konkretne zastosowanie w raporcie lub grupie odbiorców.

Przykład `dataLayer` dla karty produktu

W przypadku implementacji przez GTM sklep powinien umieścić dane w warstwie `dataLayer`:

```javascript window.dataLayer = window.dataLayer || [];

dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "view_item", ecommerce: { currency: "PLN", value: 299.99, items: [{ item_id: "KUR-10293-GR-XL", item_name: "Kurtka trekkingowa Storm", item_brand: "AlpineMaster", item_category: "Odzież", item_category2: "Kurtki", item_variant: "Granatowy / XL", price: 299.99, quantity: 1 }] } }); ```

Pierwszy zapis czyści poprzedni obiekt `ecommerce`. Jest szczególnie ważny w aplikacjach SPA i sklepach z dynamicznie odświeżanym widokiem, gdzie dane wcześniejszego produktu mogłyby trafić do kolejnego zdarzenia.

Nie umieszczaj w parametrach adresu e-mail, telefonu, imienia, nazwiska ani innych danych pozwalających rozpoznać klienta. Google zabrania przesyłania danych osobowych do Analytics (zasady dotyczące danych umożliwiających identyfikację). Numer zamówienia może służyć jako `transaction_id`, o ile nie zawiera danych klienta.

Krok 4. Skonfiguruj Google Tag Manager

Załóż kontener GTM dla domeny sklepu i dodaj jego kod zgodnie z instrukcją Google. Następnie utwórz:

  1. tag główny **Google tag** z identyfikatorem `G-XXXXXXXXXX`, uruchamiany na wszystkich właściwych stronach;
  2. tag zdarzeniowy GA4, którego nazwą zdarzenia jest wbudowana zmienna `{{Event}}`;
  3. reguły typu „Zdarzenie niestandardowe” dla zdarzeń e-commerce;
  4. odczyt danych e-commerce z warstwy danych w ustawieniach tagu.

Dla niewielkiego wdrożenia można użyć jednego tagu i jednej reguły z wyrażeniem regularnym:

```text ^(view_item_list|select_item|view_item|add_to_cart|remove_from_cart|view_cart|begin_checkout|add_shipping_info|add_payment_info|purchase|refund)$ ```

Osobne tagi są uzasadnione, gdy zdarzenia wymagają innych parametrów, warunków zgody lub wyjątków. Nie dziel konfiguracji na kilkanaście niemal identycznych tagów wyłącznie dlatego, że tak wyglądał starszy poradnik.

Najpierw zgody, później tagi

W polskim sklepie działającym na rynku EOG konfigurację GTM trzeba połączyć z banerem zgód lub platformą CMP. Consent Mode v2 przekazuje cztery stany:

  • `analytics_storage` — zgodę na przechowywanie danych analitycznych;
  • `ad_storage` — zgodę na przechowywanie danych reklamowych;
  • `ad_user_data` — zgodę na przesyłanie danych użytkownika do Google w celach reklamowych;
  • `ad_personalization` — zgodę na reklamę spersonalizowaną.

Google opisuje dwa warianty. W trybie podstawowym tagi Google są blokowane do momentu zgody; przy jej braku dane nie są przesyłane. W trybie zaawansowanym tagi ładują się z domyślnym stanem `denied` i mogą wysyłać pomiary bez plików cookie, co daje dokładniejsze modelowanie (porównanie trybów Consent Mode).

Wybór trybu nie jest wyłącznie decyzją analityczną. Powinien wynikać z konfiguracji CMP, polityki prywatności i oceny prawnej firmy — więcej o wymaganiach RODO w artykule RODO w e-commerce – jak uniknąć kary. Technicznie dopilnuj dwóch rzeczy: stan domyślny musi zostać ustawiony przed zdarzeniami pomiarowymi, a aktualizacja zgody — na tej samej stronie, zanim użytkownik przejdzie dalej (instrukcja wdrożenia Consent Mode).

Nie oceniaj poprawności wdrożenia wyłącznie po tym, że baner działa. Sprawdź podsumowanie zgód w Tag Assistant, zachowanie tagów po odmowie i akceptacji oraz żądania sieciowe wysyłane do Google. Kody w parametrach technicznych żądań mogą się zmieniać; ważniejszy jest rzeczywisty stan wszystkich czterech zgód i zgodne z nim zachowanie tagów.

Krok 5. Zbuduj poprawne zdarzenie `purchase`

`purchase` decyduje o jakości raportów przychodowych i optymalizacji kampanii. Powinno zostać wygenerowane na podstawie potwierdzonych danych zamówienia, a nie wartości odczytanych z elementów widocznych na stronie.

```javascript dataLayer.push({ ecommerce: null }); dataLayer.push({ event: "purchase", ecommerce: { transaction_id: "ORD-2026-9921", value: 349.99, tax: 65.45, shipping: 19.99, currency: "PLN", coupon: "START20", items: [ { item_id: "KUR-10293-GR-XL", item_name: "Kurtka trekkingowa Storm", item_brand: "AlpineMaster", item_category: "Odzież", item_category2: "Kurtki", item_variant: "Granatowy / XL", price: 299.99, quantity: 1 }, { item_id: "IMP-40912-250", item_name: "Impregnat do tkanin technicznych", item_brand: "AlpineMaster", item_category: "Akcesoria", item_variant: "Spray 250 ml", price: 50.00, quantity: 1 } ] } }); ```

W tym przykładzie `value` wynosi 349,99 zł, czyli sumę `price × quantity` dla produktów. `shipping` i `tax` są przekazywane osobno. Taką definicję pokazuje aktualny przykład Google dla zdarzenia zakupu (dokumentacja `purchase`).

Najczęstsze błędy w `purchase` mają duży wpływ na wynik:

  • **Pusty lub stały `transaction_id`:** identyfikator musi być unikalny dla zamówienia. Nie wysyłaj pustego ciągu.
  • **Podwójne wywołanie:** odświeżenie strony podziękowania nie może tworzyć nowej transakcji. GA4 deduplikuje zakupy o tym samym `transaction_id` w strumieniu internetowym, ale identyfikator i tak powinien pochodzić z backendu i być stabilny (Google: deduplikacja transakcji).
  • **Niewłaściwy moment:** ustal, czy zakup oznacza utworzenie zamówienia, czy dopiero skuteczną płatność. W sklepach z pobraniem lub przelewem tradycyjnym druga definicja może zaniżać sprzedaż w dniu zamówienia. Jeśli integrujesz BLIK, przeczytaj jak działa BLIK w e-commerce.
  • **Brak `currency` przy `value`:** walutę podawaj na poziomie zdarzenia w formacie ISO 4217, np. `PLN`, `EUR` lub `USD`.
  • **Inny rabat w zdarzeniu i pozycjach:** zapisz jedną regułę liczenia cen oraz rabatów i stosuj ją w każdym kroku lejka.

Zwroty przesyłaj zdarzeniem `refund` z tym samym `transaction_id`. Przy zwrocie częściowym dołącz tylko zwracane pozycje, ich identyfikatory i liczby sztuk. Dzięki temu raport pokaże nie tylko skorygowany przychód, lecz także produkty generujące zwroty.

Krok 6. Przetestuj pełną ścieżkę, nie pojedynczy tag

Test powinien imitować prawdziwe zamówienie. Otwórz tryb podglądu GTM, uruchom DebugView w GA4 i przejdź kolejno przez listę produktów, kartę, koszyk, checkout oraz stronę potwierdzenia.

Dla każdego zdarzenia sprawdź:

  • czy uruchamia się dokładnie raz;
  • czy następuje po faktycznie wykonanej akcji;
  • czy `item_id`, nazwa, wariant, cena i liczba sztuk są zgodne z backendem;
  • czy `value` i `currency` mają prawidłowy typ oraz wartość;
  • czy pozycje z poprzedniego zdarzenia nie „przeciekają” do kolejnego;
  • czy tag reaguje prawidłowo na odmowę i udzielenie zgody;
  • czy powrót z operatora płatności nie tworzy nowej sesji z nieprawidłowym źródłem.

Następnie wykonaj osobne scenariusze brzegowe: kod rabatowy, darmową dostawę, zmianę liczby sztuk, produkt bez wariantu, płatność odrzuconą, odświeżenie strony podziękowania oraz zwrot częściowy. W narzędziach deweloperskich przeglądarki możesz dodatkowo filtrować żądania po `g/collect`, aby potwierdzić, że dane rzeczywiście opuściły przeglądarkę.

Na koniec porównaj pojedyncze zamówienie z trzema miejscami: backendem sklepu, podglądem GTM i DebugView. Standardowe raporty GA4 nie służą do testowania „na żywo”; przetworzenie danych może potrwać 24–48 godzin (Google: e-commerce w GA4).

Krok 7. Zbuduj raporty, które pomagają podejmować decyzje

Po wdrożeniu nie zaczynaj od rozbudowanego dashboardu. Najpierw potwierdź trzy liczby: transakcje, przychód z zakupów i liczbę kupionych produktów. Porównuj je codziennie z backendem przez co najmniej tydzień, osobno dla głównych metod płatności i urządzeń.

Kiedy dane są stabilne, zbuduj w Eksploracjach lejek:

```text view_item → add_to_cart → begin_checkout → add_shipping_info → add_payment_info → purchase ```

Nie każdy spadek oznacza błąd. Użytkownik może dodać kilka produktów, wrócić do koszyka później albo przejść część ścieżki na innym urządzeniu. Alarmem jest nagła zmiana współczynnika między dwoma krokami po publikacji nowej wersji sklepu. Szczegółową metodykę diagnozowania i usuwania barier w lejku opisujemy w poradniku jak zwiększyć konwersję sklepu internetowego.

W raportach produktowych analizuj nie tylko przychód. Połączenie wyświetleń list, kliknięć, odsłon produktu, dodań do koszyka i zakupów pozwala odróżnić trzy problemy:

  • produkt jest słabo eksponowany;
  • kafel przyciąga uwagę, ale karta produktu nie przekonuje;
  • produkt trafia do koszyka, lecz warunki dostawy lub płatności zatrzymują zakup.

Jeśli potrzebujesz surowych zdarzeń, dłuższej historii lub połączenia danych z CRM i ERP, włącz eksport do BigQuery możliwie wcześnie. Standardowa usługa GA4 pozwala eksportować dziennie do miliona zdarzeń w eksporcie wsadowym; streaming nie ma limitu wolumenu, ale generuje koszty i może zawierać luki (Google: opcje eksportu BigQuery). Dane w BigQuery mogą różnić się od interfejsu GA4, ponieważ eksport zawiera surowe zdarzenia bez części modelowania i wzbogacenia stosowanego w raportach.

Lista kontrolna przed publikacją

Wdrożenie można uznać za gotowe, gdy:

  • usługa ma właściwą strefę czasową, walutę i 14-miesięczną retencję;
  • ruch wewnętrzny działa w trybie testowym lub został świadomie aktywowany;
  • domeny operatorów płatności i ewentualny cross-domain tracking są skonfigurowane;
  • każde zdarzenie ma jednoznaczną definicję biznesową;
  • produkty zachowują to samo `item_id` na całej ścieżce;
  • `purchase` pobiera dane z potwierdzonego zamówienia i ma unikalny `transaction_id`;
  • odświeżenie strony potwierdzenia nie zawyża sprzedaży;
  • Consent Mode v2 działa po odmowie, częściowej zgodzie i pełnej akceptacji;
  • pełny zakup przeszedł test w GTM, DebugView oraz żądaniach sieciowych;
  • transakcja pojawiła się w standardowych raportach i została porównana z backendem;
  • zespół wie, kto sprawdza pomiar po zmianach checkoutu, płatności i szablonów produktów.

Google Analytics 4 w e-commerce jest wiarygodne wtedy, gdy sklep przekazuje spójne dane, a wdrożenie obejmuje także zgody, płatności, zwroty i scenariusze błędów. Dobrze zaprojektowany pomiar nie kończy się na zielonym statusie tagu — kończy się liczbami, których różnicę względem systemu sprzedażowego potrafisz wyjaśnić.

---

Sugerowane linki wewnętrzne