Jeśli przychód w GA4 różni się od panelu sklepu o kilkanaście procent, problem prawie nigdy nie leży w samym Google Analytics, a w konfiguracji i wdrożeniu pomiaru. Weryfikacja konfiguracji i wdrożenia sprowadza się do trzech kroków: sprawdzenia ustawień administracyjnych, przejścia ścieżki zdarzeń w DebugView oraz porównania liczb z panelem sklepu. Poniżej znajdziesz konkretne objawy błędów, checklistę ustawień i procedurę testową, którą wykonasz samodzielnie w kilkanaście minut. Osobne sekcje poświęcamy PrestaShop i WooCommerce, bo tam błędy mają własną specyfikę, której nie widać w uniwersalnych poradnikach.

Po czym poznać, że wdrożenie GA4 w sklepie jest skonfigurowane źle

Zamiast zgadywać, sprawdź pięć objawów. Każdy ma jedną, powtarzalną przyczynę.

  1. Brak zdarzenia purchase. Składasz zamówienie, a w DebugView nic się nie pojawia. W raporcie „Zakupy e-commerce” widzisz zero albo kilka zdarzeń, choć sklep ma kilkadziesiąt zamówień tygodniowo. Typowe przyczyny: purchase odpala się dopiero przy statusie „zakończone”, zdarzenie gubi się przy przekierowaniu na zewnętrzną bramkę płatności albo tag nie jest podpięty do strony potwierdzenia. W WooCommerce warto najpierw ustalić, przy jakich statusach zamówienia wysyłane jest zdarzenie — statusy opisuje dokumentacja WooCommerce.
  2. Zaniżony przychód względem panelu. GA4 pokazuje 48 000 zł, panel sklepu 52 000 zł. To 7,7% różnicy — za dużo. Część zamówień nie dochodzi do GA4 (przekierowania, blokady skryptów, błędy JS), część dolicza się podwójnie po odświeżeniu strony potwierdzenia.
  3. Brak item_id w raportach. W raportach „Wyświetlone elementy” i „Zakupy e-commerce” zamiast produktów widzisz „(not set)”. Bez item_id nie zbudujesz odbiorców remarketingowych ani raportu sprzedaży per SKU.
  4. Ruch płatny wpadający do Direct/None. Kampanie Google Ads i Meta lądują w kanale Direct. Przyczyna: brak parametrów UTM w linkach, przekierowanie międzydomenowe bez konfiguracji albo zgoda (consent) odcinająca parametry.
  5. Brak rozbicia na pozycje zamówienia. purchase wysyła tylko value i currency, bez tablicy items. Widzisz przychód, ale nie wiesz, co się sprzedało.

Kryterium akceptacji: różnica między przychodem w GA4 a panelem sklepu w ujęciu tygodniowym nie powinna przekraczać 2–5%. Wyższa wartość oznacza błąd wdrożenia, a nie „normalne odchylenie”.

Test diagnostyczny w 10 minut: włącz DebugView (rozszerzenie GA Debugger, Tag Assistant lub parametr debug_mode), złóż jedną transakcję testową na najtańszym produkcie i sprawdź w DebugView, czy purchase ma currency=PLN, value, transaction_id oraz pełną tablicę items z item_id. Potem zajrzyj do raportu Czas rzeczywisty — obejmuje 30 minut. Zamówienie testowe anuluj i dopisz swoje IP do filtra ruchu wewnętrznego, żeby nie zanieczyszczało danych.

ObjawGdzie to zobaczyszNajczęstsza przyczyna
Brak purchaseDebugView, raport „Zakupy e-commerce”Tag podpięty do złego kroku lub do statusu „zakończone”
Zaniżony przychódPorównanie z panelem sklepu (tydzień do tygodnia)Zgubione zamówienia z przekierowań lub duplikaty zdarzeń
Brak item_idRaporty „Wyświetlone elementy”, „Zakupy e-commerce”Tablica items bez item_id lub wysyłana tylko nazwa produktu
Direct zamiast PaidRaport „Pozyskiwanie ruchu”Brak UTM, przekierowanie międzydomenowe, zgody
Brak rozbicia na itemyRaport „Zakupy e-commerce” (pozycje)purchase z value bez tablicy items

Jak działa ścieżka danych e-commerce w GA4 od zdarzenia do raportu

