Webhook w PrestaShop to najprostszy sposób, żeby sklep sam wysłał powiadomienie do Twojego systemu — bez odpytywania API co minutę. W tej części zajmujemy się organizacją wdrożenia: gdzie włączyć wysyłkę w panelu, co ustawić w formularzu, jak przygotować endpoint odbiorcy i jak sprawdzić, że dane faktycznie dochodzą. Kolejność jest ważna, bo błąd w konfiguracji odbiorcy wygląda dokładnie tak samo jak błąd w PrestaShop — dopiero testy rozdzielają te dwie sytuacje. Porównanie webhooka z Webservice API i cronem oraz kryteria wyboru znajdziesz w pierwszej sekcji artykułu, a pozostałe materiały o PrestaShop zbieramy w naszym hubie o PrestaShop.

Czym jest webhook w PrestaShop i kiedy ma sens

Definicja w jednym zdaniu: webhook w PrestaShop to mechanizm push — sklep sam wykonuje żądanie POST na wskazany przez Ciebie adres URL w momencie zajścia zdarzenia, zamiast czekania, aż Twój system co minutę zapyta o zmiany przez Webservice API.

To nie jest „lepsza wersja API”. To inne narzędzie i w części projektów po prostu się nie opłaca. W praktyce konkurują ze sobą trzy warianty.

KryteriumWebhookWebservice RESTCron co 15 min
KierunekPush — sklep wysyła do CiebiePull — Ty pytasz sklepPull — Ty pytasz sklep
OpóźnieniePoniżej 1 s w trybie real-timeZależne od interwału odpytywaniaDo 15 minut
KosztPo stronie odbiorcy: endpoint, logi, obsługa błędówPo stronie pytającego: limity, paginacjaNajniższy — jeden skrypt w cronie
Kontrola nad danymiTylko to, co wyśle sklepPełna: filtry, wybrane pola, zakres datPełna, ale w stałych porcjach
Główne ryzykoBrak natywnych ponowień i podpisuRate limit i paginacja (429, ucięte listy)Opóźnienie dyskwalifikujące statusy płatności

Trzy scenariusze, w których webhook wygrywa:

Dwa scenariusze, w których webhook przegrywa:

Kryterium decyzyjne: czy opóźnienie powyżej 5 minut kosztuje Cię pieniądze albo powoduje błędy w stanach magazynowych. Jeśli tak — webhook. Jeśli dane mogą poczekać do nocy — API plus cron. Pozostałe materiały o wdrożeniach zbieramy w dziale PrestaShop.

Gdzie włączyć webhooki w panelu PrestaShop (1.7.1, 8.x, 9.x)

Konfiguracja startuje z zaplecza: Parametry zaawansowane → Webservice → zakładka Webhooki. Zakładka w tej formie jest obecna od wersji 1.7.1 i występuje też w 8.x oraz 9.x, ale nazewnictwo sekcji różni się między wersjami — w jednych instalacjach to osobna zakładka, w innych rozwinięcie bloku Webservice. Zanim cokolwiek ustawisz, sprawdź, czy ją widzisz.

Formularz dodawania webhooka zawiera cztery rzeczy, które realnie wpływają na działanie:

Tryb real-time oznacza, że żądanie POST leci w tym samym żądaniu HTTP, w którym klient składa zamówienie. Jeśli Twój endpoint odpowie w 4 sekundy zamiast w 0,2, wydłużasz checkout każdemu klientowi w tym samym momencie. Dlatego endpoint musi: być publicznie dostępny po HTTPS z poprawnym certyfikatem, nie blokować metody POST (sprawdź reguły WAF), odpowiadać w czasie do 2 s i zwracać kod 2xx. Czym jest metoda POST i jak działa HTTPS, opisuje dokumentacja MDN Web Docs – HTTP.

Jak sprawdzić, czy funkcja w ogóle jest dostępna: obecność modułu webhooków na liście modułów, uprawnienia pracownika do Parametrów zaawansowanych i brak konfliktu z modułem nadpisującym Hook::exec — o tym, jak bezpiecznie diagnozować takie nadpisania, piszemy w tekście o PrestaShop override.

