
Pomiar konwersji w e-commerce: dlaczego dane się nie zgadzają i jak to naprawić
GA4 pokazuje mniej zamówień niż sklep, Meta liczy więcej niż Google Ads. Wyjaśniamy, skąd biorą się różnice, która liczba jest prawdziwa i jak naprawić pomiar.
- 20-40%Typowa luka GA4 vs panel sklepu
- 60-70%Odmów zgód na cookies w Europie
- 95%+Pokrycie zamówień po naprawie pomiaru
- do 7 dniTyle trwa wdrożenie
Spis treści
Sierpień. W panelu sklepu 1 043 zamówienia. W GA4 812. Meta Ads mówi, że dowiozła 640 zakupów, Google Ads liczy 410. Suma z paneli reklamowych to 1 862 zamówienia, czyli o 819 więcej, niż faktycznie sprzedałeś. Żaden z tych systemów nie kłamie. Każdy liczy coś innego, w innym oknie czasowym i na innej próbce użytkowników.
Problem zaczyna się wtedy, gdy na podstawie tych liczb podejmujesz decyzje budżetowe. Wyłączasz kampanię, która “nie dowozi”, bo GA4 nie widzi jej konwersji. Skalujesz kampanię z ROAS 8, który w rzeczywistości wynosi 3. Ten tekst wyjaśnia, skąd biorą się różnice, jak sprawdzić, gdzie dokładnie gubisz dane, i co trzeba zrobić, żeby liczby zaczęły się spinać.
Pięciominutowa diagnoza: co dokładnie się nie zgadza
Zanim zaczniesz cokolwiek naprawiać, ustal, z którym problemem masz do czynienia. To trzy różne awarie, które wymagają trzech różnych działań.
| Objaw | Co to znaczy | Gdzie szukać przyczyny |
|---|---|---|
| GA4 ma mniej zamówień niż sklep | Gubisz zdarzenia po drodze | Zgody, blokery, checkout, redirect płatności, zamówienia spoza witryny |
| GA4 ma więcej zamówień niż sklep | Liczysz jedno zamówienie kilka razy | Podwójny kontener, odświeżenie strony podziękowania, SPA, brak transaction_id |
| Liczby zamówień się zgadzają, ale przychód nie | Wysyłasz złą wartość | VAT, wysyłka, rabaty, waluta, zwroty |
| Panele reklamowe sumują się do więcej niż sprzedaż | To normalne, każdy kanał przypisuje sobie tę samą transakcję | Modele i okna atrybucji, view-through |
Praktyczny próg, którego używamy w audytach: różnica do 3% między GA4 a panelem sklepu to szum, z którym da się żyć. 3 do 10% to konfiguracja do poprawy. Powyżej 10% to błąd wdrożenia, a powyżej 25% coś jest po prostu zepsute i nie wolno na tych danych optymalizować kampanii.
Dlaczego GA4 pokazuje mniej zamówień niż panel sklepu
Kolejność jest tu ważna, bo przyczyny mają bardzo różną wagę. Wypisujemy je od tych, które w polskich sklepach zabierają najwięcej danych.
1. Zgody na cookies. Jeśli użytkownik nie kliknie “akceptuję”, a Ty nie masz wdrożonego Consent Mode v2, tag GA4 w ogóle się nie odpala. Nie ma zdarzenia, nie ma zamówienia w raporcie. To zwykle największa dziura, bo dotyczy każdego kanału, nie tylko płatnych.
2. Blokery reklam i przeglądarki dbające o prywatność. uBlock Origin, AdGuard, Brave, Firefox z ETP. Zależnie od branży blokuje się od kilku do kilkudziesięciu procent ruchu. W sklepach z asortymentem technologicznym potrafi to być ponad 20%, w branży beauty zwykle poniżej 10%. Blokowany jest zarówno gtm.js, jak i endpointy zbierające dane.
3. Powrót z bramki płatniczej. Użytkownik płaci przez BLIK w aplikacji banku, a potem zamyka kartę i nie wraca na stronę podziękowania. Zamówienie w sklepie jest, zdarzenia purchase nie ma, bo nikt nie załadował strony, która je wysyła. Do tego dochodzi utrata sesji przy przekierowaniu na domenę operatora płatności, jeśli nie masz skonfigurowanego pomiaru między domenami. To typowo 5 do 15% transakcji i najczęściej niedoceniana przyczyna.
4. Checkout Shopify. Po przejściu na Checkout Extensibility Google Tag Manager nie ma dostępu do kroku zakupowego. Kod trzeba wpiąć przez Zdarzenia klienta (Customer Events), a podgląd GTM tam nie działa. Przy pobieżnym wdrożeniu purchase odpala się tylko dla części zamówień. Opisaliśmy to szerzej we wpisie o Checkout Extensibility i problemach z raportowaniem konwersji.
5. Zamówienia, których w przeglądarce nigdy nie było. Telefon, e-mail, panel administratora, marketplace, odnowienia subskrypcji. GA4 nie ma jak ich zobaczyć, bo nie ma sesji użytkownika. W sklepach subskrypcyjnych to potrafi być większość przychodu i wtedy porównywanie GA4 do panelu sklepu bez tego filtra nie ma sensu.
6. Techniczne drobiazgi, które sumują się do kilku procent. Błąd JavaScript na stronie podziękowania blokujący dalsze skrypty, użytkownik zamykający kartę zanim tag zdąży wysłać dane, wewnętrzne filtry ruchu w GA4, inna strefa czasowa usługi GA4 niż sklepu (przy porównaniu dzień do dnia potrafi to przesunąć 1 do 3% zamówień na sąsiednią dobę), zwroty i anulacje odejmowane w sklepie, a nieodejmowane w GA4.
Ważne: w interfejsie GA4 zobaczysz mniej niż w eksporcie do BigQuery, bo raporty standardowe podlegają progom prywatności i próbkowaniu. U jednego z naszych klientów e-commerce pokrycie zamówień wynosiło 95,8% w eksporcie BigQuery i 91,4% w tym samym okresie w interfejsie GA4. To ta sama implementacja i te same dane, różni się tylko sposób raportowania.
Dlaczego GA4 pokazuje inne przychody niż Shopify
Tu liczba zamówień może się zgadzać co do sztuki, a przychód i tak będzie inny. Powodów jest zwykle kilka naraz.
- VAT. Sklep raportuje netto, tag wysyła brutto (albo odwrotnie). Przy stawce 23% to od razu rozjazd rzędu 18,7% w dół albo 23% w górę. Uwaga na sklepy z mieszanymi stawkami, na przykład suplementy z 8% obok kosmetyków z 23%.
- Wysyłka. Standard Google Analytics mówi, że
valuew zdarzeniupurchaseto wartość zamówienia razem z wysyłką i podatkiem. Panel sklepu często pokazuje “sprzedaż produktów” bez wysyłki. Różnica rośnie przy niskim koszyku. - Rabaty. Rabaty naliczane na poziomie zamówienia i rabaty na poziomie pozycji to dwa różne pola. Jeżeli tag czyta cenę katalogową pozycji, a nie cenę po rabacie, przychód w GA4 będzie zawyżony dokładnie o wartość kodów rabatowych.
- Waluta. Sklep wielowalutowy bez przekazanego pola
currencypowoduje, że GA4 traktuje wszystko jako walutę domyślną usługi. Sprzedaż za 100 EUR ląduje w raporcie jako 100 PLN. - Zwroty. Jeśli nie wysyłasz zdarzenia
refund, GA4 nigdy nie odejmie zwróconych zamówień, a panel sklepu odejmie.
Naprawa zaczyna się od decyzji biznesowej, nie technicznej: ustalasz jedną definicję przychodu (na przykład netto, po rabatach, bez wysyłki), zapisujesz ją i wymuszasz w każdym systemie. Dopiero potem poprawia się dataLayer.
Dlaczego Meta Ads raportuje więcej konwersji niż Google Analytics
To pytanie wraca w co drugim audycie i prawie zawsze odpowiedź brzmi tak samo: oba systemy mierzą co innego.
| Element | Meta Ads | GA4 |
|---|---|---|
| Model | ostatnie kliknięcie w obrębie Meta | ostatnie kliknięcie niebezpośrednie (data-driven w konwersjach) |
| Okno | domyślnie 7 dni od kliknięcia, 1 dzień od wyświetlenia | 90 dni na źródło sesji |
| Wyświetlenia (view-through) | liczone | nieliczone |
| Data przypisania | data kliknięcia w reklamę | data transakcji |
| Identyfikacja | konto użytkownika Meta, cross-device | ciasteczko i user_id, słabiej cross-device |
| Zasięg pomiaru | tylko ruch z Meta | cały ruch |
Konsekwencje są konkretne. Meta zaliczy sobie zakup osoby, która obejrzała reklamę na Instagramie, nic nie kliknęła, a dzień później weszła z wyszukiwarki i kupiła. GA4 przypisze tę sprzedaż do Google. Meta pokaże konwersję w dniu kliknięcia, więc kampania z 20 sierpnia “dostanie” sprzedaż z 26 sierpnia i raport dzienny nigdy nie zgodzi się ze sklepem. Do tego dochodzi Conversions API: jeżeli piksel i CAPI wysyłają to samo zdarzenie bez wspólnego event_id, Meta policzy je dwa razy.
Zasada praktyczna: nie porównuj konwersji Meta z konwersjami GA4, bo to dwie różne definicje. Porównuj sumę wszystkich kanałów do rzeczywistej sprzedaży w sklepie i patrz na wskaźnik blended, czyli przychód całkowity podzielony przez całkowity wydatek reklamowy. Rozwinięcie metryk znajdziesz w słowniczku ROAS, CPA, CAC i LTV.
Dlaczego w Google Ads brakuje konwersji
Google Ads też ma własną logikę i własne pułapki.
- Data kliknięcia, nie data konwersji. Google domyślnie pokazuje konwersje w dniu kliknięcia. Jeśli patrzysz na wczoraj, brakuje Ci wszystkich transakcji, które dopiero się wydarzą. Przy dłuższym procesie zakupowym raport “dojrzewa” jeszcze przez tydzień lub dwa.
- Okno konwersji. Domyślnie 30 dni, można ustawić do 90. Krótsze okno to mniej konwersji w raporcie, ale też szybsza informacja zwrotna dla algorytmu.
- Brak gclid. Bez automatycznego tagowania albo przy przekierowaniu, które gubi parametry z adresu, Google nie ma jak dopiąć kliknięcia do transakcji. Klasyk: przekierowanie z www na wersję bez www, które ucina query string.
- Ustawienie “każda” kontra “jedna”. Dla zakupu powinno być “jedna” konwersja na kliknięcie. Przy “każdej” jedno zamówienie potrafi się rozmnożyć.
- Kilka akcji konwersji liczonych naraz. Jeżeli w kolumnie “Konwersje” masz jednocześnie zakup, dodanie do koszyka i zaangażowanie użytkownika, ROAS w tym raporcie nie znaczy nic. Do rozliczenia powinien wchodzić wyłącznie zakup.
- Konwersje modelowane. Przy Consent Mode część konwersji Google modeluje statystycznie. To liczby prawdziwe w sensie estymacji, ale nie znajdziesz ich pojedynczo w bazie sklepu.
- Import z GA4 zamiast pomiaru własnego. Konwersje importowane mają inne okno, inne modelowanie i docierają z opóźnieniem. Do licytacji lepiej działa własna akcja konwersji, najlepiej wysyłana serwerowo.
Która liczba konwersji jest prawdziwa
Żadna z tych z paneli reklamowych. Prawdziwa jest liczba zamówień w systemie transakcyjnym: w sklepie, w ERP, w bazie. Panele nie mierzą sprzedaży, tylko swój udział w sprzedaży, i robią to według własnych reguł.
Dlatego przy pracy z klientami rozdzielamy trzy poziomy i nigdy ich nie mieszamy:
| Poziom | Źródło prawdy | Do czego służy |
|---|---|---|
| Ile sprzedaliśmy | sklep, ERP, faktury | rozliczenie biznesu, marża, prognozy |
| Jak alokować budżet | przychód z bazy podzielony przez wydatek (blended, MER, CAC) | decyzje o skalowaniu i cięciu |
| Co optymalizować w kampanii | dane w Google Ads i Meta Ads | licytacja, kreacje, grupy odbiorców |
Systemy reklamowe mają dostawać jak najwięcej i jak najdokładniejsze sygnały, bo to poprawia algorytmy. Ale ich raport nigdy nie będzie raportem finansowym i nie ma sensu tego wymuszać.
Zdublowane transakcje: kiedy jedno zamówienie liczy się dwa razy
Jeśli GA4 ma więcej zamówień niż sklep, przyczyna prawie zawsze jest na tej liście:
- Dwa kontenery GTM albo GTM plus gtag wpięte równolegle, na przykład z motywu i z aplikacji.
- Odświeżenie strony podziękowania. Użytkownik wciska F5 albo wraca do zakładki,
purchaseleci ponownie. GA4 nie deduplikujetransaction_idautomatycznie w raportach. - Aplikacja sklepowa dokładająca własny piksel obok Twojego. Częste w Shopify (Google & YouTube, aplikacje marketingowe) i w WooCommerce (wtyczki typu “Facebook for WooCommerce” obok tagów w GTM).
- SPA i checkout jednostronicowy, gdzie zdarzenie odpala się przy każdym przerenderowaniu widoku.
- Reguła uruchamiania oparta o fragment adresu, na przykład “URL zawiera thank-you”, która łapie także powroty do zamówienia z maila lub z historii.
- Piksel i Conversions API bez wspólnego
event_id. Meta ma wtedy dwa niezależne zdarzenia i liczy oba. - Brak
transaction_idw ogóle. Bez identyfikatora żaden system nie ma jak stwierdzić, że to ta sama transakcja.
Naprawa jest prosta koncepcyjnie: jedno zamówienie, jeden identyfikator, jedno wysłanie. Technicznie oznacza to zawsze wysyłany transaction_id równy numerowi zamówienia, blokadę powtórnego wysłania (znacznik w localStorage albo w ciasteczku po stronie serwera), wspólny event_id dla pary piksel plus CAPI i regułę uruchamiania, która odpala się raz na transakcję, a nie raz na wyświetlenie strony.
Piksel nie rejestruje zakupów, purchase nie wysyła się w GTM
Diagnozę robi się od dołu, warstwa po warstwie. Na którym punkcie się zatrzymasz, tam jest awaria.
- Czy zdarzenie w ogóle jest w
dataLayer? WpiszdataLayerw konsoli przeglądarki na stronie podziękowania i poszukaj obiektu zevent: "purchase". Jeśli go nie ma, problem jest po stronie sklepu, nie GTM. - Czy
dataLayer.pushnie leci przed kontenerem? Jeżeli sklep wysyła zdarzenie zanim GTM się załaduje, reguła uruchamiania go nie zobaczy. Kolejność ma znaczenie. - Czy reguła łapie zdarzenie? Tryb podglądu GTM, zakładka Tags, sprawdzasz czy tag jest w “Tags Fired”.
- Czy zmienne mają wartości? Najczęstszy błąd to
valuejako tekst z przecinkiem dziesiętnym (“129,00”) zamiast liczby (129.00) i brakcurrency. - Czy tag nie jest blokowany przez zgody? W trybie podglądu GTM zakładka Consent pokazuje, czy tag został wstrzymany przez brak zgody.
- Czy żądanie faktycznie wychodzi? W karcie Network filtr
collectdla GA4,/tr?dla piksela Meta,google.com/pageaddla Google Ads. Brak żądania przy odpalonym tagu to najczęściej bloker w przeglądarce. - Czy dane docierają? GA4 DebugView, Meta Events Manager i zakładka Test Events, w Google Ads diagnostyka akcji konwersji.
Jeśli wszystko działa u Ciebie, a danych nadal brakuje, znaczy że gubisz je u części użytkowników. Wtedy przechodzi się na pomiar serwerowy, bo w przeglądarce nie ma już czego naprawiać.
Ile danych naprawdę tracisz: zgody, blokery, iOS i ITP
Trzy niezależne straty, które się mnożą, a nie dodają.
Zgody. W Europie odsetek odmów potrafi sięgać 60 do 70%, a w polskich sklepach częściej widzimy 20 do 40%, zależnie od tego, jak zaprojektowany jest baner. Bez Consent Mode v2 każda odmowa to zdarzenie, które nie powstaje. Z Consent Mode v2 w wersji Advanced dostajesz przynajmniej sygnały bez ciasteczek i modelowanie konwersji.
Blokery. Od kilku do ponad 20% ruchu, zależnie od branży i grupy docelowej. Blokada dotyczy skryptu i domeny zbierającej dane, więc traci się całe sesje, nie pojedyncze zdarzenia.
ITP i ograniczenia przeglądarek. Safari kasuje ciasteczka ustawiane w JavaScript po 7 dniach, a w niektórych scenariuszach po 24 godzinach. Skutek: użytkownik, który wrócił po dwóch tygodniach, jest nowym użytkownikiem, atrybucja się rozjeżdża, listy remarketingowe topnieją, a Twoje okno konwersji jest w praktyce krótsze niż to ustawione w panelu.
Te straty nakładają się na siebie. Sklep z 30% odmów zgód, 15% blokerów i dużym udziałem ruchu z iOS realnie widzi około połowy tego, co się dzieje. Nie da się tego naprawić jednym przełącznikiem, ale każdą z warstw da się odzyskać częściowo.
Jak sprawdzić, czy tracking działa poprawnie
Trzy kroki, każdy do zrobienia bez programisty.
Krok 1: jedno zamówienie testowe. Wejdź z reklamy, dodaj produkt, zapłać prawdziwą metodą płatności i przejdź do strony podziękowania. Potem sprawdź, czy to zamówienie widać w GA4 (DebugView albo raport w czasie rzeczywistym), w Meta (zdarzenia testowe) i w Google Ads (diagnostyka akcji konwersji). Zwróć uwagę, czy zakup pojawia się raz, a nie dwa razy, i czy ma poprawną wartość oraz walutę.
Krok 2: porównanie pełnego miesiąca. Weź liczbę zamówień z panelu sklepu i liczbę transakcji z GA4 za ten sam miesiąc. Od liczby ze sklepu odejmij zamówienia, które nigdy nie przeszły przez przeglądarkę: telefoniczne, z panelu administratora, odnowienia subskrypcji. Podziel jedno przez drugie i masz swoje pokrycie w procentach. Przychód porównuj w jednej definicji: netto do netto, z wysyłką albo bez, zawsze po rabatach.
Krok 3: dwa wskaźniki jakości. Sprawdź Event Match Quality w Meta (skala 0 do 10) i status Enhanced Conversions w Google Ads. To najszybszy sygnał, jak dobre dane dostają dziś Twoje kampanie. Przy okazji zobacz w GA4 udział źródła “(direct) / (none)”. Jeśli przekracza 20 do 25% przychodu, prawdopodobnie gubisz parametry na przekierowaniach albo na bramce płatności.
Jeżeli po tych trzech krokach wychodzi różnica większa niż 10%, dalej nie ma sensu zgadywać. Trzeba zejść warstwa po warstwie i sprawdzić, gdzie znika sygnał.
Jak naprawia się pomiar: sześć warstw
Kolejność nie jest przypadkowa. Wdrażanie warstwy piątej bez pierwszej to najdroższy sposób na zebranie tych samych złych danych, tylko szybciej.
Warstwa 1. Definicje. Co liczymy jako konwersję, jaki przychód raportujemy, jak traktujemy zwroty i subskrypcje. Jedna kartka, do której odwołują się wszyscy.
Warstwa 2. dataLayer i zdarzenia. Pełny schemat e-commerce: view_item, add_to_cart, begin_checkout, add_payment_info, purchase, z transaction_id, value, currency, items i identyfikatorami zgodnymi z feedem produktowym. To fundament, na którym stoi wszystko inne, łącznie z remarketingiem dynamicznym.
Warstwa 3. Zgody. CMP plus Consent Mode v2 w wersji Advanced, poprawnie przekazujący ad_storage, analytics_storage, ad_user_data i ad_personalization. Szczegóły opisaliśmy w poradniku Consent Mode v2.
Warstwa 4. Warstwa serwerowa. Server side GTM na własnej subdomenie, ciasteczka first party ustawiane przez serwer, zdarzenia wysyłane z serwera do GA4, Google Ads, Meta i TikToka. To tu odzyskuje się większość strat z blokerów i z ITP.
Warstwa 5. Wzbogacanie danych. Enhanced Conversions w Google Ads, Conversions API w Meta z deduplikacją, dane z backendu sklepu (potwierdzone zamówienie, marża, status subskrypcji, wartość klienta), konwersje offline.
Warstwa 6. Weryfikacja i monitoring. Cykliczne porównanie sklep kontra GA4 kontra panele, alert gdy pokrycie spada poniżej progu, raport, który ktoś naprawdę czyta. Bez tego pomiar psuje się po cichu przy pierwszej aktualizacji szablonu sklepu.
Server side tracking: co realnie daje, a czego nie naprawi
Server side, czyli GTM w wersji serwerowej, przenosi zbieranie i wysyłanie danych z przeglądarki użytkownika na Twój serwer w domenie first party.
Co realnie zyskujesz:
- Więcej zdarzeń dociera do systemów reklamowych, bo część blokad przeglądarkowych przestaje działać. W praktyce mówimy o odzysku rzędu kilkunastu do trzydziestu procent zdarzeń, mocno zależnie od branży.
- Dłużej żyjące ciasteczka first party, ustawiane nagłówkiem HTTP zamiast JavaScriptem, więc ITP ich nie ucina po 7 dniach.
- Lepsze dane w Google Ads i Meta, bo z serwera możesz dołożyć dane, których przeglądarka nie ma: potwierdzenie zamówienia z backendu, hashowany e-mail, adres IP i user agent w spójnej formie.
- Szybsza strona, bo mniej skryptów po stronie klienta. To realny wpływ na Core Web Vitals i na koszt kliknięcia.
- Kontrola nad tym, co wychodzi. Możesz odfiltrować dane, których nie chcesz wysyłać do zewnętrznych platform.
Czego server side nie zrobi, mimo tego, co obiecują niektóre prezentacje sprzedażowe:
- Nie omija zgody. Jeśli użytkownik odmówił, dalej nie wolno wysyłać jego danych i dobrze skonfigurowany serwer tego nie zrobi.
- Nie naprawi braku
dataLayerani błędnej wartości zamówienia. Śmieci na wejściu to śmieci na wyjściu, tylko szybciej. - Nie wyprodukuje konwersji, których nie było. Poprawia pokrycie i jakość dopasowania, nie sprzedaż.
- Nie zabezpiecza przed zepsuciem checkoutu przy aktualizacji sklepu. To wciąż wymaga monitoringu.
Więcej o samej technologii i o tym, jak wygląda konfiguracja, opisaliśmy we wpisie Server Side Tracking.
Stape czy własny serwer sGTM
Pytanie wraca zawsze i zawsze ma tę samą odpowiedź: to zależy od skali i od tego, kto ma to utrzymywać.
| Kryterium | Stape (lub podobny hosting) | Własny serwer (Cloud Run, GCP, AWS) |
|---|---|---|
| Koszt startowy | od około 20 USD miesięcznie | zwykle wyższy przy niskim ruchu, tańszy przy dużym |
| Czas wdrożenia | godziny | dni, plus konfiguracja infrastruktury |
| Utrzymanie | po stronie dostawcy | po Twojej stronie (skalowanie, aktualizacje, monitoring) |
| Dodatki | cookie keeper, custom loader, własna domena ładowania, nagłówki geo | wszystko trzeba zbudować samodzielnie |
| Kontrola i zgodność | dodatkowy podmiot przetwarzający, serwery do wyboru w UE | pełna kontrola, dane w Twojej infrastrukturze |
| Kiedy wybrać | zdecydowana większość sklepów | bardzo duży ruch, wymogi bezpieczeństwa, własny zespół DevOps |
W praktyce dla sklepu robiącego od kilkuset do kilkudziesięciu tysięcy zamówień miesięcznie hosting typu Stape jest tańszy i szybszy w utrzymaniu niż własna infrastruktura. Własny serwer ma sens, kiedy koszt hostingu zaczyna przewyższać koszt utrzymania albo gdy dział bezpieczeństwa nie zgadza się na kolejnego podwykonawcę.
Meta CAPI, Enhanced Conversions i jakość dopasowania zdarzeń
To warstwa, która najszybciej zwraca się w wynikach kampanii, bo wpływa bezpośrednio na to, jak dobrze algorytm rozumie, kto kupił.
Conversions API w Meta. Zdarzenia idą z serwera równolegle do piksela. Warunek poprawnej implementacji to deduplikacja: piksel i CAPI muszą wysyłać ten sam event_name i ten sam event_id, wtedy Meta łączy je w jedno zdarzenie (okno deduplikacji wynosi 48 godzin). Bez tego konwersje w panelu podwoją się i ROAS przestanie mieć sens.
Event Match Quality. Ocena w skali od 0 do 10 mówi, jak dobrze Meta potrafi dopasować Twoje zdarzenie do konkretnego użytkownika. Sam piksel daje zwykle 4 do 6. Po dołożeniu danych z backendu realne jest 7 do 9. Co podnosi wynik:
- hashowany e-mail (
em) i numer telefonu (ph) w formacie międzynarodowym bez plusa, - imię, nazwisko, miasto, kod pocztowy i kraj z danych zamówienia,
external_id, czyli Twój własny identyfikator klienta,fbpifbcz ciasteczek, przy czymfbcwymaga, żeby parametrfbclidprzetrwał wszystkie przekierowania,- adres IP i user agent przekazywane z serwera.
Najczęstsze błędy: wysyłanie danych bez hashowania SHA-256, hash pustego ciągu znaków (wtedy wszyscy użytkownicy mają ten sam identyfikator), brak normalizacji (spacje, wielkie litery, telefon z zerem wiodącym) i gubienie fbclid na przekierowaniu z domeny z www.
Enhanced Conversions w Google Ads. Ta sama idea po stronie Google. Do konwersji dokładasz hashowany e-mail, telefon i dane adresowe z checkoutu, dzięki czemu Google dopasowuje transakcję do zalogowanego użytkownika nawet wtedy, gdy ciasteczko już nie istnieje. Typowy efekt to kilka do kilkunastu procent odzyskanych konwersji, przy czym najwięcej zyskują konta z dużym udziałem ruchu z iOS. Warunek formalny: odpowiednie zapisy w polityce prywatności i dane pochodzące z procesu zakupowego, a nie z przypadkowego formularza.
Dlaczego konwersje “spadły”: consent mode i zmiany atrybucji
Zanim ogłosisz spadek sprzedaży, sprawdź, czy nie zmieniło się to, co mierzysz.
- Wdrożenie banera zgód. Po podpięciu CMP liczby w GA4 zawsze spadają, bo część użytkowników odmawia. To nie jest spadek sprzedaży, tylko spadek widoczności. Consent Mode v2 w wersji Advanced pozwala odzyskać część danych przez modelowanie.
- Zmiana modelu atrybucji. Przejście na model oparty na danych, zmiana okna konwersji, wyłączenie konwersji wspomaganych. Każda z tych zmian przesuwa konwersje między kanałami, nie zmieniając ani złotówki w kasie.
- Zmiana okna po stronie Meta. Domyślne 7 dni od kliknięcia i 1 dzień od wyświetlenia to znacznie mniej niż dawne 28 dni. Porównania rok do roku bez tego kontekstu wprowadzają w błąd.
- Aktualizacja sklepu albo motywu. Najczęstsza cicha awaria pomiaru. Ktoś podmienił szablon strony podziękowania i tag przestał się odpalać.
Reguła: przy każdym raportowanym spadku najpierw sprawdzasz sprzedaż w sklepie. Jeśli w sklepie jest w porządku, masz problem z pomiarem, a nie z marketingiem.
Ile to kosztuje i ile trwa
Zakres jest różny dla sklepu na WooCommerce z 300 zamówieniami miesięcznie i dla Shopify Plus z subskrypcjami, ale punkty odniesienia wyglądają tak:
- Audyt pomiaru: przegląd wszystkich warstw, lista błędów z priorytetami i wyliczenie, ile danych realnie tracisz. Efektem jest dokument, z którym możesz pójść do dowolnego wykonawcy, także innego niż my.
- Podstawowe wdrożenie server side (GA4, Google Ads, Meta) to w SSAK Agency koszt rzędu 2 500 zł, plus około 20 USD miesięcznie za serwer.
- Pełny stack (CMP i Consent Mode v2, sGTM, CAPI z deduplikacją, Enhanced Conversions, eksport i weryfikacja w BigQuery) wyceniamy indywidualnie, bo różnice w platformach są duże.
- Czas: zwykle do tygodnia od startu do działającego pomiaru, z czego pierwsze dni to audyt i uporządkowanie
dataLayer.
Szczegóły zakresu opisaliśmy na stronie wdrożeń marketingowych i audytu kont reklamowych.
Jak wygląda audyt pomiaru w SSAK Agency
Pracujemy w czterech krokach i po każdym wiesz dokładnie, na czym stoisz.
- Pomiar strat. Porównujemy zamówienia i przychód w sklepie z GA4, Google Ads i Meta za pełny miesiąc. Wynikiem jest jedna liczba: ile procent transakcji gubisz i gdzie.
- Lista błędów z priorytetami. Każdy błąd ma opis, wpływ na dane i szacowany koszt naprawy. Bez listy stu drobiazgów, na której nie widać, co jest istotne.
- Wdrożenie.
dataLayer, zgody, warstwa serwerowa, CAPI i Enhanced Conversions, w tej kolejności. Testujemy na zamówieniach rzeczywistych, nie tylko w trybie podglądu. - Weryfikacja i raport. Po wdrożeniu pokazujemy to samo porównanie co na starcie. Jeżeli pokrycie nie wzrosło, nie ma o czym rozmawiać.
Nasze zaplecze to nie tylko GTM. Budujemy infrastrukturę danych w BigQuery, własne modele atrybucji i raporty, które pokazują wynik na poziomie zamówienia, a nie na poziomie panelu reklamowego. Prowadzimy też kampanie dla e-commerce, więc naprawiony pomiar od razu wchodzi do optymalizacji, zamiast zostać w prezentacji.
Słowniczek pojęć
GA4 (Google Analytics 4) to system analityczny Google oparty na zdarzeniach, w którym każda interakcja, także zakup, jest osobnym zdarzeniem z parametrami.
GTM (Google Tag Manager) to menedżer tagów, czyli warstwa pośrednia, w której konfigurujesz, jakie skrypty i kiedy mają się uruchamiać, bez ingerencji w kod sklepu.
sGTM (server side GTM) to ta sama logika, ale uruchamiana na serwerze w Twojej domenie. Przeglądarka wysyła dane do Ciebie, a Ty decydujesz, co i gdzie leci dalej.
Stape to najpopularniejszy hosting dla serwerowego GTM, z gotowymi dodatkami takimi jak cookie keeper czy własna domena ładowania kontenera.
dataLayer to obiekt JavaScript na stronie, przez który sklep przekazuje do GTM informacje o zdarzeniu: identyfikator zamówienia, wartość, walutę i listę produktów.
purchase event to zdarzenie zakupu w standardzie e-commerce Google, z polami transaction_id, value, currency i items. Bez niego nie ma raportowania sprzedaży ani remarketingu dynamicznego.
Meta CAPI (Conversions API) to serwerowy kanał przesyłania zdarzeń do Meta, działający równolegle do piksela i odporny na blokady w przeglądarce.
Deduplikacja zdarzeń to mechanizm, dzięki któremu piksel i CAPI wysyłające to samo zdarzenie liczą się jako jedno. Kluczem jest wspólny event_id.
Event Match Quality to ocena Meta w skali 0 do 10, mówiąca, jak dobrze przesłane dane pozwalają dopasować zdarzenie do konkretnego użytkownika.
Enhanced Conversions to rozszerzenie konwersji Google Ads o hashowane dane klienta z checkoutu, które pozwala dopasować transakcję nawet bez działającego ciasteczka.
Measurement Protocol to interfejs pozwalający wysyłać zdarzenia do GA4 bezpośrednio z serwera, na przykład dla zamówień telefonicznych, zwrotów albo odnowień subskrypcji.
Consent Mode to mechanizm Google łączący baner zgód z tagami. W wersji v2 dochodzą parametry ad_user_data i ad_personalization, bez których implementacja nie jest zgodna z wymogami.
ITP (Intelligent Tracking Prevention) to zestaw ograniczeń Safari, który między innymi skraca życie ciasteczek ustawianych w JavaScripcie do 7 dni, a w części przypadków do 24 godzin.
First party tracking to pomiar oparty o Twoją własną domenę i ciasteczka ustawiane przez Twój serwer, w odróżnieniu od skryptów i domen zewnętrznych.
Cross-domain tracking to zachowanie ciągłości sesji, gdy użytkownik przechodzi między Twoimi domenami albo na domenę operatora płatności i wraca.
Ecommerce tracking to komplet zdarzeń opisujących ścieżkę zakupową, od wyświetlenia produktu po zakup, wraz z danymi o produktach, dzięki którym działają raporty sprzedażowe i kampanie produktowe.
FAQ
Dlaczego w GA4 mam mniej zamówień niż w panelu sklepu?
Bo część zdarzeń nigdy nie powstaje: użytkownik odmówił zgody, ma bloker, nie wrócił z bramki płatniczej na stronę podziękowania albo zamówienie w ogóle nie przeszło przez przeglądarkę (telefon, panel administratora, odnowienie subskrypcji). Różnica do 3% jest normalna, powyżej 10% to błąd wdrożenia, który da się naprawić.
GA4 pokazuje inne przychody niż Shopify, gdzie jest błąd?
Najczęściej w definicji wartości: brutto kontra netto, wysyłka wliczona albo nie, rabaty naliczane na poziomie pozycji, waluta w sklepie wielowalutowym i zwroty, których GA4 nie odejmuje bez zdarzenia refund. Ustal jedną definicję przychodu i wymuś ją w dataLayer.
Dlaczego Meta Ads raportuje więcej konwersji niż Google Analytics?
Bo Meta liczy także konwersje po wyświetleniu reklamy, przypisuje je do dnia kliknięcia, a nie zakupu, i lepiej łączy urządzenia dzięki zalogowanym użytkownikom. GA4 nie liczy view-through i używa innego modelu. Dodatkowo piksel i CAPI bez wspólnego event_id podwajają zdarzenia.
Która liczba konwersji jest prawdziwa?
Ta z systemu transakcyjnego, czyli z panelu sklepu lub z ERP. Panele reklamowe mierzą swój udział w sprzedaży według własnych reguł, więc ich suma prawie zawsze przekracza rzeczywistą liczbę zamówień.
Dlaczego GA4 liczy jedno zamówienie dwa razy?
Typowo z powodu dwóch kontenerów na stronie, odświeżenia strony podziękowania, aplikacji sklepowej dokładającej własny piksel albo braku transaction_id. Rozwiązanie to jeden identyfikator na zamówienie i blokada powtórnego wysłania zdarzenia.
Piksel Facebooka nie rejestruje zakupów, od czego zacząć?
Sprawdź kolejno: czy zdarzenie jest w dataLayer, czy reguła w GTM je łapie, czy tag nie jest wstrzymany przez zgody, czy żądanie /tr? wychodzi w karcie Network i czy zdarzenie widać w Test Events. Miejsce, w którym łańcuch się urywa, wskazuje przyczynę.
Ile danych tracę przez odrzucone zgody na cookies?
W Europie odmowy potrafią sięgać 60 do 70%, w polskich sklepach częściej 20 do 40%. Bez Consent Mode v2 każda odmowa oznacza całkowity brak danych, z Consent Mode v2 Advanced dostajesz sygnały bez ciasteczek i modelowane konwersje.
Czy warto wdrożyć server side GTM?
Jeżeli wydajesz na reklamę więcej niż kilka tysięcy złotych miesięcznie, zwykle tak. Odzyskujesz zdarzenia blokowane w przeglądarce, wydłużasz życie ciasteczek first party i wysyłasz do systemów reklamowych pełniejsze dane, co poprawia licytację. Przy małych budżetach najpierw popraw dataLayer i zgody.
Stape czy własny serwer sGTM?
Dla większości sklepów Stape, bo jest tańszy w utrzymaniu i szybszy we wdrożeniu, a dodatki takie jak cookie keeper realnie poprawiają jakość danych. Własny serwer ma sens przy bardzo dużym ruchu albo gdy wymogi bezpieczeństwa nie pozwalają na kolejnego dostawcę.
Jak działa deduplikacja piksela i CAPI?
Oba kanały wysyłają to samo zdarzenie z tym samym event_name i tym samym event_id. Meta rozpoznaje duplikat w oknie 48 godzin i liczy zdarzenie raz. Bez event_id konwersje w panelu się podwajają.
Jak poprawić event match quality w Meta?
Dołóż do zdarzenia hashowany e-mail i telefon, dane adresowe z zamówienia, external_id, ciasteczka fbp i fbc oraz adres IP i user agent przekazywane z serwera. Pilnuj normalizacji i hashowania SHA-256. Z samego piksela dostaje się zwykle 4 do 6 punktów, z poprawnym CAPI 7 do 9.
Czy Enhanced Conversions odzyskują utracone konwersje?
Tak, choć nie wszystkie. Google dopasowuje transakcję do zalogowanego użytkownika na podstawie hashowanych danych z checkoutu, więc odzyskuje część konwersji utraconych przez brak ciasteczek. Efekt jest największy przy dużym udziale ruchu z iOS.
Dlaczego po wdrożeniu Consent Mode konwersje w GA4 spadły?
Bo wcześniej mierzyłeś wszystkich, w tym osoby, które nie wyraziły zgody. Po wdrożeniu widzisz mniej, ale zgodnie z prawem. Wersja Advanced pozwala odzyskać część danych przez modelowanie, warunkiem jest poprawne przekazywanie wszystkich czterech parametrów zgody.
Jak sprawdzić, czy tracking działa poprawnie, jeśli nie jestem techniczny?
Zrób jedno zamówienie testowe i porównaj pełny miesiąc: liczbę zamówień w sklepie z liczbą transakcji w GA4, pamiętając o odjęciu zamówień spoza witryny. Jeżeli różnica przekracza 10%, zamów audyt. To 10 minut pracy, które mówią więcej niż godzina klikania po raportach.
Ile trwa naprawa pomiaru konwersji?
Zwykle do tygodnia: audyt i uporządkowanie dataLayer, potem zgody, warstwa serwerowa i wzbogacanie danych. Efekty w kampaniach widać po 2 do 3 tygodniach od momentu, w którym systemy reklamowe zaczynają dostawać komplet sygnałów, bo tyle trwa ponowne uczenie algorytmów.



