Pipedream HTTP trigger → n8n Webhook node
Updated 2026-10-21 · 4 min read
The n8n Webhook node replaces the Pipedream HTTP trigger. The mapping is direct; the work is in switching every sender to a new URL, because *.m.pipedream.net endpoints stop with Pipedream Workflows on March 31, 2027. This page covers the node settings, custom responses and a cutover order that avoids lost requests.
Side by side
| Pipedream HTTP trigger | n8n Webhook node | |
|---|---|---|
| URL | https://<id>.m.pipedream.net |
https://<your-n8n>/webhook/<path> (production), /webhook-test/<path> (test) |
| Goes live | When deployed | When the workflow is published |
| Methods | Any | DELETE, GET, HEAD, PATCH, POST, PUT (set on the node) |
| Default response | 200 with a "Success!" page |
Immediately, "Workflow got started" |
| Custom response | $.respond() or Return HTTP response action |
Respond to Webhook node |
| Body limit | 512 KB (larger via pipedream_upload_body=1) |
16 MB, configurable on self-hosted |
| Auth | None, Custom token (Bearer) or OAuth on the trigger, or a check in code | Basic, Header or JWT auth, IP allowlist |
Sources: Pipedream triggers, n8n Webhook node.
Test URL vs production URL
n8n gives each Webhook node two URLs:
- Test (
/webhook-test/<path>): registers when you click Listen for test event and stays active for 120 seconds. Incoming data shows up in the editor. - Production (
/webhook/<path>): registers when you publish the workflow. Data doesn't appear in the editor; look in the Executions tab.
The most common migration mistake is pointing a sender at the test URL, or at the production URL of an unpublished workflow. Self-hosted instances can rename the webhook and webhook-test prefixes (endpoints).
Set a readable Path in the Webhook node (for example stripe-events) so the URL says what it does.
Custom responses
Pipedream workflows that acted as APIs used $.respond():
await $.respond({ status: 200, headers: { "Content-Type": "application/json" }, body: { ok: true } });
In n8n:
- In the Webhook node, set Respond to Using 'Respond to Webhook' Node.
- Add a Respond to Webhook node where the response should go. It can return JSON, text, a binary file, a redirect, or nothing, with your own status code and headers.
The Respond to Webhook node runs once, with the first item it receives. If the response must go out before slow work finishes (Pipedream's immediate: true), place the Respond to Webhook node early in the flow and the rest of the nodes after it.
The other Respond options are Immediately (returns right away), When Last Node Finishes (returns the last node's output) and Streaming response.
Reading the request
Pipedream put the request in steps.trigger.event (body, headers, query, method, path). n8n's Webhook node outputs one item with body, headers, query and params fields. In a Code node:
const { body, headers, query } = $('Webhook').first().json;
Route parameters such as /orders/:id are supported in the Webhook path and arrive in params.
Security
Pipedream HTTP triggers could require a Custom token (sent as Authorization: Bearer <token>) or OAuth, and many workflows also checked a signature in a code step (triggers docs). In n8n:
- Custom token → the Webhook node's Header Auth, with header name
Authorizationand valueBearer <token>, so existing senders keep working with the same token. - Signature checks (Stripe, GitHub, Shopify HMAC) → a Code node right after the Webhook node. Turn on the Webhook node's Raw Body option, because a signature computed over re-serialized JSON won't match. A Code node can't read n8n credentials, so the signing secret has to come from
$vars(on plans that have Variables) or an environment variable the runner may read.
crypto is available on n8n Cloud and in the default external task runner config, so HMAC code works there without extra modules. In a plain self-hosted container (internal runner mode, nothing allow-listed) require('crypto') fails until you set NODE_FUNCTION_ALLOW_BUILTIN=crypto.
Cutover plan
- List every sender. For each HTTP-triggered workflow, write down who calls it: Stripe, GitHub, a form, your own backend. Our free report lists every HTTP-triggered workflow in your export.
- Import and test the n8n workflow using the test URL.
- Publish it.
- Add the n8n production URL as a second endpoint where the sender allows it (Stripe and GitHub support several), or switch the URL in a quiet period.
- Compare executions in n8n with events in Pipedream for a day or two.
- Remove the Pipedream URL from the sender and turn off the Pipedream workflow.
For your own code, put the webhook URL in configuration so the next move is one change.
Next steps
- Full migration guide: migrate Pipedream to n8n
- Import the converted JSON: import workflow JSON into n8n
- Code in webhook workflows: code steps to the n8n Code node
Our converter maps HTTP triggers to Webhook nodes and $.respond to Respond to Webhook nodes automatically. The report and 1 workflow are free. Full export: $3 per workflow, $19 minimum — coming soon. See pricing.
Not affiliated with Pipedream or n8n.
FAQ
- What is the n8n equivalent of a Pipedream HTTP trigger?
- The Webhook node. It gives each workflow a test URL (/webhook-test/...) and a production URL (/webhook/...) on your n8n domain.
- Why does my n8n production webhook not respond?
- Production webhooks register only when the workflow is published. Unpublished workflows answer only on the test URL, and only while the editor is listening.
- How do I return a custom response like $.respond in n8n?
- Set the Webhook node's Respond option to Using 'Respond to Webhook' Node and add a Respond to Webhook node where the response should be sent.
- Can I keep my *.m.pipedream.net URL?
- No. Those endpoints are part of Pipedream Workflows. Update every sender to the new n8n URL.
- What is the n8n webhook payload limit?
- 16 MB by default. Self-hosted n8n can change it with N8N_PAYLOAD_SIZE_MAX.
Related
Sources
- https://pipedream.com/docs/workflows/building-workflows/triggers
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/workflow-development
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.respondtowebhook
- https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/endpoints