Fundusze Europejskie Województwo Łódzkie Unia Europejska
WooCommerce

Śledzenie konwersji w WooCommerce — dlaczego się psuje i jak je sprawdzić

W skrócie

WooCommerce gubi konwersje z pięciu powodów, a cztery z nich wynikają z tego, że pomiar działa w przeglądarce: piksel jest zablokowany, strona podziękowania nie zostaje otwarta, wtyczka zepsuła zdarzenie albo tracker napisano pod klasyczny checkout, a sklep używa blokowego (Blocks). Zapis po stronie serwera usuwa te cztery. Piąty to zgoda — a tego nie naprawi nic.

Dlaczego WooCommerce zaniża konwersje

Pięć mechanizmów, a każdy z nich bierze się stąd, że pomiar działa w przeglądarce odwiedzającego, a nie na twoim serwerze.

  • Piksel jest zablokowany. Blokery treści i ochrona przed śledzeniem w Safari oraz

Firefoksie zatrzymują żądanie, zanim wyjdzie. Zamówienie dochodzi do skutku, zdarzenie nie.

  • Strona podziękowania zostaje pominięta. Bramki płatnicze, które wracają na sklep

asynchronicznie, albo klienci zamykający kartę zaraz po potwierdzeniu z banku, nigdy nie wczytują strony, na której siedzi skrypt konwersji. Zamówienie i tak jest w twojej bazie.

  • Wtyczka zepsuła zdarzenie. Checkout WooCommerce to powierzchnia dla wtyczek. Cokolwiek

dotyka procesu zamówienia, może zablokować skrypt albo zmienić DOM, z którego on czyta — i nic cię o tym nie ostrzeże.

  • Blokowy checkout to nie klasyczny checkout. Trackery napisane pod

woocommerce_checkout_create_order odpalają się w klasycznym procesie i po cichu nie odpalają w blokowym, a ten jest już domyślny w nowych instalacjach.

  • Zgoda została odrzucona. Żaden skrypt się nie odpala i żaden nie powinien. To jedyna pozycja na

tej liście, która jest decyzją, a nie usterką.

Pierwsze cztery da się odzyskać. Piątej nie — i dostawcy, który twierdzi inaczej, nie warto wierzyć.

Pięć sposobów, na jakie ginie konwersja w WooCommerce

Pięć sposobów, na jakie ginie konwersja w WooCommercePasek proporcji dzielący pięć mechanizmów utraty na cztery, które usuwa zapis po stronie serwera, i jeden — odmowę zgody — na który nie działa żaden środek techniczny.5 mechanizmów utraty480%120%Usuwa je zapis po stronie serwera — zablokowany piksel, pominięta strona podziękowania, zdarzenie zepsute przez wtyczkę, blokowy checkoutNie naprawi tego żadna metoda śledzenia — odmowa zgody
Cztery z pięciu to cechy przeglądarki, nie WooCommerce. Przeniesienie zapisu na serwer usuwa je za jednym razem. Piąty to decyzja odwiedzającego.

Jak rozpoznać, który przypadek masz

Test, który zrobisz dziś po południu, na własnym sklepie, nic nie kupując. Odpowiada na węższe pytanie niż „czy mam zepsute śledzenie” — mówi ci, *gdzie*.

  1. Policz zamówienia w bazie. WooCommerce → Zamówienia, przefiltrowane do jednego zamkniętego

miesiąca, status processing lub completed. To jest prawda. Zapisz tę liczbę.

  1. Policz zakupy w platformie reklamowej za ten sam miesiąc, w tym samym oknie

atrybucji, którego używa twój raport. To też zapisz.

  1. Policz zdarzenia, które piksel naprawdę wysłał. W Menedżerze zdarzeń Mety liczba dla

zdarzenia Purchase w tym samym oknie. To liczba, którą ludzie pomijają, a właśnie ona oddziela problem ze śledzeniem od problemu z atrybucją.

Teraz zestaw te trzy liczby:

