Execute Webhook
discord.execute_webhook
ActionChat & messagingconnection required
Calls the Discord API with the connection's credentials.
Post to a Discord webhook URL — the full-surface send that needs no bot.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Discord
- Secret shape
- the bot token (sent as "Authorization: Bot <token>") for every op except discord.execute_webhook, whose secret is the webhook URL
- Resolved by
- config.connection_id, else node.connection_id
Configuration
9 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
content Message text, up to 2000 characters. Supports {{ }} expressions. | string | No | — | ≤ 2000 characters | — |
embeds Discord embeds as a JSON array of at most 10 embed objects, each with any of title, description, url, color, footer, image, author and fields. | array | No | — | array of object | — |
username Override the webhook's display name for this message. | string | No | — | — | — |
avatar_url Override the webhook's avatar for this message. | string | No | — | url format | — |
tts Read the message aloud for members with TTS on. | boolean | No | — | — | — |
allowed_mentions Which mentions may actually ping, as a JSON object — {"parse": []} suppresses every @everyone and @role ping in the message. | object | No | — | — | {"parse":[]} |
thread_id Post into this existing thread in the webhook's channel. | string | No | — | — | — |
thread_name In a forum or media channel, create a thread with this name. | string | No | — | ≤ 100 characters | — |
wait Wait for Discord to confirm and return the created message. | boolean | No | true | — | — |
- At least one of content, embeds must be set.
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"allowed_mentions": {
"parse": []
},
"wait": true
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
ok True once Discord accepted the post. | boolean | true |
id Id of the created message (only when 'wait' is on). | string | — |
channel_id Channel the message landed in. | string | — |
content The message text, as Discord stored it. | string | — |
timestamp When the message was posted (ISO-8601). | string | — |
{
"channel_id": "",
"content": "",
"id": "",
"ok": true,
"timestamp": ""
}Notes
- This is the no-bot path: the connection's secret is a webhook URL (Channel → Integrations → Webhooks → Copy Webhook URL) and the token inside that URL is the whole credential — no bot, no invite, no permissions, and it can only post to the one channel it was made in.
- discord.send_message is the older, smaller version of this op and stays unchanged; use this one for threads, avatars, TTS or mention control.
- With 'wait' off Discord answers 204 and the output carries only ok.
See Execute Webhook run in a workflow.
In a technical demo we add the Discord connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.