Handle reliable webhooks with HTTP Request and Data Table nodes
Ready for 3.0What this workflow does
This workflow has 47 nodes and runs when an HTTP POST request hits its webhook URL. It uses only n8n's built-in nodes.
How it runs
Trigger: When an HTTP POST request hits its webhook URL.
- Validate and Normalize Event (Code): runs custom JavaScript code
- If: checks a condition and branches into true / false
- Verify Event Row Absence (Data table): row not exists
- Verify Event Row Exists (Data table): row exists
- Send 400 Invalid Payload (Respond to Webhook): sends the response back to the webhook caller
- Log Received State (Data table): create or update
- Retrieve Persisted Event State (Data table): get
- Log Processing State Attempt (Data table): create or update
- Route by Event State (Switch): routes items into 7 branches
- Call API Attempt (HTTP Request): calls an HTTP API
…plus 36 more steps. See the full node list below.
Before you upgrade to n8n 3.0
Nothing in this workflow is removed in n8n 3.0, so it should import and run after the upgrade.
Nodes used (9)
- Webhook
n8n-nodes-base.webhook - Code
n8n-nodes-base.code - If
n8n-nodes-base.if - Respond to Webhook
n8n-nodes-base.respondToWebhook - Data table
n8n-nodes-base.dataTable - HTTP Request
n8n-nodes-base.httpRequest - Wait
n8n-nodes-base.wait - Edit Fields (Set)
n8n-nodes-base.set - Switch
n8n-nodes-base.switch
From the author
Quick overview This workflow receives POST webhooks, validates and normalizes the event payload, and uses an n8n Data Table to enforce idempotent processing with durable state tracking. It calls a simulated downstream API on httpbin.org with bounded retries…