Pułapka: jeśli natywna wysyłka nie działa, w 9 na 10 przypadków problem jest po stronie odbiorcy (WAF, firewall, 500 w skrypcie), a nie w PrestaShop. Zanim zaczniesz grzebać w sklepie, zaloguj odpowiedź serwera docelowego.

Które hooki subskrybować i co dokładnie leci w payloadzie

Lista hooków jest długa, ale w projektach e-commerce wraca ten sam zestaw ośmiu.

HookKiedy się odpala
actionValidateOrderNowe zamówienie po walidacji i zapisie — tu masz id_order
actionOrderStatusUpdatePrzed zapisem zmiany statusu — dane sprzed zmiany
actionOrderStatusPostUpdatePo zapisie zmiany statusu — właściwy moment na wysyłkę do ERP
actionPaymentConfirmationPotwierdzenie płatności, np. po callbacku operatora
actionProductUpdateZmiana danych produktu po zapisie
actionUpdateQuantityZmiana stanu magazynowego, także po sprzedaży
actionCustomerAccountAddRejestracja nowego konta klienta
actionObjectCartAddAfterDodanie produktu do koszyka — zdarzenie wysokiej częstotliwości

Najważniejsza różnica: hooki „pre” czytają stan przed zmianą. Jeśli wyślesz status zamówienia do ERP z actionOrderStatusUpdate zamiast z actionOrderStatusPostUpdate, wyślesz dane nieaktualne — i to jest błąd, który wychodzi dopiero po miesiącu, na porównaniu stanów.

Kształt payloadu: JSON z nazwą akcji i parametrami hooka. W większości przypadków dostajesz identyfikatory (id_order, id_product, id_cart), a nie kompletny obiekt — resztę danych musisz dobrać zapytaniem po ID (najlepiej przez Webservice API). Dokumentację hooków znajdziesz w PrestaShop Developer Documentation.

Weryfikacja w 2 minuty: w endpointcie odbiorcy zaloguj surowe body przed parsowaniem — file_get_contents('php://input') do pliku — i złóż jedno testowe zamówienie. Dopiero wtedy wiesz, co realnie wysyła Twoja wersja PrestaShop.

Czego nie ma w natywnej wysyłce: podpisu kryptograficznego, nagłówka autoryzacyjnego i automatycznych ponowień po błędzie. Każde z nich dopisujesz sam.

Multistore: sprawdź, czy w payloadzie dostajesz id_shop. Bez tego webhook z drugiego sklepu nadpisze dane pierwszego. Ciekawym, nietypowym konsumentem zdarzeń ze sklepu jest serwer MCP podłączający AI do danych sklepu.

Własny webhook w module: jak to zrobić dobrze

Natywna konfiguracja webhooka w PrestaShop to zwykłe żądanie HTTP wysłane w trakcie zapytania klienta — bez kolejki, bez retry, bez podpisu. Jeśli integracja ma realne znaczenie (ERP, WMS, system fakturowania), napisz mały moduł. Szkielet: modules/mojmodul/mojmodul.php z klasą MojModul extends Module i metodą install(), w której rejestrujesz hooki: registerHook('actionValidateOrder') oraz registerHook('actionOrderStatusPostUpdate'). Pierwszy łapie nowe zamówienie, drugi — każdą zmianę statusu: płatność potwierdzona, wysłane, anulowane.

Wysyłka: Symfony HttpClient, dostępny w PrestaShop 1.7, 8 i 9. Ustaw timeout 2–3 s oraz max_duration. Całe wywołanie w try/catch — wyjątek wypuszczony z hooka kończy się błędem 500 na stronie koszyka albo potwierdzenia zamówienia. Klient nie zobaczy komunikatu „webhook nie doszedł”, tylko zepsuty sklep.