Zanim cokolwiek sprawdzisz, uporządkuj model danych. W GA4 ścieżka wygląda tak: zdarzenie w przeglądarce → parametry (część z nich item-scoped) → oznaczenie zdarzenia jako konwersji → raport. Każdy etap psuje się niezależnie od pozostałych.

Warstwa wysyłki. Masz trzy drogi. gtag.js — snippet wstawiony w motyw, najprostszy, ale każda zmiana wymaga wdrożenia na produkcję. Google Tag Manager — kontener z tagami i wyzwalaczami, wersjonowanie, tryb podglądu i audyt; standard przy sklepie z kilkoma integracjami. Measurement Protocol — wysyłka z backendu, np. z ERP po zmianie statusu zamówienia; wymaga api_secret oraz poprawnego client_id i session_id. Bez nich zdarzenie wpadnie jako nowy użytkownik i rozbije atrybucję. Zasada praktyczna: nie wysyłaj purchase dwiema drogami jednocześnie — jeśli musisz, transaction_id odfiltruje duplikat.

Parametry, które decydują o raportach. Zdarzenia e-commerce niosą tablicę items z parametrami item-scoped: item_id, item_name, price, quantity, item_brand, item_category. Obok nich parametry zdarzenia: currency, value, transaction_id, coupon, shipping. Najważniejsza jest spójność z panelem sklepu — jeśli w panelu liczycie brutto, w GA4 też brutto. Mieszanie netto i brutto daje różnice rzędu 20% i więcej.

Co jest wymagane, a co tylko rekomendowane. Krytyczne jest wyłącznie purchase — bez niego nie ma przychodu w raportach. view_item, add_to_cart, begin_checkout, view_item_list, select_item i add_payment_info są rekomendowane: zasilają ścieżkę zakupową, grupy odbiorców i remarketing, ale ich brak nie zeruje przychodu. Wdrożenie zaczynaj od purchase, dopiero potem dodawaj resztę — nie odwrotnie.

ZdarzenieKiedy wysyłaćMinimalne parametryRola
purchasePo potwierdzeniu zamówieniatransaction_id, value, currency, items[]Przychód, konwersja, remarketing
view_itemWejście na kartę produktucurrency, value, items[]Ścieżka zakupowa, odbiorcy
add_to_cartDodanie do koszykacurrency, value, items[]Ścieżka zakupowa, porzucone koszyki
begin_checkoutWejście do koszyka/checkoutucurrency, value, items[]Ścieżka zakupowa
view_item_listWyświetlenie listy produktówitem_list_id, items[]Skuteczność listingów i kategorii

Weryfikacja konfiguracji: co sprawdzić zanim uruchomisz testy

Zanim uruchomisz testy, zamknij konfigurację. Błędy w tych pięciu miejscach psują dane niezależnie od jakości wdrożenia w sklepie.

Strefa czasowa i waluta. Administracja → Ustawienia usługi → Informacje o usłudze. Ustaw strefę Europe/Warsaw — przy innym ustawieniu zamówienie z 31 sierpnia, 23:40 trafi do innego dnia, a tygodniowe zestawienie przestanie zgadzać się z panelem sklepu o kilka procent. Walutę wybierasz raz przy tworzeniu usługi i nie da się jej później zmienić; przy sklepie w PLN musi być PLN.

Przechowywanie danych. Administracja → Ustawienia zbierania danych → Przechowywanie danych. Domyślnie GA4 trzyma dane zdarzeniowe i użytkowników 2 miesiące, maksimum to 14 miesięcy. Przy dłuższym cyklu zakupowym (B2B, meble, części zamienne) zostawienie 2 miesięcy oznacza, że za kwartał nie policzysz nic wstecz. Ustaw 14 miesięcy od razu.

Filtry ruchu wewnętrznego. Administracja → Strumienie danych → Konfiguruj ustawienia tagu → Zdefiniuj ruch wewnętrzny: dodaj IP biura, agencji, VPN-a i serwera testowego. Potem Administracja → Ustawienia zbierania danych → Filtry danych → Ruch wewnętrzny i zmień status z „Testowy” na „Aktywny”. Zostawienie filtra w trybie testowym to najczęstszy błąd — wygląda na włączony i nic nie robi.

Definicje konwersji. Administracja → Zdarzenia: purchase musi mieć włączony przełącznik „Oznacz jako konwersję”. Sprawdź, czy nie masz dwóch definicji purchase z różnych strumieni. add_to_cart i begin_checkout możesz oznaczyć jako konwersje pomocnicze, ale nie wliczaj ich do raportów przychodu.

