Skip to content
devstock logo
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI
    • Pierwsza Misja AI (Podstawy)
    • Automatyzacje z n8n 2.0
  • Blog
  • Kontakt
  • O nas
  • Moduły Akademii
    • Moduł 1
    • Moduł 2
    • Moduł 3
    • Pozostałe moduły
  • Kursy AI
    • Pierwsza Misja AI (Podstawy)
    • Automatyzacje z n8n 2.0
  • Blog
  • Kontakt
Kurs Automatyzacji z n8n - banner reklamowy
Narzędzia i Automatyzacja

n8n webhook POST i Respond to Webhook – jak zbudować synchroniczne API

  • 26 mar, 2026
  • Komentarze 0
n8n webhook POST - węzeł Respond to Webhook jako odpowiedź synchronicznego API

Webhook GET zwraca dane. Webhook POST je przyjmuje, przetwarza i powinnien coś odesłać z powrotem. Ten “coś z powrotem” to właśnie miejsce, gdzie wiekszość osób po raz pierwszy napotyka błąd: “No respond to webhook node found in the workflow”. Brzmi jak problem, ale w praktyce to najlepsza lekcja o różnicy między asynchronicznym powiadomieniem a synchronicznym API. W tym artykule budujesz endpoint POST w n8n krok po kroku: od konfiguracji webhooka przez zapis do Data Tables po węzeł Respond to Webhook, który odsyła klientowi precyzyjną odpowiedź JSON. Po drodze omawiamy też standaryzację danych z JavaScript, logikę Insert vs Update i higienę pracy z URL testowymi i produkcyjnymi.

Spis treści
  1. Co to jest "Respond to Webhook" i dlaczego zmienia sposób działania API?
  2. Krok po kroku: webhook POST z zapisem do Data Tables
  3. Kumulacja danych i standaryzacja z JavaScript
  4. Insert vs Update – inteligentna logika zapisywania
  5. Test URL vs Production URL – higiena pracy
  6. FAQ – Najczęstsze pytania o webhook POST i Respond to Webhook w n8n
  7. Podsumowanie

Co to jest “Respond to Webhook” i dlaczego zmienia sposób działania API?

Tryb “Respond to Webhook” zmienia webhook w n8n z jednostronnego odbiorcy w pełnoprawne synchroniczne API: odbiera zapytanie, wykonuje pracę i dopiero po jej zakończeniu odsyła odpowiedź.

Domyślnie webhook n8n działa w trybie “Immediately” – odbiera zapytanie i od razu odsyła potwierdzenie “dostałem, przetwarzam”, nie czekając na wynik. Dla prostych powiadomień to wystarczy. Jednak gdy klient (np. Postman lub aplikacja frontendowa) potrzebuje wiedziec, czy rekord został zapisany poprawnie albo jaki ID otrzymał nowy wpis, “Immediately” nie wystarczy. Klient trzyma “słuchawkę” otwartą i czeka na realną odpowiedź.

Zmiana trybu na “Using Respond to Webhook Node” oddaje Ci pełną kontrolę nad odpowiedzią. Możesz najpierw zapisać dane w bazie, przetworzyć je przez JavaScript, a dopiero potem skonstruować i wysłać klientowi dokładnie to, co chcesz. To fundament profesjonalnych endpointów POST w n8n.

Bez węzła Respond to Webhook n8n zgłosi błąd o brakującym węźle odpowiedzi. To celowe zachowanie platformy – system daje znać, że klient czeka i bez węzła Respond workflow jest niekompletny.

Krok po kroku: webhook POST z zapisem do Data Tables

Poniższy workflow przyjmuje dane przez POST, zapisuje rekord w Data Tables i zwraca potwierdzenie z ID nowego wpisu. Punktem wyjścia jest tabela products w Data Tables z dwiema kolumnami: productName i price.

n8n Data Tables - tabela products z kolumnami productName i price po rozbudowie
Tabela products w Data Tables — kolumny productName i price gotowe do przyjmowania rekordów przez endpoint POST.

Tabela gotowa. Czas na workflow – trzy węzły na canvasie, które razem tworzą kompletny endpoint POST.

Workflow “Create product” na canvasie — widok trzech węzłów: Webhook POST, Data Tables Insert row i Respond to Webhook.

Konfiguracja węzła Webhook

Dodaj węzeł Webhook na canvas. Ustaw HTTP Method na POST. W sekcji Response Mode zmień “Immediately” na “Using Respond to Webhook Node”. Nadaj czytelną ścieżkę, np. add-record.

