Capture and clean inbound web form leads with an authenticated webhook
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 11 nodes and runs when an HTTP POST request hits its webhook URL. Along the way it connects Google Sheets.
How it runs
Trigger: When an HTTP POST request hits its webhook URL.
- Refuse anything unsigned (Code): runs custom JavaScript code
- Spot the junk, with a reason (Code): runs custom JavaScript code
- Junk? (If): checks a condition and branches into true / false
- Keep three fields, safely (Code): runs custom JavaScript code
- Normalise the lead (Code): runs custom JavaScript code
- Write it down anyway (Google Sheets): append
- Make it safe for a spreadsheet (Code): runs custom JavaScript code
- Answer 200, say nothing (Respond to Webhook): sends the response back to the webhook caller
- Append to the leads sheet (Google Sheets): append
- Answer with the clean lead (Respond to Webhook): sends the response back to the webhook caller
Services it uses
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 (5)
- Webhook
n8n-nodes-base.webhook - Code
n8n-nodes-base.code - If
n8n-nodes-base.if - Google Sheets
n8n-nodes-base.googleSheets - Respond to Webhook
n8n-nodes-base.respondToWebhook
From the author
Quick overview This workflow receives inbound web form submissions via an n8n webhook, validates requests using a shared secret header, and cleans and standardizes lead fields (name, email, message, timestamps) so you can reliably pass a structured record…