Webhooki WordPress i WooCommerce – praktyczny poradnik

Spis treści

Czym są webhooki i gdzie oszczędzają czas

Webhook to automatyczna wiadomość przesyłana z jednej aplikacji do drugiej po wystąpieniu konkretnego zdarzenia. Zamiast ręcznie sprawdzać panel sklepu i przepisywać dane do kolejnego systemu, uruchamiasz proces, który przekazuje potrzebne informacje od razu.

W sklepie WooCommerce takim zdarzeniem może być złożenie lub aktualizacja zamówienia. Na stronie usługowej będzie to rejestracja użytkownika albo komentarz. Odbiorcą może być system realizacji zamówień, narzędzie mailingowe, CRM lub prywatna chmura.

WordPress REST API jako warstwa komunikacji

WordPress udostępnia REST API pod adresem rozpoczynającym się od ścieżki wp-json. Zewnętrzne aplikacje komunikują się przez nie z witryną, przekazując dane w formacie JSON. Ten sam mechanizm można wykorzystać do przygotowania własnego punktu odbioru webhooków.

Przy takim rozwiązaniu trzeba określić adres, który przyjmuje żądania, oraz funkcję sprawdzającą uprawnienie do jego wywołania. Publiczny punkt odbioru nie oznacza otwartego przetwarzania danych: weryfikacja podpisu powinna nastąpić zanim serwer wykona kosztowne operacje.

Gotowe narzędzia integracyjne

Nie każda automatyzacja wymaga własnego rozwiązania. Zapier oferuje wyzwalacze i akcje związane z WordPressem, lecz w opisanej integracji korzysta z XML-RPC. To może wymagać dodatkowej konfiguracji, ponieważ część wtyczek bezpieczeństwa i Cloudflare blokuje XML-RPC.

Make działa przez REST API, oferuje moduły dla postów, kategorii, komentarzy, multimediów, użytkowników i tagów oraz obsługę pól niestandardowych. Przy większych witrynach należy uwzględnić zapotrzebowanie na pamięć PHP. IFTTT jest prostszą opcją do podstawowych automatyzacji, jednak jego wyzwalacze działają przez okresowe sprawdzanie, a nie w czasie rzeczywistym.

Wspólnym wymaganiem tych narzędzi są aktywne HTTPS i czytelne bezpośrednie odnośniki. Ustawienie prostych odnośników może powodować błędy autoryzacji.

Zdarzenia dostępne w WooCommerce

WooCommerce ma webhooki wbudowane od wersji 2.2. Konfiguracja znajduje się w ustawieniach zaawansowanych, w sekcji webhooków. Do wyboru są zdarzenia związane z zamówieniami, produktami, klientami i kuponami.

  • dla każdego z tych zasobów dostępne są zdarzenia utworzenia, aktualizacji i usunięcia,
  • tryb działania pozwala reagować na dowolną akcję WooCommerce, na przykład dodanie produktu do koszyka,
  • tryb niestandardowy służy do obsługi własnych zdarzeń.

Dane są przekazywane jako JSON o strukturze odpowiadającej odpowiedzi REST API danego zasobu. To ułatwia odbiorcy rozpoznanie, czy otrzymał dane zamówienia, produktu czy klienta.

Dostarczenie, statusy i logi

Webhook WooCommerce może być aktywny, wstrzymany przez administratora albo wyłączony. Automatyczne wyłączenie następuje po pięciu kolejnych nieudanych próbach dostarczenia; ten próg można zmienić filtrem WooCommerce.

Dostarczenie odbywa się w tle z użyciem mechanizmu wp-cron. Informacje diagnostyczne znajdziesz w WooCommerce, w sekcji statusu i logów, wybierając źródło dotyczące dostarczania webhooków. To pierwsze miejsce, do którego warto zajrzeć, gdy integracja nie otrzymuje danych.

Podpisy i weryfikacja autentyczności

WooCommerce przekazuje nagłówki opisujące zdarzenie oraz jego dostarczenie. Odbiorca otrzymuje między innymi nazwę zdarzenia, typ zasobu, rodzaj operacji, identyfikator webhooka i unikalny identyfikator dostarczenia.

Najważniejszy jest podpis w nagłówku. Powstaje on jako HMAC-SHA256 z danych i sekretnego klucza. Odbiorca wylicza podpis ponownie, używając identycznych danych i sekretu, a potem porównuje wyniki funkcją odporną na ataki czasowe. Niezgodność oznacza, że żądanie trzeba odrzucić.