n8n webhook POST - konfiguracja węzła Webhook z metodą POST, ścieżką i trybem Respond to Webhook
Konfiguracja węzła Webhook — metoda POST, ścieżka endpointu i tryb odpowiedzi "Using Respond to Webhook Node".

Dzięki tej zmianie n8n nie wyśle żadnej automatycznej odpowiedzi. Cały workflow musi zakończyc się węzłem Respond to Webhook, który sam zdefiniujesz.

Węzeł Data Tables Insert row

Po węźle Webhook dodaj węzeł Data Tables z operacją Insert row. Wskaż swoją tabelę i zmapuj kolumny:

  • Kolumna productName – wartość z body zapytania: {{ $json.body.productName }}
  • Kolumna price – wartość z body zapytania: {{ $json.body.price }}

Jeśli przeszedłeś przez artykuł o n8n webhook GET i Data Tables, wiesz już jak działają wyrażenia dynamiczne. Tutaj zamiast $json.query.id (parametr URL) używasz $json.body.productName (parametr z ciała zapytania POST).

Węzeł Respond to Webhook

Na końcu workflow dodaj węzeł Respond to Webhook. W polu Response Body skonstruuj odpowiedź JSON, która wróci do klienta. Minimalna odpowiedź potwierdzająca zapis wygląda tak:

{
  "success": true,
  "message": "Rekord zapisany",
  "id": "{{ $json.id }}"
}
Węzeł Data Tables Insert row — pola productName i price zmapowane dynamicznymi wyrażeniami z body zapytania POST.

Wartość $json.id pochodzi z Data Tables, które po operacji Insert row zwracają ID nowo utworzonego rekordu. Dzięki temu klient natychmiast wie, pod jakim identyfikatorem leży jego wpis.

Trzy węzły, jeden endpoint POST: Webhook odbiera dane, Data Tables zapisuje rekord, Respond to Webhook odsyła klientowi JSON z potwierdzeniem i ID.

Kumulacja danych i standaryzacja z JavaScript

Jedna z najważniejszych właściwości n8n: dane z każdego poprzedniego węzła są dostepne we wszystkich kolejnych. Nie tracisz danych przechodząc przez węzły – wszystko kumuluje sie w jednym strumieniu. Dlatego w węźle Respond to Webhook możesz jednocześnie sięgnąć po ID z Data Tables i po oryginalne name z webhooka – nawet jeśli między nimi był węzeł Code transformujący dane.

Ta “superpower” szczególnie przydaje sie przy standaryzacji danych. Zanim zapiszesz rekord w bazie, możesz przepuścic dane przez węzeł Code, który ujednolici ich format. Przykład: parseFloat() i .toFixed(2) zamieniają cenę na liczbę z dokładnie dwoma miejscami po przecinku przed zapisem.

return $input.all().map(item => ({
  json: {
    productName: item.json.body.productName.trim(),
    price: parseFloat(item.json.body.price).toFixed(2)
  }
}));

Ten fragment JavaScript przyjmuje wszystkie elementy wejściowe, mapuje je na nową strukturę z productName oczyszczonym ze zbędnych spacji (.trim()) i price zaokrąglonym do dwóch miejsc po przecinku, i zwraca tablicę obiektów (taki format n8n wymaga na wyjściu węzła Code). Po tym węźle Data Tables Insert row pobiera oba pola ze strumienia danych.

Testowanie endpointu POST w Postmanie — body raw JSON z polami productName i price, gotowe do wysyłki.

Standaryzacja eliminuje klasyczny problem: baza pełna wpisów “29.9”, “29.90”, “29.900” – technicznie różnych, ale oznaczających tę samą cenę.

Insert vs Update – inteligentna logika zapisywania

Naiwny endpoint POST zawsze tworzy nowy rekord, niezależnie od tego, czy taki już istnieje. To prosta droga do duplikatów w bazie. Profesjonalny system sprawdza najpierw, czy rekord o danym ID już istnieje, i na tej podstawie wybiera operacje:

  • Jeśli ID istnieje w tabeli – wykonaj Update (zaktualizuj istniejący rekord)
  • Jeśli ID nie istnieje – wykonaj Insert (stwórz nowy rekord)

W n8n realizujesz to przez węzeł If/Else po operacji Data Tables Get rows. Warunek: “czy tablica wynikowa ma elementy?”. Gałąź “true” kieruje do Update, gałąź “false” do Insert. Obie gałęzie zbiegają sie w węźle Respond to Webhook, który odsyła odpowiedź z wynikiem.

