A webhook is a URL that posts a message into one channel. No bot, no token, no hosting, no intents. If all you need is «something happened, tell Discord», this is the answer and it takes two minutes.
Webhook or bot?
| You want to | Use |
|---|---|
| Post an alert when a build finishes | A webhook |
| Relay server events into a channel | A webhook |
| Respond to a slash command | A bot |
| React to what people say | A bot, with intents |
| Post as several different names and avatars | A webhook — this is something bots cannot do easily |
| Manage roles or moderate | A bot |
What to do
- Create it in the channel settings
Integrations → Webhooks → New Webhook. Name it and choose the channel. That is the whole setup.
- Copy the URL
This is the credential. Anyone with it can post to that channel as that webhook, which is the next point.
- Send it a JSON message
A POST with a
contentfield, or anembedsarray. Every language can do this in three lines, and most tools that need to notify something already support webhook URLs directly. - Set the name and avatar per message if you want
A webhook can post under a different name each time. That is how relay bridges show the original author's name on each message.
Anyone who has it can post anything into that channel, indefinitely, with any name and avatar. Do not commit it to a public repository and do not paste it in a channel. If one leaks, delete the webhook in the channel settings — that invalidates the URL immediately, and creating a new one takes seconds.
They are stricter than a bot's, and a script that posts in a loop will hit them. If you are sending more than a message every few seconds, either batch the content into one message or you have outgrown webhooks and want a bot.
Post to the URL from the command line or a small script and see the message appear in the channel with the name you set.