Odbieraj dane z dowolnej aplikacji w czasie rzeczywistym — formularz kontaktowy, płatność, push GitHuba. Webhook w n8n to najprostszy sposób na integrację.
Webhook to mechanizm, dzięki któremu jedna aplikacja natychmiast informuje drugą o zajściu zdarzenia. Działa na zasadzie odwróconego API: zamiast regularnie pytać "czy coś nowego się pojawiło?", zewnętrzna aplikacja sama wysyła dane do n8n w momencie, gdy zdarzenie nastąpi. To powiadomienie trafia w postaci żądania HTTP POST na unikalny adres URL wygenerowany przez n8n.
W praktyce wygląda to tak: klient składa zamówienie w Twoim sklepie, sklep wysyła POST z danymi zamówienia na URL webhooka n8n, a n8n natychmiast uruchamia workflow — bez żadnego opóźnienia. Porównaj to z pollingiem, który sprawdzałby nowe zamówienia np. co minutę: przy 100 zamówieniach dziennie średnie opóźnienie wynosiłoby 30 sekund, a API sklepu byłoby zbędnie obciążone 1440 zapytaniami na dobę.
N8n obsługuje webhooks jako trigger (węzeł uruchamiający workflow po otrzymaniu żądania) i jako punkt odpowiedzi (możesz zwrócić dane do aplikacji, która wysłała webhook). Każdy webhook w n8n ma dwa adresy: testowy (aktywny tylko gdy workflow jest otwarty w edytorze) i produkcyjny (aktywny gdy workflow jest aktywny). Oba są publicznie dostępne pod domeną Twojej instancji n8n.
W panelu n8n kliknij New Workflow. Kliknij duży przycisk plus i w wyszukiwarce węzłów wpisz "Webhook". Wybierz węzeł Webhook jako trigger. Na ekranie konfiguracji zobaczysz dwa URL: Webhook URL (produkcyjny) i Test Webhook URL. Skopiuj Test Webhook URL — przyda się do testów z curl lub Postman.
W polu HTTP Method wybierz POST (najczęściej używane) lub GET, zależnie od tego, co wysyła zewnętrzna aplikacja. W sekcji Response Mode zostaw domyślne "When last node finishes" jeśli chcesz odesłać przetworzone dane, lub wybierz "Immediately" jeśli aplikacja wysyłająca nie czeka na odpowiedź. Path możesz zostawić wygenerowany lub nadać czytelną nazwę, np. /zamowienia.
Kliknij Listen for Test Event — n8n zaczyna nasłuchiwać. Otwórz terminal i wywołaj: curl -X POST "TWÓJ-TEST-URL" -H "Content-Type: application/json" -d '{"imie":"Jan","email":"[email protected]","produkt":"Hosting n8n"}'. Możesz też użyć Postmana. W n8n zobaczysz odebrany JSON — kliknij na węzeł, żeby podejrzeć strukturę danych. To kluczowe dla budowy kolejnych kroków workflow.
Po węźle Webhook dodaj kolejne węzły przetwarzające dane — Set (ekstrakcja pól), IF (warunki), Slack/Email (powiadomienia), baza danych. Gdy workflow jest gotowy, kliknij Activate w prawym górnym rogu. Od tej chwili produkcyjny URL webhooka jest aktywny i gotowy do przyjmowania danych. Zewnętrzna aplikacja powinna używać właśnie tego URL, nie testowego.
Webhook w n8n to uniwersalny punkt wejścia dla niemal dowolnej aplikacji. Oto trzy konkretne scenariusze integracji, które możesz wdrożyć od razu.
Formularz kontaktowy do CRM: masz formularz na stronie WWW zbudowany w Gravity Forms, Contact Form 7 lub własnym rozwiązaniu. Skonfiguruj go, żeby wysyłał dane (imię, email, treść wiadomości) na webhook n8n. W workflow dodaj węzeł HTTP Request, który tworzy nowy kontakt w HubSpot lub Pipedrive przez ich API. Dodaj też węzeł Gmail, który wysyła email potwierdzający do klienta i powiadomienie do Twojego zespołu. Cały proces zajmuje n8n ułamek sekundy.
Płatność Stripe do bazy danych: Stripe obsługuje webhooks natywnie. W panelu Stripe dodaj nowy webhook z typem zdarzenia payment_intent.succeeded i URL z n8n. Gdy klient zapłaci, n8n odbiera dane transakcji (kwota, waluta, email kupującego, ID płatności) i zapisuje je do arkusza Google Sheets lub bazy MySQL/PostgreSQL. Opcjonalnie dodaje kontakt do listy mailingowej w Mailchimp i wysyła fakturę PDF na email klienta.
GitHub push do powiadomienia Slack: w ustawieniach repozytorium GitHub przejdź do Settings → Webhooks i dodaj webhook z eventem push, wskazując URL n8n. Każdy push do repozytorium uruchomi workflow, który wyciąga dane commita (autor, gałąź, wiadomość commita, lista zmienionych plików) i wysyła sformatowaną wiadomość na kanał #dev w Slacku. Dodaj filtr IF, żeby powiadomienia dotyczyły tylko gałęzi main/master.
Publiczny URL webhooka oznacza, że technicznie każdy może wysłać żądanie na ten adres. N8n oferuje kilka metod zabezpieczenia webhooków przed nieautoryzowanym dostępem.
Basic Authentication to najprostsza metoda: włącz ją w ustawieniach węzła Webhook, ustaw login i hasło. Zewnętrzna aplikacja musi przekazać te dane w nagłówku Authorization. Sprawdza się dla prostych integracji wewnętrznych.
Header Authentication jest bezpieczniejsza dla integracji z zewnętrznymi serwisami. Ustaw nazwę nagłówka (np. X-Webhook-Secret) i wartość tokenu. Zewnętrzna aplikacja musi dołączać ten nagłówek do każdego żądania. Bez poprawnego tokenu n8n odrzuci żądanie z kodem 401.
Weryfikacja podpisu to najsilniejsza metoda, stosowana przez Stripe, GitHub i inne profesjonalne platformy. Platforma podpisuje payload kryptograficznie (HMAC-SHA256) używając współdzielonego sekretu. W n8n użyj węzła Code z JavaScript, żeby zweryfikować podpis przed przetworzeniem danych: oblicz HMAC z otrzymanego payloadu, porównaj z podpisem z nagłówka i odrzuć żądanie jeśli się nie zgadzają.
Na smartxhosting.pl wszystkie webhooks n8n działają przez HTTPS z ważnym certyfikatem SSL Let's Encrypt, co eliminuje ryzyko podsłuchania danych w transmisji. To podstawowy wymóg wielu platform (m.in. Stripe odrzuca webhooki bez SSL).