Co widziszCo to znaczy
Liczba z piksela poniżej zamówień w sklepieProblem ze śledzeniem. Jeden z mechanizmów 1–4.
Liczba z piksela ≈ zamówienia w sklepie, atrybucja platformy wyższaTo nie problem ze śledzeniem. To view-through, modelowanie i nakładające się okna — temat na osobny artykuł.
Liczba z piksela powyżej zamówień w sklepiePodwójne odpalenie — zwykle strona wczytuje zdarzenie dwa razy albo ktoś odświeża stronę podziękowania.

Żeby zawęzić problem ze śledzeniem, powtórz krok 3 z włączonym i wyłączonym blokowym checkoutem. Jeśli liczba się zmieni, to mechanizm czwarty.

Co naprawdę naprawia przeniesienie zapisu na serwer

Zapis na serwerze wykonuje się, zanim cokolwiek dotrze do przeglądarki, więc blokery, zamknięte karty i zmiany w DOM go nie dosięgną. W naszej wtyczce do WooCommerce zapis działa na template_redirect z priorytetem 5 — to Loyalz_Tracking::capture() w public/class-loyalz-tracking.php, podpięte w includes/class-loyalz.php — i zapisuje do ciasteczka first-party, loyalz_tp, z atrybutami httponly, secure i SameSite=Lax, mieszczącego najwyżej 20 punktów styku przez 90 dni.

W każdym punkcie styku zapisujemy id reklamy, pięć parametrów utm i cztery identyfikatory kliknięcia gclid, fbclid, ttclid i msclkid, a do tego referrer, adres wejścia i znacznik czasu ISO-8601 w UTC.

Wizyta bez żadnego z nich nie jest odrzucana. derive_channel() klasyfikuje ją po referrerze jako direct, organic albo referral, więc te kanały widać w ścieżce, zamiast żeby były niewidoczne — i zwraca null dla referrerów z tej samej domeny, żeby nawigacja wewnątrz sklepu nie tworzyła punktu styku przy każdej odsłonie.

Przy checkoucie łańcuch przechodzi na zamówienie. Podpięte są oba procesy: woocommerce_checkout_create_order dla klasycznego checkoutu i woocommerce_store_api_checkout_order_processed dla blokowego, w admin/class-loyalz-woocommerce.php. Łańcuch zostaje odczytany, ciasteczko wyczyszczone, a wynik zapisany przy zamówieniu jako _loyalz_touchpoints. Podpięcie tylko pierwszego z tych dwóch to mechanizm czwarty i najczęstszy sposób, w jaki integracja śledzenia w WooCommerce jest po cichu w połowie zepsuta.

Oto awaria, która przeżywa nawet poprawne wdrożenie po stronie serwera — sami się na nią nadzialiśmy.

Przy pierwszej wizycie z reklamy ciasteczko zgody jeszcze nie istnieje. Baner nie został jeszcze obsłużony. Zapis po stronie serwera wykonuje się na template_redirect, sprawdza zgodę, nie znajduje jej i słusznie odpuszcza — a zanim odwiedzający zaakceptuje, żądanie niosące parametry utm jest już zakończone.

To najcenniejsza wizyta do zapisania, a naiwne wdrożenie serwerowe gubi każdą taką.

Lekarstwem nie jest więcej kodu na serwerze. To mały listener, który po akceptacji wysyła parametry wejścia wciąż obecne w adresie do endpointu zapisującego już przy potwierdzonej zgodzie — loyalz_tp_capture, zarejestrowanego także dla niezalogowanych. Każde wdrożenie serwerowe, które tego nie obsługuje, gubi pierwszy punkt styku przy każdej wizycie z reklamy ze zgodą — a to właśnie ten punkt nazywa kampanię.

Czego to wszystko nie naprawia

Odmowy zgody. Jeśli odwiedzający odrzuci kategorię reklamową, nie ma punktu styku, nie ma łańcucha i nie ma atrybucji — i tak ma być. Nasza bramka czyta ciasteczko CookieYes cookieyes-consent w poszukiwaniu advertisement:yes i dla czegokolwiek innego zwraca false, z filtrem pod inne platformy zgód.