Krótka synchronizacja to droga do kłopotów. Zdarzenie zapisz do tabeli (ps_mojmodul_queue: id, payload, status, proby, next_attempt, id_order, id_order_state) i wyślij je workerem z crona co minutę. Alternatywa to Symfony Messenger z transportem Doctrine, ale wymaga uruchomionego consumera.

I jeszcze jedno: zamiast nadpisywać klasy core przez override, oprzyj się na hookach — pokazujemy to w materiale PrestaShop override: jak nadpisywać kod bez błędów. Zasada nadrzędna: jedna odpowiedzialność na webhook. Moduł, który jednocześnie wysyła zamówienie do ERP, wystawia fakturę i wrzuca kontakt do Mailchimp, po awarii jednego odbiorcy blokuje pozostałych. Trzy osobne kolejki diagnozuje się w minutach, jedną wspólną — w godzinach. Sygnatury hooków i kolejność ich wywołania znajdziesz w dokumentacji dla deweloperów PrestaShop.

HookKiedy się odpalaDo czego używać
actionValidateOrderPo zapisaniu nowego zamówieniaPierwsze powiadomienie do ERP/WMS
actionOrderStatusPostUpdatePo zmianie statusu zamówieniaPłatność, wysyłka, anulowanie — dane są już aktualne
actionPaymentConfirmationPo potwierdzeniu płatnościRuch do systemu księgowego
actionOrderStatusUpdate (pre)Przed zmianą statusuNie używać do wysyłki danych — payload bywa nieaktualny

Bezpieczeństwo: sekret, podpis HMAC i whitelist

Endpoint webhooka jest publicznie dostępny — kto zna adres, wyśle dowolny payload. Minimum: sekret o długości co najmniej 32 bajtów, losowy, trzymany poza repozytorium (zmienna środowiskowa albo plik konfiguracyjny poza katalogiem modułu), i podpis HMAC-SHA256 liczony z surowego body żądania. Podpis wysyłasz w nagłówku, np. X-Signature, razem z X-Timestamp w formacie uniksowym.

Po stronie odbiorcy policz HMAC z body i porównaj przez hash_equals(). Zwykłe == przerywa porównanie na pierwszym różnym bajcie, więc przy dużej liczbie prób da się odtworzyć podpis (atak timingowy). Żądania starsze niż 5 minut odrzucaj — bez tego raz przechwycone żądanie odtworzysz w nieskończoność (replay attack).

Whitelist IP serwera sklepu to druga linia obrony, nie jedyna. IP zmienia się przy migracji hostingu, zmianie CDN albo wyjściu ruchu przez nowy NAT — wtedy webhooki przestają dochodzić, a Ty szukasz przyczyny w PrestaShop. Aktualizuj listę przy każdej zmianie infrastruktury i traktuj ją jako filtr pomocniczy.

Kody i nagłówki HTTP masz w jednym miejscu — specyfikacja protokołu HTTP w MDN Web Docs. Warto zajrzeć tam przed pisaniem handlera, bo połowa „błędów webhooka” to źle dobrany kod odpowiedzi.

6 awarii, które zdarzają się najczęściej, i jak wykryć je w 10 minut

Zanim zaczniesz grzebać w kodzie, ustal jedno: czy żądanie w ogóle wychodzi ze sklepu. To rozdziela dwie różne klasy problemów — konfigurację po stronie sklepu i zachowanie odbiorcy. Poniższa tabela to kolejność, w jakiej sprawdzamy zgłoszenia.

