Prevent duplicate webhook processing with Data Tables idempotency guard
Ready for 3.0Ready for 3.0. This template uses no nodes that n8n 3.0 removes. No removed nodes, versions or helpers found. Static check, last run 2026-10-19.
What this workflow does
This workflow has 10 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.
- Normalize Event (Code): runs custom JavaScript code
- Configure Guard (Code): runs custom JavaScript code
- Find Existing Key (Data table): get
- Evaluate Idempotency (Code): runs custom JavaScript code
- Route Decision (Switch): routes items into 3 branches
- Create Ledger Record (Data table): uses Data table
- Record Duplicate (Data table): update
- Refresh Expired Record (Data table): update
- Build Guard Result (Code): runs custom JavaScript code
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 (4)
- Webhook
n8n-nodes-base.webhook - Code
n8n-nodes-base.code - Data table
n8n-nodes-base.dataTable - Switch
n8n-nodes-base.switch
From the author
Quick overview Stop repeated webhook deliveries from triggering payments, notifications, database writes, or other side effects more than once by storing scoped idempotency keys in an n8n Data Table. How it works 1. A Webhook node receives an idempotencykey,…