Warto powiedzieć to wprost, bo dostawcy obiecujący odzyskanie konwersji od osób bez zgody sprzedają albo nieporozumienie, albo ryzyko prawne. Uczciwy sufit tego, co da się zmierzyć, to udział ruchu ze zgodą, a podnosi się go projektem banera, nie architekturą śledzenia. Resztę tego, co przeżywa odmowę, opisuje pomiar dla WooCommerce.

Jeszcze dwa ograniczenia, bo strona wyliczająca same zalety to reklama:

  • Dwadzieścia punktów styku i dziewięćdziesiąt dni to limity opisane wyżej. Cykl zakupowy dłuższy

niż dziewięćdziesiąt dni traci najwcześniejsze kontakty, a ścieżka dłuższa niż dwadzieścia wpisów gubi najstarsze.

  • Ciasteczko first-party działa per przeglądarka i per urządzenie. Odwiedzający, który zobaczy reklamę

na telefonie, a kupi na laptopie, wygląda jak dwie osoby i żadna metoda oparta na ciasteczkach tego nie rozwiąże. Sklejanie tożsamości przy logowaniu to inny mechanizm z innymi kompromisami, opisany w pomiar reklam.

Jeśli chcesz rachunek na to, co zrobić z budżetem, kiedy już umiesz go przypisać, dzielenie przez marżę zamiast przez przychód jest następnym krokiem.

Częste pytania

Dlaczego mój sklep na WooCommerce pokazuje mniej konwersji niż Meta?

Z poziomu panelu dwie różne przyczyny wyglądają identycznie. Albo piksel nie odpala się przy każdym zamówieniu — i to problem ze śledzeniem — albo odpala się poprawnie, a Meta przypisuje sobie więcej zamówień, niż potwierdza twój sklep, i wtedy to problem z atrybucją. Test na trzech licznikach powyżej je rozdziela, a każda z nich wymaga odwrotnej naprawy.

Czy potrzebuję Conversions API, czy śledzenia po stronie serwera?

To rzeczy pokrewne, ale nie te same. Conversions API to jedno z miejsc, do których możesz wysyłać zdarzenia serwerowe. Zapis po stronie serwera to zarejestrowanie zdarzenia u siebie w ogóle. Zrób najpierw to drugie — bez tego Conversions API nie ma czego wiarygodnie wysyłać.

Czy blokowy checkout WooCommerce psuje śledzenie konwersji?

Psuje każdy tracker podpięty tylko pod klasyczny proces zamówienia. Blokowy checkout wywołuje woocommerce_store_api_checkout_order_processed zamiast woocommerce_checkout_create_order, a integracja nasłuchująca tylko tego drugiego nic nie zapisuje, chociaż wygląda na działającą.

Czy mogę śledzić konwersje bez zgody?

Nie, i nie powinieneś tego chcieć. Jeśli odwiedzający odrzuci kategorię reklamową, nie ma podstawy prawnej do zapisania punktu styku, a każde narzędzie obiecujące odzyskanie tych konwersji opisuje ryzyko prawne. Mierzalny sufit to udział ruchu, który zgodę wyraził.

Jak długo przechowywany jest punkt styku?

W naszej wtyczce dziewięćdziesiąt dni i najwyżej dwadzieścia punktów styku na odwiedzającego. To limity, nie gwarancje: cykl zakupowy dłuższy niż dziewięćdziesiąt dni traci najwcześniejsze kontakty, a ścieżka dłuższa niż dwadzieścia wpisów gubi najstarsze.

KM

Karol Majewski

Założyciel Loyalz · 12 lat płatnego pozyskania w zest.agency

Zobacz to na swoich danych

Loyalz łączy wydatki reklamowe z rozliczonymi pozycjami zamówień, więc POAS jest kolumną, a nie arkuszem, który co miesiąc składasz od nowa.

Umów demo