Strumień, potok danych i BigQuery. Sprawdź konfigurację domen (subdomeny sklepu, koszyk na innej domenie), połączenie z Google Ads i eksport do BigQuery, jeśli chcesz trzymać surowe dane dłużej niż 14 miesięcy — pamiętaj o kosztach zapytań. Przy wdrożeniu po stronie sklepu punktem wyjścia jest dokumentacja dla deweloperów PrestaShop, która opisuje natywne hooki i moduły.

UstawienieGdzie w GA4Poprawna wartośćSkutek błędu
Strefa czasowaAdministracja → Informacje o usłudzeEurope/WarsawZamówienia w złych dniach i tygodniach
WalutaAdministracja → Informacje o usłudzePLN (niezmienna po utworzeniu)Przychód przeliczany po kursie
Przechowywanie danychAdministracja → Ustawienia zbierania danych14 miesięcyDane starsze niż 2 miesiące przepadają
Filtr ruchu wewnętrznegoAdministracja → Filtry danychStatus „Aktywny”Testy i wejścia biura wliczone w sprzedaż
KonwersjeAdministracja → Zdarzeniapurchase oznaczony jako konwersjaBrak przychodu i brak optymalizacji kampanii

Weryfikacja wdrożenia krok po kroku: DebugView, Tag Assistant i Realtime

Kolejność testów ma znaczenie: najpierw Tag Assistant w trybie Preview, potem DebugView, na końcu Realtime. Odwrotna kolejność zwykle kończy się zgadywaniem, czy problem siedzi w tagu, czy w danych.

1. Tag Assistant (Podgląd w GTM). Klikasz Podgląd, wklejasz adres sklepu i przechodzisz pełną ścieżkę: produkt, dodanie do koszyka, koszyk, dane, płatność, potwierdzenie. W panelu po lewej widzisz zdarzenia Data Layer w kolejności. Sprawdzasz dwie rzeczy: czy view_item faktycznie poprzedza add_to_cart oraz czy tag purchase jest wyzwalany przez Custom Event, a nie przez Page View. Ten drugi błąd jest najczęstszy — purchase odpala się wtedy przy każdym odświeżeniu potwierdzenia zamówienia.

2. DebugView. W GA4: Administracja, potem DebugView. Zdarzenia z sesji w trybie podglądu mają parametr debug_mode i pojawiają się w kilka sekund. Rozszerz kolumnę parametrów i sprawdź, czy przy purchase jest pełna tablica items: item_id, item_name, price, quantity. Jeśli items jest puste, GA4 policzy przychód, ale raporty produktowe zostaną zerowe. Zwróć uwagę na czas: zdarzenie wpadające po 30–60 sekundach to najczęściej efekt Consent Mode albo blokowania beaconów.

3. Realtime. purchase z wartością transakcji powinien pojawić się w ciągu 1–2 minut. Brak zdarzenia przy jednocześnie działającym DebugView oznacza, że ruch idzie do innego strumienia niż ten, który oglądasz.

Staging czy produkcja? Testowe zamówienie na strumieniu produkcyjnym zawyża przychód. Jeśli musisz testować na produkcji, użyj GTM Preview — debug_mode dotyczy tylko Twojej przeglądarki. Na stagingu ustaw osobny strumień GA4 i osobny kontener GTM, żeby dane testowe nie mieszały się z raportami sprzedaży. Traktuj to jako stały element configuration and implementation verification, nie jednorazową akcję.

NarzędzieCo potwierdzaCzasTypowa pułapka
Tag Assistant (Preview)Kolejność zdarzeń Data Layer i wyzwalaczyOd razuPodgląd nie łapie sesji przy Consent Mode bez zgody
DebugViewObecność parametrów item-scoped i debug_modeKilka sekundPuste items przy poprawnie policzonym przychodzie
RealtimeCzy purchase trafia do właściwego strumienia1–2 minutyZdarzenie leci do innego Measurement ID
Staging z osobnym strumieniemTesty bez zanieczyszczenia danych sprzedażowychStały setupWspólny kontener GTM dla obu środowisk

Weryfikacja wdrożenia w PrestaShop - moduły, hooki, kanał zamówienia