ObjawNajczęstsza przyczynaTest diagnostyczny
Webhook wcale nie leciWyjątek PHP w hooku, moduł niezarejestrowany, brak registerHook()Sprawdź logi błędów PHP na serwerze sklepu i wywołaj endpoint ręcznie przez curl z hosta sklepu, nie z laptopa
403/406WAF lub mod_security blokuje POST z zewnątrzWyślij POST bez ciasteczek z zewnątrz; dodaj wyjątek dla ścieżki endpointu, nie wyłączaj całego WAF
Timeout u odbiorcyEndpoint wykonuje ciężką operację synchronicznieZmierz czas odpowiedzi; powyżej 2 s w trybie real-time odbija się na czasie ładowania koszyka
Duplikaty tego samego zamówieniaBrak idempotencji; klient odświeżył potwierdzenie albo status zmienił się dwukrotniePorównaj dwa payloady i sprawdź, czy odbiorca liczy klucz id_order + id_order_state + timestamp
Nieaktualne dane w payloadzieUżyty hook pre zamiast actionOrderStatusPostUpdatePorównaj payload z aktualnym stanem zamówienia w panelu po kilkudziesięciu sekundach
Złe IDPomylone id_order z reference albo brak obsługi id_shop w multistoreSprawdź, czy rekord w ERP wskazuje właściwy sklep — przy kilku sklepach ID potrafią się rozjechać

W praktyce najwięcej czasu oszczędza jeden plik CSV: surowe body, kod HTTP odpowiedzi, czas odpowiedzi i timestamp. Po przejrzeniu 20 takich wierszy rozwiązujemy większość zgłoszeń dotyczących webhooków. Jeśli wdrażasz integracje równolegle z innymi, np. z systemem kurierskim, kolejność prac opisujemy w materiale InPost w PrestaShop: wdrożenie krok po kroku. Zbiorczy przegląd tematów sklepowych znajdziesz w sekcji PrestaShop.

Jak webhook nie spowolnił checkoutu

W natywnej konfiguracji wysyłka dzieje się w żądaniu klienta: moduł podpięty do actionValidateOrder wykonuje żądanie HTTP, zanim sklep pokaże potwierdzenie zamówienia. Efekt jest liniowy — jeśli odbiorca odpowiada w 500 ms, składanie zamówienia wydłuża się o 500 ms. Przy 1,5 s u odbiorcy i płatności online klient widzi zawieszoną stronę, a część osób odświeża koszyk i składa zamówienie drugi raz. Każde z tych zdarzeń to osobny webhook i osobny wiersz w ERP.

Stosujemy trzy środki, w tej kolejności:

Monitoring: alert, gdy odsetek nieudanych webhooków przekracza 5% albo najstarszy wpis w kolejce ma więcej niż 15 minut. Test kontrolny: 50 zamówień w 5 minut na stagingu i pomiar czasu odpowiedzi koszyka przed i po włączeniu webhooków. Semantykę kodów odpowiedzi i timeoutów opisuje dokumentacja HTTP w MDN. Samą kolejkę budujemy w module, nie przez nadpisywanie rdzenia — opisaliśmy to w materiale PrestaShop override: jak nadpisywać kod bez błędów.

PodejścieWpływ na czas składania zamówieniaKiedy stosować
Real-time w requeście klientaRówny czasowi odpowiedzi odbiorcyTylko odbiorca odpowiadający poniżej 200 ms, mały ruch
Tryb cron (wysyłka co minutę)Brak — zdarzenie tylko zapisywaneKsięgowość, raporty, systemy wsadowe
Kolejka + workerKilka milisekund (jeden INSERT)ERP, wiele odbiorców, duży ruch
Timeout 2 s + circuit breakerMaksymalnie 2 s, potem odcięcieZawsze jako zabezpieczenie

Webhooki w praktyce: ERP, kurierzy, księgowość, marketing

Kurierzy. InPost, DPD i DHL wysyłają statusy przesyłek. Warto mapować je na własne statusy zamówienia, a nie wrzucać jeden do jednego — inaczej klient dostaje maila „Zrealizowane”, gdy paczka dopiero jedzie. Statusów nieznanych nie zgadujemy: lądują w statusie „Do weryfikacji” i logu z pełnym payloadem. Szczegóły integracji z InPost opisujemy w InPost w PrestaShop: wdrożenie krok po kroku, a różnice w nowszej wersji sklepu w InPost i PrestaShop 9: organizacja wdrożenia bez przestojów.