Dlaczego operować na ID zamiast na nazwie? Nazwa jest podatna na case sensitivity i literówki. ID to liczbowy, unikalny identyfikator generowany przez Data Tables – system nigdy nie wygeneruje dwóch rekordów o tym samym ID. Podstawowy rekord musi trafic do bazy przez Insert, a każda późniejsza zmiana przez Update na jego ID.

Test URL vs Production URL – higiena pracy

N8n generuje dla każdego webhooka dwa adresy: testowy i produkcyjny. Różnią sie fragmentem URL (`webhook-test` vs `webhook`). Podczas budowania zawsze używaj testowego – nie wymaga aktywnego workflow i oddziela testowe wykonania od historii produkcyjnej. Efekt poprawnego wywołania endpointu widac od razu w Data Tables – nowy rekord pojawia sie natychmiast.

Efekt działania endpointu POST — nowy rekord z productName i price pojawia się w tabeli products w Data Tables.

Rekord w tabeli to potwierdzenie ze strony bazy danych. Drugi sygnał sukcesu to sam węzeł Respond to Webhook – odpowiedź JSON odesłana klientowi z potwierdzeniem i ID.

Węzeł Respond to Webhook po wykonaniu — odpowiedź JSON z potwierdzeniem zapisu i ID nowego rekordu wysłana do klienta.

Widac to w widoku Executions: wywołania przez Test URL pojawiają sie z etykietą “Manual Execution”. Producyjne – bez etykiety. Dzięki temu po kilku tygodniach od uruchomienia możesz jednoznacznie powiedzieć, które wykonania były częscią testów, a które to rzeczywisty ruch.

Dodatkowy sygnał: aktywny workflow produkcyjny ma zieloną lampkę w panelu Workflows. Nieaktywny workflow nie odpowiada na produkcyjnym URL, tylko na testowym (gdy jesteś w edytorze). To prosta, ale ważna różnica, o której warto pamiętać zanim podzielisz sie endpointem z zespołem. Więcej o historii wykonań i debugowaniu znajdziesz w artykule o Executions w n8n.

Kurs n8n 2.0 · Kodożercy

Chcesz budować agenty AI? Zacznij od n8n

n8n to platforma, na której działają prawdziwe agenty AI: pobierają dane, podejmują decyzje, wykonują zadania. Kurs n8n 2.0 na Kodożercach przeprowadzi Cię przez budowanie pierwszego agenta.

Sprawdź jak to działa →
Kurs n8n 2.0 - Kodożercy

FAQ – Najczęstsze pytania o webhook POST i Respond to Webhook w n8n

Dlaczego n8n zgłasza błąd o brakującym węźle odpowiedzi?

Ten błąd pojawia sie gdy tryb odpowiedzi webhooka jest ustawiony na “Using Respond to Webhook Node”, ale w workflow nie ma węzła Respond to Webhook. N8n nie wie, co odesłac klientowi – dlatego zgłasza błąd. Rozwiązanie: dodaj węzeł Respond to Webhook na końcu workflow (lub na końcu każdej gałęzi, jeśli workflow ma rozgałęzienia).

Czy mogę używac trybu “Immediately” i Respond to Webhook jednocześnie?

Nie. Tryb webhooka to albo “Immediately” (automatyczna natychmiastowa odpowiedź) albo “Using Respond to Webhook Node” (ręcznie zdefiniowana odpowiedź). Przy pierwszym trybie węzeł Respond to Webhook jest ignorowany. Przy drugim jest wymagany.

Skąd w węźle Respond to Webhook pobrać ID nowo utworzonego rekordu?

Po operacji Data Tables Insert row węzeł zwraca obiekt z polem id nowego rekordu. W węźle Respond to Webhook odwołujesz sie do niego przez {{ $json.id }} (jeśli bezpośrednio po Insert) lub przez {{ $('Data Tables').item.json.id }} (jeśli odwołujesz sie z innego miejsca workflow). Kumulacja danych sprawia, ze ID jest dostepne we wszystkich kolejnych węzłach.

Kiedy używac Insert, a kiedy Update w Data Tables?

Insert tworzy nowy rekord. Update nadpisuje istniejący na podstawie ID. Jeśli budujesz endpoint, który może otrzymac ten sam rekord wielokrotnie (np. synchronizacja danych), użyj logiki: sprawdź czy rekord o danym ID istnieje (Data Tables Get rows), jeśli tak – Update, jeśli nie – Insert. Dzięki temu unikasz duplikatów.

