n8n Webhook Adapter

Last updated: February 2026 · 5 min read

n8n is a powerful automation tool, but it has a webhook problem: changing a workflow generates a new URL. If you have Stripe, GitHub, Shopify, or any other service pointing at that URL, you need to update all of them manually.

Hookpipe sits between your providers and n8n. You get a stable URL that routes to whatever workflow version is currently active. Swap versions, test canary releases, or roll back, all without touching your external integrations.

What You Get

Stable URLs

Providers always hit the same Hookpipe URL. You change the destination in Hookpipe, not in every service.

Version Routing

Route by headers, payload fields, or query params. Send v1 traffic to the old workflow, v2 to the new one.

Traffic Protection

Buffer bursts so your n8n instance doesn't get overwhelmed. Hookpipe queues and throttles delivery.

Zero-Downtime Updates

Swap workflow URLs in seconds. No provider reconfiguration, no outage window.

Pattern 1: Version Header Routing

Route traffic based on an HTTP header. Your providers send X-App-Version: 2.0 and Hookpipe forwards to the right workflow.

Create two hooks — one per version:

# Hook for v1 workflow
curl -X POST https://hookpipe.app/api/hooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "onboarding-v1",
    "destinationUrl": "https://n8n.yourcompany.com/webhook/onboarding-v1",
    "transformConfig": {
      "filters": [
        { "field": "headers.x-app-version", "operator": "equals", "value": "1.0" }
      ]
    }
  }'

# Hook for v2 workflow
curl -X POST https://hookpipe.app/api/hooks \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "onboarding-v2",
    "destinationUrl": "https://n8n.yourcompany.com/webhook/onboarding-v2",
    "transformConfig": {
      "filters": [
        { "field": "headers.x-app-version", "operator": "equals", "value": "2.0" }
      ]
    }
  }'

Providers always hit the v2 hook URL. Traffic without the header or with an unknown version goes to your default — just add a third hook without filters as the catch-all.

Pattern 2: Blue/Green Deployments

Test a new n8n workflow with real traffic before switching over completely. Route a percentage of traffic to the new version.

The easiest way: use a header or payload field to control routing. A "canary" hook with a filter:

{
  "filters": [
    { "field": "payload.canary", "operator": "equals", "value": "true" }
  ]
}

Send test traffic with {"canary": true} to the new workflow. When ready, update your main hook's destination URL:

curl -X PUT https://hookpipe.app/api/hooks/HOOK_ID \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://n8n.yourcompany.com/webhook/onboarding-v2"}'

All traffic now hits v2. The old n8n workflow can be decommissioned or kept as a rollback target.

Pattern 3: Payload Transformation for n8n

n8n expects specific JSON structures. If your providers send something different, transform it before it reaches n8n. No middleware code required.

{
  "fieldMapping": {
    "email": "customer.email",
    "amount": "payment.amount_cents",
    "currency": "payment.currency",
    "subscription_id": "subscription.id"
  },
  "filters": [
    { "field": "type", "operator": "equals", "value": "payment_succeeded" }
  ]
}

n8n receives a flat, clean payload instead of the nested provider format.

Pattern 4: Graceful Retirement

When deprecating a workflow version, keep the old hook active for legacy clients while new clients use the new URL:

Monitor traffic to Hook A. When it drops to zero, delete the hook and the old workflow.

Setup

1Get your Hookpipe URL

Create a hook for your n8n workflow. The receive URL is:

https://hookpipe.app/hooks/YOUR_HOOK_ID

2Configure your provider

Update Stripe, GitHub, or whoever sends webhooks to use your Hookpipe URL instead of the n8n URL.

3Swap versions instantly

When you deploy a new n8n workflow, just update the destination URL:

curl -X PUT https://hookpipe.app/api/hooks/HOOK_ID \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://n8n.yourcompany.com/webhook/new-version"}'

Add Stability to Your n8n Workflows

No more URL hunting. No more manual provider updates.

Get Started →