Discord Webhooks Explained: Setup, Payloads and Limits
A webhook is a URL that posts messages into one Discord channel. Anything that can send a web request, from a script to a store or a monitoring service, can use one, with no bot and no login.
Creating a webhook
You need the Manage Webhooks permission. Open the channel’s settings (Edit Channel), go to Integrations, then Webhooks, and choose New Webhook. Give it a name and an avatar, then press Copy Webhook URL. Server Settings → Integrations lists every webhook in the server in one place.
Keep the URL secret
The URL contains the webhook’s token, and anyone who has it can post as the webhook, rename it, or delete it. Keep it out of public code, screenshots, and anything that runs in a visitor’s browser. If it leaks, delete the webhook and make a new one, since the token cannot be changed.
What you can send
Post JSON to the URL with at least one of content (up to 2,000 characters), embeds (up to 10), a file, or a poll. username and avatar_url change the name and picture for that one message, and allowed_mentions controls who actually gets pinged: {"parse": []} switches every ping off.
The Discord Webhook Sender builds and sends the payload from your browser, and the Discord Embed Builder designs the embeds to go in it.
Forum channels and threads
A webhook in a forum or media channel has to be told where to post. Add thread_name to the JSON to start a new post with that title, or add ?thread_id= and the thread’s ID to the URL to reply in an existing one. The same thread_id works for threads in an ordinary text channel.
Editing, silent messages and rate limits
Add ?wait=true to the URL and Discord answers with the message it created, ID included, which you need to edit or delete that message later through the same webhook. Setting flags to 4096 posts silently, with no push notification.
Send too fast and Discord answers with a 429 and a retry_after value in seconds. Wait that long before the next request instead of retrying straight away, since a flood of rejected requests can get your address blocked from the API for a while.
What a webhook cannot do
Webhooks only post. They cannot read messages, add reactions, answer slash commands, or send buttons that do something; all of that takes a bot. Names cannot contain “clyde” or “discord” and top out at 80 characters.
FAQ
Are Discord webhooks free?+
Yes. Anyone with the Manage Webhooks permission can create them, with no bot, app, or Nitro needed.
Can a Discord webhook accept Slack or GitHub payloads?+
Yes. Add /slack or /github to the end of the webhook URL and Discord accepts Slack-style messages or GitHub event deliveries.
Try the tools
All guides →Discord Webhook Sender
Send a message or embed to a Discord webhook straight from your browser.
Launch tool →Discord Embed Builder
Build embeds visually with a live preview, then send them to a webhook or copy the JSON.
Launch tool →Discord Message Splitter
Split long text into chunks that fit Discord’s 2000-character limit.
Launch tool →