Accept incoming Webhooks to write messages to a room/channel

Usage no npm install needed!

<script type="module">
  import hubotIncomingWebhook from '';


npm Build Status

Hubot Incoming Webhook

A (very simple) hubot script for sending messages to a channel/room via HTTP POST requests to your bot.


Install script package in your bot's repository:

npm install --save hubot-incoming-webhook

Add to external_scripts.json:


Set the WEBHOOK_TOKEN environment variable to a secret string of your choice when running the bot. It will be used in the incoming webhook URLs.


Generic hooks

The generic Webhook allows you to send arbitrary messages to a room of your choice, by POSTing a simple JSON body to the webhook URL.

The URL is constructed as follows: http(s)://<host>:<port>/incoming/<your-secret-token>

Key Value
room (string) The room/channel you want to post to.
message (string/array) The message you want to post. Can be an array for multiple lines.


curl -X POST -H "Content-Type: application/json" \
     -d '{"room": "#kosmos", "message": "ohai"}' \


This hook allows you to receive hooks from UptimeRobot, and announce your account's uptime status changes/events in a room of your choice.

The URL is constructed as follows: http(s)://<host>:<port>/incoming/uptimerobot/<your-secret-token>

In UptimeRobot's settings, add the following webhook as an alert contact (you must set the room that you want the bot to send messages to):


Don't forget the trailing ampersand, this is required so UptimeRobot can add their query strings to the request for the monitor ID, status, and so on.

Enable the webhook Alert Contact for each monitor. You can perform a bulk action to do it for all at once.


Key Description
WEBHOOK_TOKEN A string for building your secret webhook URLs

Adapter-specific config/hints


Include the hash character for IRC channels in the room value.

Mattermost (tested with hubot-matteruser)

Find the unique ID of the channel (not the display name) and use it for the room value.



The tests are inside of the test folder. To run them:

npm test