Webhook Relay
Let an external service send updates through your bot using a secret webhook URL.
Pro
Let an external service send updates through your bot using a secret webhook URL.
Install Webhook Relay from your bot’s Modules tab. Configure the settings below, save, and deploy the bot to apply changes. See module setup for shared setup steps.
Set up and use
- Install and enable Webhook Relay on the bot that should send the messages.
- Choose Post to channel in its module settings, with an optional role mention. For multiple servers, configure the destination on each server’s settings page.
- Save and deploy the bot. Open the bot dashboard’s Webhook section and copy its secret URL.
- Configure your sending service to POST the payload below to that URL with
Content-Type: application/json.
The URL selects the bot; the module/server settings select its Discord destinations. There is no bot or channel selector in the incoming payload. Anyone who has the URL can submit notifications. Keep it private; rotate it in the dashboard if exposed and update your sender with the new URL.
Payload
{
"id": "release-42",
"title": "New Update Released: 42",
"description": "A fresh update is live!\n\n**Patch notes**\n- Improve onboarding\n- Fix command permissions",
"url": "https://example.com/updates/42"
}| Field | Use |
|---|---|
id | Unique event ID, up to 128 characters. Reuse it when retrying the same event. |
title | Required, 1–256 characters. |
description | Optional, up to 60,000 characters. Long notes are split into messages. |
url | Optional public link to more details. |
An Idempotency-Key header can supply the event ID instead. Without an ID, identical normalized payloads are treated as duplicates.
Delivery and troubleshooting
| Response | Meaning |
|---|---|
202 | Accepted for delivery; it may not be in Discord yet. |
400 | Invalid payload. |
403 | The bot owner needs Pro. |
404 | The secret URL is unknown or disabled. |
413 | Request body exceeds 128 KiB. |
429 | Rate or queue limit reached; retry after 60 seconds with the same event ID. |
Up to 30 events per minute and 100 pending events per bot are accepted. Keep the bot running: accepted events wait for it and expire after 24 hours. Failed delivery is retried; disabling the module cancels pending events. Check recent delivery status and bot logs for channel or permission errors. After fixing a terminal failure, submit a new event ID.
Duplicate protection normally lasts up to seven days, subject to history limits; a rare retry can still produce a duplicate Discord message.
Connecting a release workflow
Configure your deployment service to send an event only after a successful deployment. Give each release a stable ID and put the commit titles in the description. For a silent release, skip that notification step. This is a generic JSON relay: providers must send this payload or transform their event into it. Native GitHub, Twitch, or payment-provider webhook formats and signatures are not handled automatically.
This module delivers notifications automatically and does not add a graph action.
Settings reference
| Setting | Default | Details |
|---|---|---|
| Post to channel (required) | — | Choose a Discord channel. |
| Mention role on new event | — | Choose a Discord role. |
Discord setup and troubleshooting
BotDen prepares the invite permission request automatically from your enabled modules and saved commands/events. Use the invite generated by BotDen.
If the feature does not work after saving and deploying, see troubleshooting for intents, existing-server permissions, channel access, and role order.