- Server-side tracking w WooCommerce wysyła każde opłacone zamówienie z własnych danych zamówień sklepu do Meta, TikTok i innych platform reklamowych, więc zakup liczy się nawet wtedy, gdy piksel w przeglądarce nigdy się nie uruchomi.
- ROASaurus uznaje zamówienie WooCommerce za opłacone, gdy ma status processing lub completed, co obejmuje zamówienia za pobraniem i przelewy bankowe po ich potwierdzeniu.
- Wtyczka ROASaurus zapisuje visitor id i cookie z kliknięcia w reklamę przy każdym zamówieniu podczas checkoutu, więc zamówienie jest dokładnie powiązane ze swoim kliknięciem w reklamę.
- Bez wtyczki webhooki nadal dostarczają każde opłacone zamówienie, ale nie ma dopasowania przez stronę z podziękowaniem: zamówienia są powiązane tylko przez e-mail podany wcześniej na stronie albo przez unikalny adres IP i przeglądarkę.
- W WooCommerce skrypt ROASaurus uwzględnia wtyczki zgód korzystające z WP Consent API, takie jak Complianz i CookieYes, a także banery Cookiebot, OneTrust i IAB TCF.
Server-side tracking w WooCommerce wysyła każde opłacone zamówienie z danych zamówień twojego sklepu do Meta, TikTok i innych platform reklamowych, zamiast polegać tylko na pikselu w przeglądarce kupującego. Zakup jest raportowany nawet wtedy, gdy bloker reklam zatrzyma piksel albo kupujący nigdy nie dotrze na stronę z podziękowaniem.
Ten poradnik wyjaśnia, dlaczego sklepy WooCommerce tracą konwersje, jakie dane zamówień daje WooCommerce oraz dwa sposoby połączenia ROASaurus: wtyczkę WordPress lub webhooki. Dalej omawia dopasowanie, zgody, konfigurację i testowanie. Aby poznać ogólną ideę, przeczytaj czym jest server-side tracking.
Dlaczego sklepy WooCommerce tracą konwersje?
Piksel w przeglądarce zgłasza zakup tylko wtedy, gdy skrypt piksela się załaduje, kupujący dotrze na stronę z podziękowaniem, a przeglądarka wyśle zdarzenie. Każdy z tych kroków może zawieść. Samo zamówienie nadal jest w twojej bazie danych, bo WooCommerce zapisuje je na serwerze.
| Co się dzieje | Piksel w przeglądarce | Dane zamówień w WooCommerce |
|---|---|---|
| Kupujący płaci przez przekierowanie (na przykład PayPal lub aplikację banku) i zamyka kartę | Brak strony z podziękowaniem, brak zdarzenia zakupu | Opłacone zamówienie, status processing |
| Bloker reklam lub ustawienie prywatności blokuje skrypt piksela | Brak zdarzenia zakupu | Opłacone zamówienie |
| Odwiedzający odrzuca marketingowe cookie | Piksel nie może się załadować | Opłacone zamówienie |
| Przelew bankowy zostaje potwierdzony trzy dni później | W tym momencie żadna przeglądarka nie jest otwarta | Status zmienia się z on hold na processing |
| Wtyczka pamięci podręcznej lub optymalizacji skryptów opóźnia piksel | Zdarzenie może być spóźnione albo go nie być | Opłacone zamówienie |
Brakujące zakupy szkodzą na dwa sposoby. Platforma reklamowa optymalizuje na podstawie mniejszej liczby konwersji, a twoje raporty pokazują niższy zwrot, niż naprawdę osiągasz. Oto drugi efekt w liczbach, dla przykładowego sklepu z ROAS progu rentowności równym 2.2:
| Przykładowy sklep, jeden miesiąc | Tylko piksel | Wszystkie opłacone zamówienia |
|---|---|---|
| Wydatki na reklamy Meta | $8,000 | $8,000 |
| Zakupy z kliknięć w Meta | 260 | 320 |
| Przychód przy $60 za zamówienie | $15,600 | $19,200 |
| ROAS | 15,600 ÷ 8,000 = 1.95 | 19,200 ÷ 8,000 = 2.40 |
| W porównaniu z progiem rentowności (2.2) | Wygląda na stratę | Rentowna |
Co daje WooCommerce: zamówienia, webhooki i REST API
Jakie statusy zamówień liczą się jako opłacone?
WooCommerce opisuje processing jako otrzymaną płatność, przy czym zamówienie czeka na realizację. ROASaurus wysyła zamówienia ze statusem processing lub completed i pomija zamówienia pending payment, on hold, failed, cancelled oraz refunded. Dwie metody płatności wymagają uwagi:
- Płatność za pobraniem. WooCommerce ustawia te zamówienia na processing do czasu odebrania płatności, więc ROASaurus wysyła je w chwili złożenia. Wyjątkiem są zamówienia z produktem do pobrania: trafiają one na on hold. Zobacz tracking zamówień za pobraniem, aby dowiedzieć się, co to oznacza dla zwrotów i odmów odbioru.
- Przelew bankowy. WooCommerce ustawia te zamówienia na on hold, dopóki weryfikujesz płatność. ROASaurus wysyła je, gdy zmienisz status na processing.
Webhooki
Webhook to wiadomość, którą WooCommerce wysyła do innego systemu, gdy coś się zmieni. Tworzysz go w WooCommerce › Settings › Advanced › Webhooks. Dla tematu zamówienia payload to ten sam obiekt zamówienia, który zwraca REST API. Każda dostawa zawiera nagłówek X-WC-Webhook-Signature: hash HMAC-SHA256 payloadu w base64, utworzony z sekretu, który wybierzesz. ROASaurus sprawdza ten podpis, zanim przyjmie zamówienie.
W praktyce liczą się dwa szczegóły. WooCommerce dostarcza webhooki w tle, domyślnie przez WP-Cron, więc dostawa może się opóźnić, gdy ta kolejka działa z opóźnieniem. WooCommerce wyłącza też webhook po więcej niż pięciu nieudanych dostawach z rzędu.
REST API
REST API pozwala ROASaurus samodzielnie pytać o zamówienia. Z kluczem API tylko do odczytu ROASaurus co 5 minut pyta o zamówienia processing i completed zmienione od ostatniego sprawdzenia, z 30 minutami nakładania się okresów. Zamówienia, które już ma, są ignorowane. Dzięki temu łapie każde zamówienie, które pominął webhook.
| Pole zamówienia | Co ROASaurus z nim robi |
|---|---|
id | Staje się event id order-1042, wspólnym dla zdarzeń z serwera i z przeglądarki |
total | Wartość zakupu: suma całkowita, z podatkiem i dostawą |
| E-mail rozliczeniowy, telefon, imię i nazwisko, miasto, stan, kod pocztowy, kraj | Zahashowane SHA-256 i wysyłane jako dane klienta |
customer_ip_address, customer_user_agent | Wysyłane ze zdarzeniem i używane do dopasowania zamówienia do odwiedzającego |
line_items | Id produktów (id wariantu, jeśli istnieje), ilości i ceny |
date_paid_gmt | Czas zdarzenia dla zamówień z webhooka lub REST API (data utworzenia, gdy nie ma daty płatności) |
meta_data | Z wtyczką: visitor id oraz cookie Meta i TikTok |
Wtyczka czy webhooki: dwa sposoby połączenia
Oba połączenia wysyłają każde opłacone zamówienie. Różnią się tym, jak dobrze każde zamówienie jest powiązane z kliknięciem w reklamę, które przyprowadziło kupującego.
| Wtyczka ROASaurus | Tylko webhooki | |
|---|---|---|
| Co instalujesz | Wtyczka WordPress (PHP 7.4 i WooCommerce 6.0 lub nowszy) | Nic: webhook w ustawieniach WooCommerce |
| Jak docierają zamówienia | Wtyczka wysyła każde opłacone zamówienie do API zamówień ROASaurus | WooCommerce wysyła Order updated; opcjonalne sprawdzanie przez REST API co 5 minut |
| Skrypt trackingowy | Ładowany przez wtyczkę na każdej stronie | Dodajesz go sam, na przykład wtyczką WPCode lub w swoim motywie |
| Visitor id i cookie z kliknięć w zamówieniu | Tak, zapisywane w checkoucie (klasycznym i blokowym) | Nie |
| Zakup z przeglądarki na stronie z podziękowaniem | Tak, z tym samym event id co zdarzenie z serwera | Nie |
| Dopasowanie przez stronę z podziękowaniem | Tak | Nie |
Możesz używać obu naraz. Wtyczka zapisuje visitor id w zamówieniu jako metadane zamówienia, a payload webhooka je przenosi. ROASaurus zapisuje każde zamówienie raz, według jego id zamówienia w WooCommerce, więc wtyczka i webhook nigdy nie tworzą dwóch zakupów. Wtyczka deklaruje też obsługę High-Performance Order Storage w WooCommerce.
Jak zamówienie z WooCommerce jest dopasowywane do kliknięcia w reklamę?
Platforma reklamowa może przypisać zakup do reklamy tylko wtedy, gdy potrafi połączyć jedno z drugim. ROASaurus robi to, łącząc zamówienie z odwiedzającym, który kliknął reklamę, a ten odwiedzający niesie click id (takie jak fbclid i ttclid) oraz parametry UTM ze strony docelowej. Próbuje poniższych metod po kolei i zatrzymuje się na pierwszej, która zadziała:
- Visitor id zapisane w zamówieniu. Tylko z wtyczką. To dokładne powiązanie.
- Zakup z przeglądarki na stronie z podziękowaniem, który niesie to samo id zamówienia. Tylko z wtyczką.
- Zahashowany e-mail, który odwiedzający podał wcześniej na twojej stronie, na przykład w formularzu popupu Klaviyo, Attentive lub Wisepops albo przez wywołanie Identify.
- Ten sam adres IP i ta sama przeglądarka, widziane od 3 godzin przed zamówieniem do 15 minut po nim, ale tylko wtedy, gdy pasuje dokładnie jeden odwiedzający. W sieciach współdzielonych, takich jak biura i operatorzy komórkowi, kilku odwiedzających często dzieli jeden adres IP i wtedy ROASaurus nie zgaduje.
ROASaurus chwilę czeka, zanim wyśle każdy zakup, żeby zdarzenie ze strony z podziękowaniem mogło dotrzeć pierwsze. Jeśli zamówienie nadal nie jest dopasowane, próbuje jeszcze raz w momencie wysyłki. Strona Orders pokazuje wynik dla każdego zamówienia w kolumnie Matched by. Zamówienia powiązane przez visitor id z wtyczki pokazują cart, czyli tę samą etykietę, którą dostają zamówienia ze Shopify.
| Wysłane do Meta dla zamówienia 1042 | Dopasowane (wtyczka) | Niedopasowane (tylko webhooki) |
|---|---|---|
Event id order-1042 | Tak | Tak |
| Zahashowany e-mail, telefon, imię i nazwisko oraz adres | Tak | Tak |
| Adres IP i przeglądarka z zamówienia | Tak | Tak |
Click id Meta i id przeglądarki (fbc, fbp) | Tak | Nie |
Zahashowany visitor id (external_id) | Tak | Nie |
| Kliknięcie w reklamę w atrybucji ROASaurus | Kampania i reklama z kliknięcia | Pokazane jako bezpośrednie lub nieznane |
Te identyfikatory kliknięcia podnoszą odsetek dopasowań zdarzenia w Meta. Event Match Quality wyjaśnia, jak Meta je ocenia.
Zgody w WooCommerce
Każdy sklep w ROASaurus ma ustawienie Respect visitor consent, które jest domyślnie włączone. W WooCommerce skrypt ROASaurus odczytuje wybór odwiedzającego z WP Consent API, które wypełniają wtyczki zgód, takie jak Complianz i CookieYes. Odczytuje też Cookiebot, OneTrust, banery IAB TCF i Google consent mode. Dopóki odwiedzający nie zaakceptuje marketingowych cookie, skrypt nie ustawia visitor id i nie ładuje pikseli w przeglądarce.
Gdy odwiedzający odrzuci zgodę, skrypt nie ustawia visitor id, nie zachowuje click id i nie uruchamia pikseli w przeglądarce, a wtyczka nie zapisuje przy zamówieniu cookie trackingowych. Opłacone zamówienie nadal jest wysyłane z serwera do połączonych platform reklamowych, z zahashowanymi danymi klienta z zamówienia oraz adresem IP i przeglądarką z zamówienia. Jeśli twoja opinia prawna mówi, że zdarzenia zakupu też wymagają wcześniejszej zgody, skontaktuj się z ROASaurus, zanim włączysz zakupy server-side. Szczegóły są na stronie pomocy o zgodach, a tło prawne omawia wpis o Consent Mode v2 i RODO.
Jak skonfigurować server-side tracking w WooCommerce
Oto kroki dla wariantu z wtyczką:
- Dodaj sklep
W ROASaurus przejdź do Add a store, wybierz WooCommerce i wpisz domenę, na którą wchodzą twoi klienci.
- Utwórz klucz API
Otwórz Store settings i w sekcji Orders API kliknij Create API key. Skopiuj klucz od razu: jest pokazywany tylko raz, obok klucza sklepu. Endpoint to adres przed
/api/v1/ordersna tej stronie. - Zainstaluj wtyczkę
Pobierz wtyczkę i wgraj plik zip w WordPressie w Plugins › Add New Plugin › Upload Plugin, a potem ją aktywuj.
- Wpisz klucze
W WooCommerce › ROASaurus wpisz endpoint, klucz sklepu i klucz API, a potem zapisz.
- Połącz swoje platformy reklamowe
W Tracking & platforms użyj Connect with Facebook albo Add pixel dla Meta, TikTok i pozostałych. Zaznacz opcję ładowania także piksela w przeglądarce, aby zakup ze strony z podziękowaniem był deduplikowany ze zdarzeniem z serwera.
- Skonfiguruj zgody i przetestuj
Zablokuj skrypt w narzędziu do zgód, dopóki odwiedzający nie zaakceptuje marketingowych cookie, a potem złóż testowe zamówienie.
Bez wtyczki dodaj tag skryptu z Tracking & platforms na każdą stronę, a potem utwórz webhook. Karta Connection twojego sklepu pokazuje adres URL webhooka. Zachowaj go w tajemnicy: każdy, kto ma ten adres, może wysyłać zamówienia do twojego sklepu.
WooCommerce › Settings › Advanced › Webhooks › Add webhook Status Active Topic Order updated Delivery URL (your webhook URL from the Connection tab) Secret (a secret of your choice; paste the same one in ROASaurus) API version WP REST API Integration v3
Dla kopii zapasowej utwórz klucz w WooCommerce › Settings › Advanced › REST API z dostępem do odczytu. Wklej consumer key i secret na karcie Connection, zapisz i naciśnij Test connection. Fetch orders now od razu pobiera ostatnie opłacone zamówienia. Wszystkie opcje w jednym miejscu wymienia strona integracji z WooCommerce.
Jak przetestować server-side tracking w WooCommerce?
Najpierw przetestuj stronę przeglądarki, potem złóż zamówienie i śledź je aż do platform reklamowych.
- Otwórz swój sklep z
?roasaurus=connectedw adresie. Alert potwierdzi, że skrypt działa. Z?roasaurus=debugskrypt zapisuje w konsoli przeglądarki to, co wysyła. - W Event log, w sekcji Collected events, wyświetlenia stron powinny pokazywać visitor id.
- Złóż testowe zamówienie. Najszybsza jest płatność za pobraniem, bo zamówienie od razu ma status processing.
- Na karcie Connection pole Last order received pokazuje czas ostatniego zamówienia.
- W Event log, w sekcji Server deliveries, każda połączona platforma ma wiersz ze statusem sent i odpowiedzią platformy.
PageView visitor 3f9c2a1eSkrypt załadowany za zgodąPurchase order-1042Strona z podziękowaniem, piksele w przeglądarce uruchomioneorder 1042 processingOdebrano z wtyczkiMeta Purchase sentTen sam event id, po deduplikacjiTikTok CompletePayment sentTen sam event id, po deduplikacjiAby zobaczyć zdarzenie w Meta, wklej kod z Events Manager › Test events w pole Test event code swojego piksela Meta w ROASaurus. Usuń go, gdy skończysz, bo kod jest przeznaczony tylko do testów. Jeśli wtyczka nie może dostarczyć zamówienia, dodaje w WooCommerce notatkę do zamówienia zaczynającą się od „ROASaurus: order not sent”, po której następuje błąd.
Błędy, których warto unikać
- Użycie tematu Order created. Zamówienia opłacane przez przekierowanie są tworzone jako pending payment. ROASaurus ignoruje nieopłacone zamówienia i po nadejściu płatności nie następuje drugi komunikat „created”. Użyj Order updated.
- Sekret, który się nie zgadza. ROASaurus odrzuca dostawę, której podpis nie pasuje do sekretu, który ma. Po więcej niż pięciu niepowodzeniach z rzędu WooCommerce wyłącza webhook. Popraw sekret, ustaw webhook z powrotem na Active i dodaj klucz REST API, żeby zamówienia z tej luki zostały pobrane.
- Dwa narzędzia wysyłające ten sam piksel. Jeśli inna wtyczka także wysyła twój piksel Meta lub TikTok, używa własnych event id, a platforma liczy każdą sprzedaż dwa razy. Wyłącz ją dla tego piksela. Zobacz zapobieganie podwójnemu liczeniu i zduplikowane zdarzenia zakupu.
- Oczekiwanie zdarzeń dodania do koszyka. W WooCommerce skrypt sam śledzi wyświetlenia stron. Wyświetlenia produktów i dodania do koszyka są wykrywane automatycznie tylko w Shopify. Programista może je wysłać wywołaniem track
tlq. - Oczekiwanie konwersji Google Ads. ROASaurus wysyła konwersje zakupu Google Ads tylko z checkoutu Shopify. Z WooCommerce wysyła zakupy do Meta, TikTok, Snapchat, Pinterest, Reddit, X, Microsoft Ads, Taboola, LinkedIn i innych połączonych platform reklamowych.
- Spóźnione przelewy bankowe. Meta przyjmuje zdarzenia server-side do 7 dni po czasie zdarzenia. Wtyczka wysyła zamówienie z datą jego utworzenia, więc Meta odrzuca przelew potwierdzony po więcej niż 7 dniach od checkoutu. Zamówienia docierające przez webhook lub REST API używają zamiast tego daty płatności. Zwróć też uwagę, że strona z podziękowaniem uruchamia zakup z przeglądarki w momencie checkoutu, zanim przelew zostanie opłacony. Jeśli płatność zostanie potwierdzona po więcej niż 48 godzinach, Meta i TikTok nie mogą scalić kopii z przeglądarki i z serwera, a przelew, który nigdy nie zostanie opłacony, zachowuje swój zakup z przeglądarki.
Gdy zamówienia zaczną płynąć, raporty atrybucji pokażą, z jakich kampanii i reklam pochodzą.
Źródła
- WooCommerce: Webhooks Documentation
- WooCommerce REST API Documentation - WP REST API v3
- WooCommerce: Order Statuses Documentation
- WooCommerce: Cash on Delivery Documentation
- Meta for Developers: Server Event Parameters