ERP. Subiekt, Comarch, WF-Mag: zamówienie wysyłamy w actionValidateOrder. Jeśli ERP nie odpowiada, zamówienie musi zostać w sklepie z notatką „Czeka na ERP” i trafić do kolejki z retry (1, 5, 15, 60 minut). Nigdy nie usuwamy zamówienia i nigdy nie blokujemy checkoutu.

Księgowość. Webhook z operatora płatności uruchamia wystawienie faktury, ale rozróżniamy płatność oczekującą (autoryzacja) od zaksięgowanej (potwierdzenie od operatora). Faktura tylko dla tej drugiej.

Marketing. actionCustomerAccountAdd i actionValidateOrder do Mailchimp/Klaviyo wysyłamy wyłącznie za zgodą i w minimalnym zakresie: e-mail, imię, ID klienta, wartość zamówienia. Bez danych wrażliwych, z obsługą wypisania się. Przykład integracji, gdzie część funkcji lepiej odpuścić, znajdziesz w Facebook w PrestaShop: co wdrożyć, a co odpuścić.

Kiedy webhook to zły wybór: hurtowa wymiana katalogu i stanów magazynowych. 20 tys. SKU w webhookach to 20 tys. żądań i kolejka rosnąca szybciej, niż worker ją czyści. Tu działa CSV/SFTP albo API z harmonogramem. Definicje hooków znajdziesz w dokumentacji dla deweloperów PrestaShop.

Status u przewoźnikaStatus w PrestaShopAkcja systemu
Przesyłka nadanaWysłaneZapis numeru listu, mail z trackingiem
W doręczeniuW drodzeBez maila (żeby nie spamować)
DoręczonaZrealizowaneMail z prośbą o opinię
Nieudana próba doręczeniaW drodzeNotatka do zamówienia, bez zmiany na Anulowane
Zwrot do nadawcyZwrotAlert do obsługi klienta
Status nieznanyDo weryfikacjiLog pełnego payloadu, obsługa ręczna

Ile to kosztuje i kiedy warto zrobić to z nami

Widełki, które podajemy przed analizą, są realne dla typowego sklepu na PrestaShop 1.7, 8 lub 9:

Na te godziny składa się praca, którą da się wskazać palcem: analiza hooków i struktury danych w Twojej wersji PrestaShop, kod modułu, klucz idempotencji (żeby ponowienie nie zdublowało faktury), testy na stagingu, dokumentacja i przekazanie. Klucz idempotencji to najmniejszy element, a najczęstsza przyczyna „dubli” w ERP.

Liczymy godzinowo, bo liczba hooków i odbiorców zmienia zakres. Cennik „z sufitu” kończy się dopłatami w połowie projektu — a wtedy rozmowa jest już nie o kodzie, tylko o budżecie.

I uczciwie: jeśli potrzebujesz jednego powiadomienia do jednego adresu, natywna konfiguracja z panelu wystarczy i nie ma sensu płacić za moduł. Mówimy to wprost, bo wolimy wrócić przy drugiej integracji niż przepchnąć niepotrzebny projekt.

Po wdrożeniu zostaje opieka: monitoring kolejki, reakcja na błędy po stronie odbiorcy, jasne SLA i kontakt bezpośrednio z deweloperem, bez pośredników. Zakres naszych prac nad sklepem opisuje PrestaShop.

Nie wiesz, czy problem leży po stronie sklepu czy odbiorcy? Wyślij nam logi z ostatnich 24 godzin — wrócimy z diagnozą, bez zobowiązania.

ZakresGodzinyCo zawiera
Natywna konfiguracja z panelu0Jeden odbiorca, bez kolejki i retry — gdy opóźnienie nie ma znaczenia
Podstawowy webhook8–16Kolejka, retry, podpis HMAC, idempotencja, testy na stagingu, dokumentacja
Integracja z ERP20–40Mapowanie statusów, obsługa braku odpowiedzi ERP, raport błędów, przekazanie

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