W PrestaShop prawie każdy problem z GA4 sprowadza się do trzech miejsc: hooków, kolejności modułów i strony potwierdzenia zamówienia.

Hooki. Moduł analityczny wstrzykuje kod w displayHeader (GTM lub gtag), a zdarzenie purchase w displayOrderConfirmation. W panelu Moduły, Pozycje filtruj po nazwie hooka i sprawdź, czy moduł GA4 tam jest oraz czy nie stoi za modułem, który zwraca false lub rzuca wyjątek — wtedy kolejne moduły w tym hooku nie wykonają się. W 1.7 i 8.x działa dodatkowo displayBeforeBodyClosingTag; jeśli kod siedzi tam, a wyzwalacz w GTM czeka na Data Layer z displayHeader, kolejność może się rozjechać.

Podwójne liczenie. Najczęstszy scenariusz: aktywny moduł GA4 i jednocześnie gtag wklejony w header.tpl motywu albo w polu z własnym kodem szablonu. Efekt to dwa purchase w DebugView i przychód wyższy o 100%. Drugie źródło duplikatów to odpalanie purchase przy zmianie statusu zamówienia (na przykład z „Płatność zaakceptowana” na „Wysłane”). Zostaw jeden kanał zamówienia: albo moduł, albo GTM, nigdy oba jednocześnie.

Strona potwierdzenia. Wejdź na order-confirmation (adres zawiera id_order, id_cart i key) i odśwież ją 2–3 razy. Jeśli po odświeżeniu leci kolejne purchase, brakuje deduplikacji po transaction_id i liczba transakcji w GA4 będzie zawyżona. W 1.6 kontroler przekazuje do hooka tablicę z id_order, w 1.7 i 8.x obiekt zamówienia i inny szablon (checkout/order-confirmation), więc snippet napisany pod 1.6 po aktualizacji po cichu przestaje działać. Szczegóły hooków opisuje dokumentacja dla deweloperów PrestaShop.

Wersja PrestaShopSkąd bierzesz dane zamówieniaNa co uważać
1.6Tablica z hooka displayOrderConfirmation (id_order), szablon order-confirmation.tplBrak obiektu zamówienia, dane ciągnięte dodatkowym zapytaniem
1.7Obiekt order przekazany do hooka, szablon checkout/order-confirmationKod z 1.6 bez modyfikacji nie odczyta danych
8.xJak w 1.7 plus displayBeforeBodyClosingTagDwa hooki z kodem analitycznym = ryzyko podwójnego purchase

Weryfikacja wdrożenia w WooCommerce - wtyczki, HPOS i checkout blokowy

W WooCommerce najwięcej błędów wynika z tego, że zdarzenie purchase odpala więcej niż jedno narzędzie.

Konflikt wtyczek. Trzy typowe źródła: wtyczka Google Analytics dla WooCommerce, GTM4WP oraz ręczny kod w functions.php lub child theme. Test: w DebugView policz zdarzenia purchase po jednym zamówieniu i porównaj transaction_id. Dwa zdarzenia z tym samym identyfikatorem to duplikat do wycięcia. Wybierz jedno źródło prawdy i wyłącz pozostałe — nie „ukrywaj” ich w GTM, bo dane i tak polecą do GA4.

HPOS. Po włączeniu High-Performance Order Storage (WooCommerce, Ustawienia, Zaawansowane, Funkcje) zamówienia nie są już wpisami w postmeta. Stare snippety czytające get_post_meta($order_id, '_order_total', true) zwracają puste wartości — w DebugView purchase jest, ale bez value i bez items. Prawidłowo: $order = wc_get_order($order_id), a dalej $order->get_total() i $order->get_items(). HPOS zmienia też moment dostępu do zamówienia: woocommerce_thankyou działa, ale woocommerce_checkout_order_processed może odpalić się przed zapisem metadanych. Punkt odniesienia znajdziesz w dokumentacji WooCommerce.

Checkout blokowy. Blok kasy działa na Store API i nie emituje zdarzeń jQuery (updated_checkout, checkout_error), na których opiera się część wtyczek. Efekt: begin_checkout nie odpala się wcale. Przetestuj oba warianty kasy — klasyczny shortcode [woocommerce_checkout] i blok — bo wyniki potrafią się różnić.

