node-red-contrib-webhookrelay 1.0.0

Receive and respond to webhooks in Node-RED without a public IP, tunnel or agent — auto-configures Webhook Relay buckets and streams events over an outbound WebSocket

npm install node-red-contrib-webhookrelay

Webhook Relay

node-red-contrib-webhookrelay

CI npm version

Receive webhooks in Node-RED without exposing it to the internet. The node gives you a public Webhook Relay HTTPS endpoint and streams everything sent to it into your flow over an outbound WebSocket — no public IP, no port forwarding, no tunnel, no agent. It can also reply to the webhook caller straight from the flow.

Typical use: GitHub, Stripe, IFTTT, CI or smart-home webhooks delivered to a Node-RED running on a laptop, Raspberry Pi or private network — somewhere it would be unsafe to expose directly.

Quick start

  1. Install the node (palette manager, or npm install node-red-contrib-webhookrelay)
  2. Get an API key from my.webhookrelay.com/tokens (free tier available)
  3. Drag the webhook relay node into a flow, paste the API key (sk-…) into the secret field (a classic token pair fills both fields), wire it to a debug node and Deploy

The node configures everything in Webhook Relay for you — bucket, public endpoint and event stream — and logs the URL to give your webhook provider:

bucket "node-red": send webhooks to https://<generated>.hooks.webhookrelay.com

Nothing is ever deleted and the URL stays stable across redeploys; it is also shown on the buckets page.

Output message

msg.topic is the bucket name; msg.payload carries the full request:

{
    "meta": { "id": "…", "bucket_name": "node-red", "input_name": "node-red" },
    "headers": { "Content-Type": ["application/json"] },
    "query": "",
    "body": "{\"msg\":\"hello Node-RED!\"}",
    "method": "POST"
}

payload.body is the raw string — parse JSON with a JSON node or JSON.parse().

Replying to webhooks

By default the endpoint replies immediately with the static status code and body set on the node. To reply from your flow instead, set Response to From flow and send a message into the node's input:

return {
    meta: msg.payload.meta, // from the original webhook — carries the message ID
    status: 200,
    body: JSON.stringify({ ok: true }),
    headers: { "content-type": ["application/json"] }
};

A ready-made flow is in the editor under Import → Examples → node-red-contrib-webhookrelay.

Development

Local Docker-based Node-RED setup, tests and release process: see AGENTS.md.

Node Info

Version: 1.0.0
Updated 3 days ago
License: Apache-2.0
Rating: 5.0 1

Categories

Actions

Rate:

Downloads

43 in the last week

Nodes

  • webhookrelay

Keywords

  • node-red
  • webhook
  • webhooks
  • webhook-receiver
  • webhookrelay
  • webhook-relay
  • websockets
  • no-public-ip
  • self-hosted

Maintainers