Skip to main content
Integrations
2 min read

Discord webhooks

Sending platform events to a Discord channel via incoming webhook.

Last updated May 12, 2026

When to use Discord webhooks

If your team coordinates in Discord rather than Slack, Discord's incoming webhooks give you the same posting capability without a full bot OAuth dance. Best for: agencies running client comms in shared Discord servers, gaming / community companies, founder team chats.

What gets posted

The same event set as Slack:

  • Daily digest.
  • Audit completion.
  • Approval requests.
  • Mention alerts.
  • Publish success / failure.

Per-event toggles at Settings → Integrations → Discord → Routing.

Setting up

  1. In Discord, open the channel you want events to post in.
  2. Channel settings → Integrations → Webhooks → New Webhook.
  3. Name it "AI Domination."
  4. Copy the webhook URL.
  5. In AI Domination, Settings → Integrations → Discord → Add webhook URL.
  6. Click Test post — a sample message should appear in the channel.

Per-channel routing

You can register multiple webhook URLs (one per channel). Then for each event type, pick the destination webhook.

Message format

Posts use Discord's embed format:

  • Title — the event headline ("Audit complete: Acme Inc.").
  • Description — a one-paragraph summary.
  • Fields — key/value pairs for scores, deltas, links.
  • Color — green for success, amber for warnings, red for failures.
  • Footer — timestamp and a link back to the relevant in-app view.

Mentions and pings

By default, Discord posts do NOT @-mention users (avoids notification fatigue). To ping a specific role:

  • Settings → Integrations → Discord → Mentions.
  • Map event types to Discord role IDs.

Example: ping @content-team on approval requests, @on-call on publish failures.

To get a role ID, enable Developer Mode in Discord (User Settings → Advanced), then right-click any role and Copy ID.

Rate limits

Discord rate-limits incoming webhooks at 30 requests per minute per channel. We respect their headers and queue if needed. A reasonable event volume is well under this.

Security

Webhook URLs are bearer tokens — anyone with the URL can post to your channel. We store them encrypted with AES-256-GCM. If a URL leaks:

  1. Rotate immediately in Discord (delete + recreate).
  2. Update the URL in Settings → Integrations → Discord.

We don't request any Discord scopes beyond posting via the webhook. No access to messages, no DMs, no member list.

Removing the integration

Settings → Integrations → Discord → Disconnect. Deletes the URLs from our side. To fully clean up, also delete the webhook in Discord (otherwise the URL exists but goes unused).

Limitations

  • Read-only. Discord webhooks are one-way. You can't approve / reject from Discord like you can from Slack. For interactive workflows, use Slack or the platform's web UI.
  • No threaded replies. Each event is a top-level message; we can't reply in a thread the way the Slack app can.
  • Single workspace. A webhook posts to one Discord server. To cover multiple servers, register a webhook per server.

Use with self-hosted Discord alternatives

The same incoming-webhook payload works with Mattermost, Rocket.Chat, and other Slack/Discord-compatible self-hosted tools that support Slack-formatted incoming webhooks. Drop the URL in the Generic webhook field instead — see Generic webhooks.

Was this article helpful?

Related docs

Discord webhooks · AI Domination