Jak wygląda body zapytania POST, które webhook n8n odczytuje?

Webhook POST w n8n oczekuje danych w formacie JSON w ciele zapytania (Content-Type: application/json). Przykład: {"productName": "Widget A", "price": 29.99}. W wyrażeniach odwołujesz sie do tych danych przez $json.body.productName i $json.body.price. Możesz to przetestowac w Postmanie, o czym piszę w artykule o testowaniu API w Postmanie.

Podsumowanie

Webhook POST w trybie “Using Respond to Webhook Node” zmienia n8n z jednostronnego odbiorcy w synchroniczne API: odbiera dane, przetwarza je i odsyła klientowi precyzyjną odpowiedź JSON. Trzy węzły tworzą kompletny endpoint: Webhook przyjmuje body zapytania, Data Tables Insert row zapisuje rekord, Respond to Webhook odsyła potwierdzenie z ID. Kumulacja danych pozwala sięgac po wartości z dowolnego wcześniejszego etapu, co przydaje sie przy standaryzacji przez JavaScript przed zapisem. Logika Insert vs Update na podstawie ID eliminuje duplikaty i jest standardem w profesjonalnych systemach. Przy pracy pamiętaj o rozróżnieniu Test URL (do budowania i testowania) i Production URL (dla realnego ruchu). Razem z poprzednim artykułem o webhook GET i Data Tables masz kompletny fundament własnego API w n8n bez pisania backendu. Pełny przewodnik po automatyzacji n8n znajdziesz na automatyzacja n8n – kompletny przewodnik.

Udostępnij na:
Mateusz Wojdalski

Specjalista SEO i content marketingu w Devstock. Zajmuję się strategią treści, automatyzacją procesów marketingowych i wdrożeniami AI w codziennej pracy. Badam nowe narzędzia, adaptuję je do realnych zadań i piszę o tym, co faktycznie działa.

n8n webhook GET - jak pobierać dane z Data Tables przez własny endpoint API
Węzły n8n i canvas - 5 rodzajów węzłów, które musisz znać

Najnowsze wpisy

Thumb
Wyciek Lovable – jak pięć wywołań API
21 kwi, 2026
Thumb
Grok 5 AGI – czy plan Elona
20 kwi, 2026
Thumb
Wyciek Vercel – jak OAuth z narzędzia
20 kwi, 2026
Thumb
Claude Design od Anthropic – koniec ery
18 kwi, 2026
Thumb
Koszty agentów AI rosną wykładniczo – analiza
18 kwi, 2026

Kategorie

  • Aktualności i Wydarzenia (26)
  • Bezpieczeństwo i Jakość (27)
  • Branża IT i Nowe Technologie (50)
  • Design i User Experience (4)
  • Narzędzia i Automatyzacja (85)
  • Programowanie i Technologie Webowe (77)
  • Rozwój kariery i Edukacja (33)

Tagi

5G AI Architektura Cyberbezpieczeństwo Feedback Frontend Git IoT JavaScript Motywacja Nauka efektywna Optymalizacja i wydajność Programowanie React.JS Rozwój osobisty WebDevelopment
Logo FitBody Center Warszawa

Odkryj zabiegi Endermologii LPG Infinity w FitBody Center Warszawa

Maszyna zabiegowa - endermologia lpg infinity

Archiwa

  • kwiecień 2026
  • marzec 2026
  • luty 2026
  • styczeń 2026
  • grudzień 2025
  • listopad 2025
  • październik 2025
  • wrzesień 2025
  • sierpień 2025
  • lipiec 2025
  • czerwiec 2025
  • maj 2025
  • kwiecień 2025
  • marzec 2025
  • listopad 2024
  • październik 2024
  • wrzesień 2024
  • sierpień 2024
  • czerwiec 2024
  • maj 2024
  • kwiecień 2024
Group-5638-1

Devstock – Akademia programowania z gwarancją pracy

🏠 ul. Bronowska 5a,
03-995 Warszawa
📞 +48 517 313 589
✉️ contact@devstockacademy.pl

Linki

  • Poznaj firmę Devstock
  • Wejdź do społeczności Devstock
  • Polityka prywatności
  • Regulamin

FitBody Center

Strona

  • Strona główna
  • Kontakt

Newsletter

Bądź na bieżąco, otrzymuj darmową wiedzę i poznaj nas lepiej!


Icon-facebook Icon-linkedin2 Icon-instagram Icon-youtube Tiktok
Copyright 2026 Devstock. Wszelkie prawa zastrzeżone
Devstock AcademyDevstock Academy
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in