Cache. Wyklucz z cache koszyk, kasę, stronę potwierdzenia i konto (/cart, /checkout, /order-received, /my-account) oraz zapytanie wc-ajax=get_refreshed_fragments. W WP Rocket to pole „Never cache these URLs”, w LiteSpeed Cache sekcja wykluczeń. Karta produktu może być cache'owana, kasa nigdy.

Objaw w GA4Prawdopodobna przyczynaCo sprawdzić najpierw
Dwa purchase na jedno zamówienieWtyczka GA plus GTM4WP lub ręczny kod w motywietransaction_id w DebugView i listę aktywnych wtyczek
Purchase bez wartości i itemsSnippet czyta dane z postmeta po włączeniu HPOSZamianę get_post_meta na wc_get_order
Brak begin_checkoutKasa blokowa bez zdarzeń jQueryZdarzenia Store API lub kod po stronie serwera
Zdarzenia tylko u części użytkownikówCache stron koszyka i kasyListę wykluczeń we wtyczce cache

Pułapki, które psują dane - i jak je wykryć

Najczęstszy błąd to zdarzenie purchase odpalane dwa razy. Typowe źródło: tag wisi na stronie „zamówienie przyjęte”, do której klient może wrócić z maila albo ją odświeżyć. Drugie źródło: wtyczka sklepu wysyła transakcję z hooka woocommerce_thankyou, a równolegle robi to kontener GTM. W panelu sklepu jest jedno zamówienie, w GA4 dwa.

Test: wykonaj jedno prawdziwe zamówienie testowe i policz zdarzenia purchase w DebugView. Potem wejdź w raport Zarabianie > Zakupy e-commerce i porównaj liczbę transakcji z liczbą zamówień. GA4 deduplikuje zdarzenia po transaction_id, ale tylko wtedy, gdy to pole jest wysyłane i stałe. Jeśli identyfikator jest pusty albo generowany na nowo przy każdym odświeżeniu, duplikat wejdzie do raportów i zawyży przychód. Kolejność hooków zamówienia po stronie sklepu opisuje dokumentacja WooCommerce.

Drugi problem: VAT. Ustal jedną politykę i zapisz ją w notatce wdrożeniowej. Albo value to kwota brutto, albo netto plus podatek w polu tax w items. Zamówienie na 1 230 zł brutto to 1 000 zł netto. Jeśli GA4 liczy netto, a koszt kampanii porównujesz z kwotą brutto, ROAS wychodzi zaniżony i wyłączasz kampanię, która się zwraca. Odwrotny błąd przeszacowuje rentowność.

Trzeci: brak item_id lub item_name. Raporty sprzedaży pokazują wtedy (not set) i nie rozbijesz wyniku na produkty, kategorie ani marki. Naprawa jest tania: item_id = SKU, item_name = nazwa bez wariantu, do tego item_category.

Czwarty: Consent Mode v2. Po wejściu RODO licznik zdarzeń spada, bo tagi pracują w trybie bez plików cookie, a część danych jest modelowana. To nie awaria GA4, tylko skutek konfiguracji banera. Sprawdź sygnały analytics_storage, ad_user_data i ad_personalization w DebugView, osobno po akceptacji i po odrzuceniu zgody.

Piąty: server-side GTM i Measurement Protocol. To warstwa zgodności i odporności na blokery, nie zamiennik poprawnej konfiguracji. Źle wysłana wartość zostanie źle wysłana także z serwera, tylko trudniej ją złapać — zdarzeń z Measurement Protocol nie zobaczysz w DebugView tak jak zdarzeń z przeglądarki, do walidacji służy osobny endpoint walidacyjny. Zbierz te punkty w jeden przegląd — to właśnie elementy configuration and implementation verification.

ObjawPrawdopodobna przyczynaJak sprawdzić
2 transakcje przy 1 zamówieniupurchase na stronie podziękowania + drugi tagDebugView, licznik zdarzeń purchase
Przychód niższy o ok. 23% od paneluGA4 wysyła netto, porównujesz z bruttoporównanie value z fakturą
(not set) w raportach produktówbrak item_id / item_namepodgląd parametrów w DebugView
Spadek zdarzeń po wejściu RODOConsent Mode v2, brak zgodytest nowego użytkownika, sygnały consent

Weryfikacja po wdrożeniu: monitoring, dane referencyjne i audyt kwartalny