Włączenie trybu real-time bez sprawdzenia, jak szybko odpowiada endpoint odbiorcy. Wysyłka idzie w tym samym żądaniu, w którym klient składa zamówienie, więc wolny lub zawieszony skrypt po drugiej stronie wydłuża składanie zamówienia i może kończyć się błędem 500 u klienta.

Jak wykryć: Zmierzyć czas odpowiedzi endpointu: curl -X POST -w '%{time_total}' na docelowy URL z serwera sklepu, kilka razy pod rząd. W logach wolnych żądań sprawdzić, czy POST do webhooka występuje przed wygenerowaniem strony potwierdzenia.

Jak naprawić: Przełączyć webhook na wysyłkę przez cron albo przenieść logikę odbiorcy za kolejkę (endpoint przyjmuje POST, zapisuje do kolejki i od razu zwraca 200). Do czasu naprawy zostawić tryb cron i zaakceptować opóźnienie.

Subskrybowanie hooka „pre” (actionOrderStatusUpdate) i wysyłanie z niego statusu do ERP lub WMS. Ten hook odpala się przed zapisem zmiany, więc do systemu docelowego trafia stan sprzed modyfikacji.

Jak wykryć: Porównać status w payloadzie z aktualnym statusem zamówienia w panelu po tej samej zmianie. Rozbieżność przy każdym zdarzeniu oznacza, że użyto hooka sprzed zapisu.

Jak naprawić: Zamienić subskrypcję na actionOrderStatusPostUpdate i ponowić test na zamówieniu testowym. Hooki „pre” zostawić tylko tam, gdzie świadomie chcesz wpłynąć na dane przed zapisem.

Publiczny endpoint bez żadnej weryfikacji źródła. Każdy, kto zna adres, może wysłać POST i wygenerować fałszywe zamówienie lub zmianę statusu w systemie docelowym.

Jak wykryć: Wysłać POST z maszyny spoza serwera sklepu, bez żadnego tokenu — jeśli endpoint przyjmuje żądanie, jest otwarty.

Jak naprawić: Dodać token w nagłówku lub w adresie, ograniczyć ruch po IP serwera sklepu i walidować treść żądania przed zapisem. Samo HTTPS nie jest zabezpieczeniem — szyfruje ruch, ale nie sprawdza nadawcy.

Brak logowania wysyłek i brak ponowień. Jeśli odbiorca odpowie błędem albo będzie chwilowo niedostępny, zdarzenie przepada i nikt się o tym nie dowie — natywna wysyłka nie powtarza próby.

Jak wykryć: Porównać liczbę zamówień w PrestaShop i w systemie docelowym za ten sam dzień. Różnica większa niż zero to brakujące webhooki, nie „chwilowy lag”.

Jak naprawić: Zapisywać każde wywołanie (czas, hook, payload, kod odpowiedzi) po stronie odbiorcy, a brakujące zdarzenia dociągać przez Webservice API. Przy krytycznych procesach dodać własną kolejkę z ponowieniami.

Założenie, że payload zawiera pełne zamówienie z pozycjami, adresem i danymi klienta. W praktyce dostajesz identyfikatory i podstawowy kontekst, a resztę trzeba dociągnąć.

Jak wykryć: Zapisać surowe ciało żądania z prawdziwego zamówienia do pliku i przejrzeć je przed pisaniem parsera.

Jak naprawić: Po odebraniu webhooka dociągnąć brakujące dane przez Webservice API po ID zamówienia. Strukturę payloadu sprawdzić na własnej wersji PrestaShop — różni się między 1.7.1, 8.x i 9.x. Pełną listę metod opisuje dokumentacja dla deweloperów PrestaShop.

Szukanie winy w PrestaShop, gdy webhook nie dociera. W większości przypadków problem jest po stronie odbiorcy: WAF blokuje POST, firewall odrzuca ruch z zewnątrz albo skrypt zwraca 500.

Jak wykryć: Wysłać na ten sam endpoint ręczny POST z serwera sklepu i porównać wynik z żądaniem z zewnątrz. Sprawdzić logi serwera odbiorcy w momencie zmiany statusu zamówienia.