Najważniejsze zasady bezpieczeństwa

Webhook jest punktem dostępnym dla systemów zewnętrznych, dlatego wymaga takiej samej ostrożności jak każde publiczne API. HTTPS i podpisywanie komunikatów są podstawą, ale nie wyczerpują tematu.

  • chroń przed sfałszowanymi zdarzeniami przez weryfikację podpisu,
  • ogranicz ryzyko ponownego wysłania przechwyconego żądania przez znacznik czasu i krótki dopuszczalny przedział,
  • przy dalszym wysyłaniu danych blokuj adresy lokalne i prywatne oraz uwzględnij ryzyko zmiany odpowiedzi DNS,
  • przechowuj sekrety poza bazą danych, na przykład w konfiguracji środowiska, i regularnie je zmieniaj.

Ukryty adres nie jest zabezpieczeniem. Najkorzystniej odrzucać niepoprawne żądanie na samym początku, zanim aplikacja zacznie przetwarzać dane lub korzystać z bazy.

Jeśli interesuje Cię automatyzacja pracy sklepu, polecam przeczytać artykuł: WooCommerce 10.9 – co nowego i co to oznacza dla sklepu.

Co pokazują praktyczne wdrożenia

Przykłady firm korzystających z webhooków pokazują, że warto zacząć od jednego, powtarzalnego kroku. District Cinema zautomatyzowało udostępnianie cyfrowych zasobów po zamówieniu: proces, który wcześniej trwał godzinami, zaczął wykonywać się w ciągu minuty.

ReposePoint uruchamiało po zamówieniu proces zbierania recenzji i przekazywało opinie do Klaviyo oraz Google Shopping. Kilford Studios, korzystając z n8n i API WooCommerce, przyspieszyło przetwarzanie zamówień o 80%, zmniejszyło liczbę błędów ludzkich o 90% i podwoiło wydajność bez dodatkowych etatów.

W innym przypadku jeden punkt odbioru zbierał leady z formularzy, Facebook Lead Ads i webinarów, normalizował dane oraz przesyłał je dalej kolejką. Czas reakcji spadł z czterech godzin do mniej niż trzech minut, a błędy danych z 25% do poniżej 1%.

Własny punkt odbioru bez kodu w artykule

Własny punkt odbioru w WordPressie składa się z trzech prostych elementów: rejestracji ścieżki REST API, weryfikacji podpisu i obsługi poprawnie zweryfikowanych danych. WordPress wymaga funkcji sprawdzającej uprawnienia dla każdego takiego punktu od wersji 5.5.

Gdy WordPress wysyła dane do innej usługi, bezpieczniejszym wyborem jest mechanizm, który sprawdza adres docelowy i przekierowania. Ma to znaczenie zwłaszcza wtedy, gdy adres docelowy może pochodzić od użytkownika, ponieważ ogranicza ryzyko SSRF.

Ograniczenia webhooków

Webhooki nie gwarantują kolejności. Jeżeli dwa zdarzenia wystąpią niemal równocześnie, drugie może dotrzeć przed pierwszym. Logika odbiorcza musi uwzględniać ten scenariusz, zamiast zakładać liniowy przebieg każdego procesu.

To również komunikacja jednokierunkowa: nadawca wysyła zdarzenie i oczekuje przede wszystkim potwierdzenia odbioru. Gdy systemy mają prowadzić pełną wymianę danych, bardziej odpowiednie może być API. Przy setkach zamówień dziennie i wielu zdarzeniach warto rozważyć kolejkę zamiast bezpośrednich wywołań.

Od czego zacząć automatyzację

Najlepszym kandydatem do pierwszego webhooka jest zadanie, które dziś wykonujesz ręcznie po każdym zamówieniu. Może to być przekazanie danych do realizacji, uruchomienie sekwencji wiadomości lub aktualizacja CRM.

Zacznij od pojedynczego zdarzenia, skonfiguruj podpis i sprawdź logi dostarczenia. Dopiero potem rozbudowuj proces. W ten sposób automatyzacja pozostaje zrozumiała, a potencjalne problemy łatwiejsze do wykrycia.

Chcesz połączyć sklep WooCommerce z innym systemem? Pomożemy zaplanować bezpieczną automatyzację i wdrożyć integrację dopasowaną do procesu Twojej firmy.