Weryfikacja po wdrożeniu to cotygodniowy nawyk, nie jednorazowa akcja. Ustal jeden dzień (np. poniedziałek rano) i porównaj przychód z ostatnich 7 dni w trzech miejscach: GA4, panel sklepu, Google Ads. Jeśli masz ERP lub system magazynowy, dołóż czwarte źródło — faktury i stan wysyłek są twardszym punktem odniesienia niż jakikolwiek panel marketingowy.

Zanim uznasz różnicę za błąd, wyklucz trzy rzeczy: strefę czasową usługi GA4 (musi zgadzać się ze strefą sklepu), walutę i zwroty. Zwroty zrealizowane poza sklepem, np. przelewem, nie pojawią się jako korekta w GA4, jeśli nie wysyłasz zdarzenia refund.

Ustaw progi alertowe. Odchylenie przychodu powyżej 5% tydzień do tygodnia to sygnał do sprawdzenia. Brak zdarzenia purchase przez 24 godziny to alert krytyczny — przy normalnym ruchu oznacza zerwany tag, nie brak sprzedaży. Nagły spadek wszystkich zdarzeń o ponad 20% dzień do dnia najczęściej oznacza zmianę w banerze zgód albo wdrożenie Consent Mode bez testu.

Audyt rób co kwartał i zawsze po większej zmianie. Lista do przejścia: nowy szablon checkoutu, aktualizacja wtyczek e-commerce, aktualizacja platformy, nowa wtyczka płatności, zmiana konfiguracji zgód, nowy rynek lub waluta. Po aktualizacji sprawdź też nadpisania szablonu zamówienia — dokumentacja dla deweloperów PrestaShop opisuje strukturę override'ów, które najczęściej odpowiadają za zdublowany tag.

Samodzielna weryfikacja wystarcza, gdy różnice są mniejsze niż 5%, umiesz wejść w DebugView i masz jedno źródło zamówień. Deweloper jest potrzebny, gdy różnica przekracza 5% i utrzymuje się dwa tygodnie, gdy zmienił się checkout, gdy sprzedajesz na kilku platformach albo gdy po każdej aktualizacji dane znów się rozjeżdżają.

WskaźnikPróg alertuPierwsza reakcja
Przychód GA4 vs panel sklepu>5% tydzień do tygodniasprawdź duplikaty, zwroty, strefę czasową, walutę
Zdarzenie purchasebrak przez 24 htestowe zamówienie w DebugView, podgląd kontenera
Liczba transakcji vs zamówienia>2% różnicyaudyt transaction_id i podwójnych tagów
Liczba wszystkich zdarzeńspadek >20% dzień do dniakontrola banera zgód i Consent Mode

Co dalej z konfiguracją - checklista przed kolejną kampanią

Trzy kroki na najbliższe 48 godzin. Pierwszy: porównaj przychód z GA4, panelu sklepu i Google Ads za ostatnie 7 dni, w jednej tabeli. Zapisz różnice procentowe dla każdej pary. Drugi: wykonaj jedno zamówienie testowe o znanej wartości i sprawdź w DebugView cztery rzeczy — czy purchase odpalił się raz, czy transaction_id jest wypełniony, czy value odpowiada przyjętej polityce VAT i czy item_id oraz item_name mają wartości. Trzeci: ustaw alert. Wystarczy zaplanowany raport porównawczy wysyłany mailem raz w tygodniu albo prosty arkusz z progiem 5%.

Jeśli któryś z tych kroków zajmuje Ci więcej niż godzinę, to też jest informacja — o stanie dokumentacji wdrożenia. Warto wtedy mieć zapisane, gdzie stoi kontener, kto ma do niego dostęp i jaka jest przyjęta polityka VAT w danych.

Kiedy zlecić audyt na zewnątrz? Gdy nie masz wewnętrznego dewelopera, który wejdzie w warstwę danych. Gdy sprzedajesz na kilku platformach i każde zamówienie ma inną drogę. Gdy po każdej aktualizacji sklepu liczby znów się rozjeżdżają. Gdy przed kampanią świąteczną nie masz czasu na testy. Gdy różnica w przychodzie utrzymuje się powyżej 5% przez dwa kolejne tygodnie i nie wiesz, od czego zacząć.

Jeśli chcesz, żeby ktoś wziął na siebie pilnowanie tych liczb — kontener, wtyczki, consent, aktualizacje — odezwij się do nas. Powiemy wprost, co da się posprzątać zdalnie, ile to zajmie i czego nie da się zagwarantować. Bez zobowiązania do stałej umowy: czasem wystarczy jednorazowy audyt i lista poprawek, którą zrealizuje Twój wykonawca.

