n8n Webhook Node: Receive Data From Any App
Why Webhooks Changed How I Build Automations
If there's one concept that unlocked a completely different level of automation for me, it's the webhook. And if you're following any n8n webhook tutorial online right now, chances are you're either confused by the URL structure, unsure how to test it, or just want to see a real working example. I'm going to give you all three.
I've built dozens of webhook-driven workflows at Esipick — from Stripe payment triggers to Typeform lead captures to custom app integrations where the client's dev team just needed somewhere to POST data. The n8n Webhook node handles all of it, and it's more flexible than most people realise when they first pick it up.
What the n8n Webhook Node Actually Does
In plain terms: the Webhook node gives your n8n workflow a public URL. When something hits that URL with a HTTP request — GET, POST, PUT, whatever — your workflow fires. That's it. No polling. No scheduled checks. Instant, event-driven execution.
Here's what makes it powerful compared to other trigger nodes:
- Any app can trigger it — if a tool supports webhooks (and most modern SaaS does), you can connect it to n8n without a dedicated integration node.
- You control the response — n8n can send back a custom HTTP response, which matters if you're integrating with apps that expect a 200 OK or a specific JSON payload.
- Two modes: Test and Production — the test URL is active only when you're listening in the editor; the production URL is always-on once you activate the workflow.
That test/production split trips people up constantly. If you're wondering why your webhook isn't firing in production — check that you've actually activated the workflow, not just saved it.
Step-by-Step: Setting Up Your First Webhook in n8n
Let me walk you through exactly how I'd set this up. This is the foundation of any good n8n webhook tutorial.
1. Add the Webhook Node
Create a new workflow, click the + button, and search for "Webhook". Drop it in as your trigger node. You'll immediately see two things: a Test URL and a Production URL. Copy the Test URL for now.
2. Configure the Method and Path
Set the HTTP Method to POST (this is what 90% of apps use). You can customise the path — instead of the default random string, I usually set something readable like /lead-capture or /stripe-payment. Keeps things sane when you're managing 30+ workflows.
3. Set the Response Mode
You have two options here:
- Immediately — n8n responds with a 200 as soon as it receives the request, then continues processing. Good for most cases.
- When Last Node Finishes — n8n waits until the whole workflow completes before responding. Use this when the calling app needs data back (like a chatbot integration).
4. Test It
Click "Listen for Test Event" in n8n, then send a POST request to your test URL. I use Hoppscotch or just curl from the terminal:
curl -X POST https://your-n8n-instance.com/webhook-test/lead-capture \ -H "Content-Type: application/json" \ -d '{"name": "Sarah", "email": "sarah@example.com"}'
Hit execute, and n8n will catch that payload and show you the data structure. From there, you can reference any field downstream using expressions like {{ $json.name }}.
Real Example: Typeform → CRM via Webhook
Here's a concrete workflow I built for a London-based consultancy last year. They were using Typeform for lead qualification forms but their CRM (Pipedrive) wasn't getting updated reliably through Zapier — missed entries, delays, the usual.
We replaced the entire thing with n8n in about two hours:
- Trigger: n8n Webhook node (POST, path:
/typeform-lead) - Step 2: Set node to extract
name,email,budgetfrom Typeform's nested JSON structure - Step 3: IF node — if budget > £5,000, route to "hot lead" branch
- Step 4a (hot): Create deal in Pipedrive + send Slack alert to sales team
- Step 4b (cold): Add to Mailchimp nurture sequence only
Result: zero missed leads in three months of running. Processing time dropped from occasional 15-minute Zapier delays to under 3 seconds. The client saved £89/month on their Zapier subscription and got more reliable data.
The key was that Typeform's webhook payload buries answers inside an answers array — you need a Code node or a smart Set node to pull the values out cleanly. Happy to cover that in a follow-up post if useful.
Common Mistakes (and How to Avoid Them)
After running through this setup with clients dozens of times, the same issues come up:
- Using the test URL in production apps — it only works when you're actively listening in the editor. Always swap to the production URL before going live.
- Forgetting to activate the workflow — the toggle in the top right of the editor. If it's grey, the production webhook won't fire.
- Not validating the incoming payload — add a basic IF node or Code node early in the workflow to check that expected fields exist. Saves you from broken downstream steps.
- No error handling — wrap your critical nodes in error workflows. If an API call fails mid-flow, you want to know about it, not find out three days later when a client asks where their data went.
- Exposing the webhook URL publicly without auth — if the data is sensitive, add Header Auth or Basic Auth in the Webhook node's Authentication settings. Takes 2 minutes, saves a lot of headaches.
What You Can Connect With n8n Webhooks
Honestly, the list is shorter if I tell you what doesn't work. Any app with a "send webhook" or "HTTP request" feature can trigger n8n. Some of my most-used integrations:
- Typeform, Tally, JotForm (form submissions)
- Stripe, Paddle (payment events)
- Shopify (order, refund, fulfilment events)
- GitHub, GitLab (push, PR events for dev team notifications)
- Custom-built apps where a developer just needs a POST endpoint
- WhatsApp via Meta's Cloud API (message received events)
That last one — WhatsApp via webhook — is its own rabbit hole and honestly one of the most requested things I build. If you want a dedicated walkthrough on that, let me know in the comments.
Wrapping Up
The Webhook node is where n8n stops being a scheduled automation tool and becomes a real-time integration layer. Once you understand the test vs. production URL distinction, get comfortable with JSON payloads, and add basic validation — you can connect almost anything to anything.
This n8n webhook tutorial covers the core, but the real learning happens when you start pulling in messy real-world data and figuring out how to clean it. That's where the craft is.
If you're building something and getting stuck on the webhook setup, reach out to us at Esipick. We've likely solved the same problem for another client and can point you in the right direction quickly.
— Ali, Esipick
Want this automated for your business?
I build n8n workflows, WhatsApp automations, and AI pipelines — starting from $300. Most go live in under a week.
Get a Free Audit →