Jak naprawić: Odblokować metodę POST i ruch z IP sklepu, poprawić błąd 500, a dopiero potem wracać do konfiguracji w panelu PrestaShop.

Lista kontrolna do odklikania

Podsumowanie

Webhook w PrestaShop to jedna decyzja techniczna i kilka decyzji organizacyjnych. Najważniejsza jest ta o trybie wysyłki: real-time tylko wtedy, gdy opóźnienie powyżej 5 minut realnie kosztuje Cię pieniądze lub prowadzi do błędów w stanach. Druga to wybór hooków — zamiana hooka „pre” na „post” przy statusach zamówień to najczęstsze źródło nieaktualnych danych w ERP. Reszta sprowadza się do logowania wysyłek, testu na zamówieniu od początku do końca i planu odzyskania zdarzeń, które nie dotarły.

Najczęściej zadawane pytania

Czy webhooki w PrestaShop są dostępne natywnie, czy trzeba dokupić moduł?

Funkcja jest natywna od wersji 1.7.1 i występuje także w 8.x oraz 9.x, ale nazwy zakładek różnią się między wersjami. Jeśli nie widzisz sekcji webhooków, sprawdź uprawnienia swojego konta pracownika i to, czy inny moduł nie nadpisuje wywołania Hook::exec.

Czy tryb real-time spowalnia składanie zamówienia przez klienta?

Tak. W trybie real-time wysyłka odbywa się w tym samym żądaniu, w którym klient składa zamówienie, więc czas odpowiedzi Twojego endpointu dolicza się do czasu ładowania strony potwierdzenia. Dlatego wymagamy endpointu odpowiadającego w czasie do 2 s, a przy wolniejszym odbiorcy przełączamy wysyłkę na cron.

Webhook nie dociera — od czego zacząć diagnozę?

Od strony odbiorcy, nie od PrestaShop. Wysyłamy ręczny POST z serwera sklepu na ten sam adres i sprawdzamy logi serwera docelowego. W praktyce najczęstsze przyczyny to blokada metody POST, WAF odrzucający ruch z zewnątrz albo błąd 500 w skrypcie odbiorcy.

Ile hooków subskrybować w jednym webhooku?

W praktyce jeden webhook na jedno zdarzenie. Łączenie kilku hooków w jednej subskrypcji utrudnia diagnozę — gdy przestaje działać jedno zdarzenie, nie wiadomo, czy problem dotyczy wysyłki, czy konkretnego hooka. Osobne subskrypcje łatwiej też wyłączyć pojedynczo.

Czy z payloadu webhooka odczytam pełne zamówienie z produktami?

Nie zakładaj tego. Payload zawiera identyfikatory i podstawowy kontekst, a brakujące dane najczęściej trzeba dociągnąć przez Webservice API. Zapisz surowe ciało żądania z prawdziwego zamówienia i przejrzyj je przed napisaniem parsera — struktura różni się między wersjami PrestaShop.

Jak przetestować webhook, nie psując prawdziwych zamówień?

Postaw własny skrypt przyjmujący POST, który zapisuje nagłówki i ciało żądania do pliku. Skieruj na niego webhook, złóż zamówienie testowe i porównaj, co przyszło, z tym, co widzisz w panelu. Dopiero po takim teście podłącz docelowy system.

Czy webhook zastępuje Webservice API?

Nie, to dwie różne role. Webhook informuje o zdarzeniu na bieżąco, ale nie służy do pobierania danych masowo ani do pierwszej synchronizacji katalogu. Przy imporcie kilkudziesięciu tysięcy produktów i przy raportach dobowych wygodniejsze pozostaje API albo jednorazowy import.

Jeśli planujesz podłączenie PrestaShop do ERP, WMS albo narzędzia marketingowego, możemy przejść przez konfigurację razem z Tobą — łącznie z testami i planem awaryjnym. Napisz do nas i opisz, jakie zdarzenia chcesz przesyłać.

Źródła i materiały