Krok (48 h)Efekt
Porównanie GA4 / sklep / Ads za 7 dniznasz realną skalę rozjazdu
Zamówienie testowe w DebugViewwiesz, czy purchase, value i item_id są poprawne
Alert tygodniowy z progiem 5%błąd wychwycisz w dni, nie w kwartał

Najczęstsze błędy i jak je wykryć

Zdarzenie purchase w ogóle nie trafia do GA4 – najczęściej dlatego, że kod znajduje się na stronie potwierdzenia, do której klient nie dociera, albo wyzwalacz w GTM nie został opublikowany w wersji produkcyjnej.

Jak wykryć: Zrób jedną transakcję testową i sprawdź DebugView oraz raport Realtime w ciągu 1–2 minut od jej złożenia. Jeśli widzisz add_to_cart i begin_checkout, a nie ma purchase, problem jest po stronie strony potwierdzenia lub wyzwalacza.

Jak naprawić: Sprawdź, czy kontener GTM ma opublikowaną wersję, czy wyzwalacz purchase łapie dane z Data Layer na stronie potwierdzenia, i czy moduł GA4 nie jest wyłączony w konfiguracji sklepu.

Podwójne liczenie zamówień – purchase odpala się dwa razy, bo jednocześnie działa moduł GA4, snippet gtag.js w motywie albo wtyczka innej firmy.

Jak wykryć: Odśwież stronę potwierdzenia zamówienia i obserwuj Realtime – druga emisja zdarzenia objawia się skokiem liczby zdarzeń bez nowego zamówienia w panelu sklepu.

Jak naprawić: Zostaw jedno źródło pomiaru. Wyłącz snippet w motywie albo wyłącz zdarzenia e-commerce w module, ale nie oba naraz. Dodatkowo zabezpiecz purchase parametrem transaction_id, żeby GA4 odrzucało duplikaty.

Zaniżony przychód w GA4 względem panelu sklepu – brak kosztów dostawy, brak podatku, inna waluta albo zdarzenie odpala się tylko dla części metod płatności.

Jak wykryć: Porównaj przychód z GA4 z panelem sklepu w tym samym zakresie dat tygodniowo. Różnica powyżej 5% oznacza, że część transakcji nie jest mierzona albo ich wartość jest liczona inaczej.

Jak naprawić: Ustal jedną definicję przychodu (z VAT czy bez, z dostawą czy bez) i sprawdź, czy pole value oraz currency wysyłane w zdarzeniu purchase zgadzają się z tym, co pokazuje sklep.

Brak item_id i item_name w raportach – zdarzenia e-commerce są wysyłane, ale bez tablicy items[], więc w GA4 nie widać rozbicia na produkty.

Jak wykryć: W DebugView rozwiń zdarzenie purchase i sprawdź, czy widzisz pary parametrów z prefiksem item. Jeśli nie ma item_id, raporty „Wyświetlenia produktów” i „Reklamy” będą puste.

Jak naprawić: Uzupełnij mapowanie produktów na parametry item-scoped (item_id, item_name, price, quantity) i upewnij się, że identyfikator produktu jest zgodny z ID w sklepie i w feedzie.

Ruch płatny wpadający do kanału Direct zamiast Paid – brak parametrów UTM, przekierowania przez bramkę płatności czy linki w e-mailach bez oznaczeń.

Jak wykryć: Wejdź w raport „Pozyskiwanie ruchu” i sprawdź udział Direct w sesjach prowadzących do konwersji. Nietypowo wysoki Direct przy kampaniach w Google Ads to prawie zawsze zepsuty atrybucja albo brak UTM.

Jak naprawić: Uzupełnij UTM we wszystkich linkach kampanijnych, sprawdź przekierowania z bramek płatności i potwierdź, że w konfiguracji nie jest wyłączona opcja zbierania danych o kampaniach.

Błędna strefa czasowa i waluta w ustawieniach strumienia – dane wyglądają na wiarygodne, ale granice dni i przychód są przesunięte.

Jak wykryć: Administracja GA4 > Ustawienia strumienia danych. Jeśli strefa nie jest ustawiona na Europe/Warsaw, a waluta na PLN przy sprzedaży w złotych, porównanie z panelem sklepu nigdy się nie zepnie.

