Strona główna / Warto wiedzieć ! / Webhooki w e-commerce: 3 błędy, które niszczą automatyzację

Webhooki w e-commerce: 3 błędy, które niszczą automatyzację

Webhooki w e-commerce: 3 błędy, które niszczą automatyzację

Webhooki to techniczny kręgosłup nowoczesnego e-commerce. Odpowiadają za synchronizację zamówień z systemem magazynowym, aktualizację stanów w czasie rzeczywistym, wysyłkę powiadomień czy integrację z platformami księgowymi. Gdy działają – cały proces jest płynny. Gdy zawodzą – tracisz zamówienia, pieniądze i zaufanie klientów.

W mojej praktyce widziałem dziesiątki sklepów, które wdrożyły webhooki „na szybko” i później płaciły za to utratą danych, opóźnieniami lub podwójną wysyłką. Oto trzy realne błędy, które najczęściej psują automatyzację.

1. Brak idempotentności – czyli klonowanie zamówień

Problem: Wysyłasz webhook o nowym zamówieniu. Serwer odbiera go, ale po drodze następuje timeout. Webhook jest wysłany ponownie – i tym razem system tworzy duplikat zamówienia. Klient dostaje dwa razy towar, a Ty tracisz pieniądze.

Dlaczego to się zdarza? Większość platform e-commerce (Shopify, WooCommerce, Magento) domyślnie retransmituje webhooki, jeśli nie dostanie odpowiedzi HTTP 200. Problem leży po stronie odbiorcy – brak mechanizmu idempotentności, czyli sprawdzenia, czy takie samo zdarzenie już było przetworzone.

Rozwiązanie: Każdy webhook powinien zawierać unikalny identyfikator zdarzenia. Po stronie odbiorcy zaimplementuj logikę, która zapisuje ten identyfikator w bazie i przed przetworzeniem sprawdza, czy już nie został obsłużony. Jeśli tak – zwróć 200 i zakończ.

Przykład z życia: Klient uruchomił promocję. System wysłał 1200 webhooków z zamówieniami. Ze względu na chwilowy spike, około 30% z nich było retransmitowanych. Bez idempotentności – 360 duplikatów zamówień, które trzeba było ręcznie anulować. Godziny pracy, zwroty, nerwy.

2. Brak kolejkowania i retencji – gubienie zdarzeń przy przeciążeniu

Problem: Webhook dociera, ale Twój serwer jest akurat przeciążony – zwraca błąd 500 lub 503. Webhook przepada, bo dostawca (np. Stripe, Allegro) po kilku nieudanych próbach rezygnuje. Klient zapłacił, ale zamówienie nie trafiło do systemu.

Dlaczego to się zdarza? Bezpośrednie przetwarzanie webhooków w głównym wątku aplikacji, brak bufora, brak kolejki. Gdy serwer nie nadąża, po prostu gubi zdarzenia.

Rozwiązanie: Zawsze używaj kolejki (np. RabbitMQ, Redis, AWS SQS) do odbioru webhooków. Webhook przyjmujesz najszybciej jak się da – zapisujesz do kolejki i od razu zwracasz 200. Później procesor z kolejki przetwarza zdarzenia w swoim tempie. Dodatkowo włącz retry z wykładniczym backoffem.

Przykład: Sklep na WooCommerce zintegrowany z systemem ERP przez webhooki podczas Black Friday. Podwojony ruch – co piąty webhook kończył się błędem, bo serwer ERP nie wyrabiał. Po dodaniu kolejki i retencji – straty spadły do zera.

3. Brak walidacji podpisu – otwarte drzwi dla ataków

Problem: Odbierasz webhook, przetwarzasz dane, aktualizujesz stan magazynu. Ale skąd wiesz, że webhook naprawdę pochodzi z Twojego sklepu, a nie od atakującego? Jeśli nie weryfikujesz podpisu, każdy może wysłać fałszywe zdarzenie i np. zmienić cenę produktu na 0 zł.

Dlaczego to zdarza się często? Wiele tutoriali pomija ten krok, a developerzy skupiają się na szybkim działaniu, pomijając bezpieczeństwo. Niektóre platformy wymagają jawnego włączenia weryfikacji podpisu – mało kto to robi.

Rozwiązanie: Każdy webhook od poważnego dostawcy (Shopify, Stripe, GitHub) zawiera nagłówek z podpisem lub tokenem. Zawsze sprawdzaj ten podpis przed przetworzeniem. W przypadku webhooków niestandardowych dodaj własny secret i weryfikuj go po stronie odbiorcy.

Przykład: Firma prowadząca marketplace – setki zewnętrznych webhooków od sprzedawców. Jeden ze sprzedawców został zhakowany, a atakujący wysłał fałszywy webhook oznaczający dostawę. System automatycznie zwolnił płatność. Straty – kilka tysięcy złotych zanim zorientowano się, co się stało. Po wdrożeniu weryfikacji podpisu – zero takich incydentów.

Jak zacząć dobrze?

  1. Zawsze używaj kolejki – to fundament niezawodności.
  2. Implementuj idempotentność – unikniesz duplikatów.
  3. Weryfikuj autentyczność – bezpieczeństwo przede wszystkim.
  4. Monitoruj i loguj – bez logów nie dowiesz się, że coś poszło źle.

Webhooki to potężne narzędzie, ale wymagają szacunku. Potraktuj je „po kosztach” – one potraktują Cię tak samo. Jeśli potrzebujesz pomocy przy projektowaniu niezawodnej architektury webhooków – w JurskiTech wdrażamy takie rozwiązania od lat.

Podsumowanie

Błędy w implementacji webhooków kosztują Cię nie tylko pieniądze, ale też czas i zaufanie klientów. Idempotentność, kolejkowanie i weryfikacja podpisu to trzy filary, które powinny stać u podstaw każdej automatyzacji. Nie pomijaj ich – bo konsekwencje mogą być bolesne.

Tagi:

Zostaw odpowiedź

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *