{"id":37826563,"url":"https://github.com/webhookrelay/node-red-contrib-webhookrelay","last_synced_at":"2026-01-16T15:45:52.573Z","repository":{"id":53346425,"uuid":"162356523","full_name":"webhookrelay/node-red-contrib-webhookrelay","owner":"webhookrelay","description":null,"archived":false,"fork":false,"pushed_at":"2020-03-01T13:21:56.000Z","size":12,"stargazers_count":8,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-04T10:18:47.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/webhookrelay.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-12-18T23:20:59.000Z","updated_at":"2024-07-23T15:01:02.000Z","dependencies_parsed_at":"2022-09-23T15:41:11.832Z","dependency_job_id":null,"html_url":"https://github.com/webhookrelay/node-red-contrib-webhookrelay","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"9b122d373954a459c9926eeda4c706cbd64205ca"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/webhookrelay/node-red-contrib-webhookrelay","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webhookrelay%2Fnode-red-contrib-webhookrelay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webhookrelay%2Fnode-red-contrib-webhookrelay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webhookrelay%2Fnode-red-contrib-webhookrelay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webhookrelay%2Fnode-red-contrib-webhookrelay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/webhookrelay","download_url":"https://codeload.github.com/webhookrelay/node-red-contrib-webhookrelay/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/webhookrelay%2Fnode-red-contrib-webhookrelay/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-01-16T15:45:52.478Z","updated_at":"2026-01-16T15:45:52.551Z","avatar_url":"https://github.com/webhookrelay.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://webhookrelay.com\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg width=\"100\"src=\"https://webhookrelay.com/images/sat_logo.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n[![Build Status](https://drone-kr.webrelay.io/api/badges/webhookrelay/node-red-contrib-webhookrelay/status.svg)](https://drone-kr.webrelay.io/webhookrelay/node-red-contrib-webhookrelay)\n\n## Webhook Relay\n\n`node-red-contrib-webhookrelay` package provides an easy way to receive webhooks without exposing whole Node-RED instance to the internet. Webhooks are received through public cloud endpoint and then are streamed over secure connections to your Node-RED.\n\n## What problem does it solve?\n\nNode-RED is great at receiving and processing various kinds of events but is not considered safe to be exposed to the internet (more info [here](https://github.com/node-red/cookbook.nodered.org/wiki/How-to-safely-expose-Node-RED-to-the-Internet)). Also, to expose Node-RED to the internet, you will need to either deploy it on a public cloud instance or configure your router NAT/firewall.\n\n## Example use case\n\nHere's an example of how to receive and process webhooks on your private Node-RED server (than can be running on your laptop) from a remote device such as a smartphone. Other services such as IFTTT, Zapier or Google Home are great examples of useful integrations. You can get all the webhook details from the node:\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://webhookrelay.com/blog/2019/01/09/nodered-owntracks-direct/\" rel=\"noopener\" target=\"_blank\"\u003e\u003cimg width=\"550\" src=\"https://webhookrelay.com/images/blog/nodered-owntracks/geo-flow.png\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\n## How it works\n\nWebhook Relay acts as a gateway to accept all webhooks and then route them to connected clients based on routing configuration. Connected clients can either be lightweight executables, Docker containers or WebSocket clients (this library is based on [our ws client](https://www.npmjs.com/package/webhookrelay-ws-client)):\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://webhookrelay.com\" target=\"_blank\"\u003e\u003cimg width=\"350\" src=\"https://webhookrelay.com/images/whr-high-level.jpg\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Usage\n\n1. Create a bucket `nodered` (or any other name) on the [buckets page](https://my.webhookrelay.com/buckets)\n2. Get your authentication [token key and secret](https://my.webhookrelay.com/tokens)\n3. Install our node:\n\n```bash\nnpm install node-red-contrib-webhookrelay\n```\n\n4. Open node your node to add bucket name, authentication key and secret.\n5. Connect any other node to your output.\n\nExample JSON input to the `https://my.webhookrelay.com/v1/webhooks/544a6fe8-83fe-4361-a264-0fd486e1665d` endpoint:\n\n```json\n{\n\t\"msg\": \"hello Node-RED!\"\n}\n```\n\nExample JSON object output from the node:\n\n```json\n{\n\t\"topic\": \"nodered\",\n\t\"payload\": {\n\t\t\"type\": \"webhook\",\n\t\t\"meta\": {\n\t\t\t\"id\": \"xxxxx-xxxx-xxxx-ab1d-89a8b0505693\",\n\t\t\t\"bucked_id\": \"12302faf-43bd-43c4-ab1d-89a8b0505693\",\n\t\t\t\"bucket_name\": \"nodered\",\n\t\t\t\"input_id\": \"544a6fe8-83fe-4361-a264-0fd486e1665d\",\n\t\t\t\"input_name\": \"Default public endpoint\",\n\t\t\t\"output_name\": \"\",\n\t\t\t\"output_destination\": \"\"\n\t\t},\n\t\t\"headers\": {\n\t\t\t\"Content-Type\": [\"application/json\"],\n\t\t\t\"Accept\": [\"*/*\"],\n\t\t\t\"Content-Length\": [\"29\"],\n\t\t\t\"User-Agent\": [\"insomnia/6.3.1\"],\n\t\t\t\"Cookie\": [\"__cfduid=dc244a014f0b1e2965544ddb483c3fe1b1525866866\"]\n\t\t},\n\t\t\"query\": \"\",\n\t\t\"body\": \"{\\n\\t\\\"msg\\\": \\\"hello Node-RED!\\\"\\n}\",\n\t\t\"method\": \"PUT\"\n\t},\n\t\"_msgid\": \"43de3dbf.04f4c4\"\n}\n```\n\n### Sending responses back to the caller\n\nFirst, ensure that your bucket's input is configured to return responses (by default for security reasons it will always return 200 status code and an empty body):\n\n1. Go to your buckets page https://my.webhookrelay.com/buckets\n2. Go to the bucket details\n3. Click on input's settings\n4. From the dropdown select \"Any output\"\n\nNow, to send back responses from the Node-RED back to Webhook Relay so it can respond to the caller, form a payload:\n\n```javascript\nreturn {\n    meta: msg.payload.meta,  // this is original meta field from the payload (it's important to include it so we have the message ID)\n    status: 200,   // status code to return (200, 201, 400, etc)\n\t\tbody: \"any payload here (if you want to send JSON, just stringify it first)\", // body\n\t\theaders: {\n\t\t\tsomeheader: ['somevalue']\n\t\t} \n};\n```\n\nThen, send this payload back to the Webhook Relay node through its input.\n\n## Alternative methods\n\nYou can also use Webhook Relay CLI. One way forwarding webhooks \n\n```bash\nrelay forward --bucket nodered http://127.0.0.1:1880/your/http/endpoint\n```\n\nOr exposing whole Node-RED to the internet:\n\n```bash\nrelay connect http://127.0.0.1:1880\n```\n\n## Pricing - Free + paid options\n\nWebhook Relay has a free tier that can be enough for a lot of integration (CI/CD) but consider subscribing to a paid plan to support the project. Pricing can be found here: https://webhookrelay.com/pricing/. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebhookrelay%2Fnode-red-contrib-webhookrelay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebhookrelay%2Fnode-red-contrib-webhookrelay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebhookrelay%2Fnode-red-contrib-webhookrelay/lists"}