Jak naprawić: Popraw strefę czasową i walutę w ustawieniach strumienia. Pamiętaj, że zmiana strefy nie naprawia danych historycznych – po korekcie trzeba od nowa ustawić punkt odniesienia.

Lista kontrolna do odklikania

Podsumowanie

Weryfikacja konfiguracji i wdrożenia GA4 nie wymaga drogich narzędzi, ale wymaga konsekwencji: ustawień, testu i porównania liczb. Punktem wyjścia są trzy rzeczy: poprawna strefa czasowa i waluta, działające zdarzenie purchase oraz obecność parametrów item-scoped. Jeśli tygodniowa różnica między GA4 a panelem sklepu przekracza 5%, traktuj to jako błąd do naprawy, a nie naturalne niedoszacowanie. Kolejne sekcje artykułu pokazują dokładnie, jak przejść tę procedurę krok po kroku.

Najczęściej zadawane pytania

Jaka różnica między przychodem w GA4 a panelem sklepu jest akceptowalna?

Jako kryterium akceptacji przyjmij 2–5% różnicy tygodniowo. Tyle wynika z różnic w czasie przetwarzania, odrzuconych zamówień i zdarzeń zgubionych przez blokery skryptów. Powyżej 5% szukaj błędu w konfiguracji, a nie w samym narzędziu.

Jak często porównywać dane z GA4 z panelem sklepu?

Minimum raz w tygodniu, w tym samym zakresie dat i przy tej samej definicji przychodu. Dodatkowo po każdej aktualizacji motywu, wtyczki e-commerce, modułu płatności lub kontenera GTM – to momenty, w których najczęściej coś się rozjeżdża.

Czy testować na środowisku staging, czy na produkcji?

Staging jest lepszy do sprawdzania kolejności tagów, hooków i struktury Data Layer, bo możesz swobodnie testować zamówienia. Produkcja jest niezbędna do potwierdzenia, że kontener GTM jest opublikowany, filtry ruchu działają i purchase trafia do Realtime. Najbezpieczniej: konfiguracja na staging, finalny test na produkcji z jedną transakcją i oznaczonym ruchem.

Dlaczego GA4 pokazuje mniej zamówień niż sklep?

Najczęstsze przyczyny to blokery skryptów po stronie klienta, zdarzenie purchase na stronie, do której klient nie dotarł (np. płatność zakończona poza sklepem), brak obsługi części metod płatności oraz filtr ruchu wewnętrznego, który wycina prawdziwe zamówienia testowe. Sprawdź każdą z tych przyczyn osobno, zamiast zakładać, że to „normalne niedoszacowanie”.

Co zrobić, jeśli purchase nie pojawia się w DebugView?

Zacznij od Tag Assistant w trybie Preview i sprawdź, czy wyzwalacz purchase w ogóle się odpala. Jeśli tak, a zdarzenie nie trafia do DebugView, problem jest w konfiguracji tagu lub identyfikatora pomiaru. Jeśli nie, szukaj przyczyny w kodzie strony potwierdzenia, kolejności hooków albo cachu. W PrestaShop pomocna jest dokumentacja deweloperska: devdocs.prestashop-project.org.

Czym różni się weryfikacja w PrestaShop od WooCommerce?

W PrestaShop kluczowe są hooki displayHeader i displayOrderConfirmation oraz kolejność modułów – tam najczęściej ginie wartość transakcji. W WooCommerce problemy wynikają głównie z konfliktów między wtyczkami, kolejności odpalania purchase przy HPOS i checkoutu blokowym. Dokumentacja WooCommerce opisuje te mechanizmy: woocommerce.com/documentation/woocommerce.

Czy warto włączyć eksport danych do BigQuery?

Tak, jeśli planujesz pracować na danych dłużej niż okres retencji w interfejsie albo łączyć GA4 z danymi z zamówień i ERP. Eksport nie naprawi jednak błędów wdrożenia – brak item_id czy zdublowany purchase będą równie widoczne w BigQuery. Najpierw domknij konfigurację, potem włącz eksport.

Jeśli po przejściu checklisty nadal nie wiesz, gdzie giną dane z zamówień, opisz nam swój przypadek – sprawdzimy konfigurację i wdrożenie i powiemy wprost, co wymaga poprawy.

Źródła i materiały