Webhook Guides

Send Webhook Events to Discord Channels

A webhook to Discord workflow turns selected provider or internal events into Discord channel messages through a first-class FastHook Discord Action. It works well for incident alerts, release notes, community operations, support handoffs, and lightweight operational feeds.

Configure a Discord webhook URL, message template, optional username, avatar, embeds, components, polls, thread routing, and allowed mentions policy on the destination. Add filters before the destination so Discord receives useful messages instead of every raw event.

Discord source vs Discord Action

IntentFastHook patternPage
Receive Discord interaction callbacksDiscord source with Ed25519 signature verificationDiscord webhooks guide
Send provider events into a Discord channelDiscord Action using Discord execute webhookThis page

Discord notification use cases

  • Alert an engineering or support channel when a webhook delivery fails.
  • Post deployment, release, or workflow events from GitHub into a Discord server.
  • Notify community moderators about payment, signup, or moderation events.
  • Send selected Stripe, Shopify, GitHub, or custom events to a channel with readable templates.
  • Replay missed notifications after fixing a Discord webhook URL or embed template.

Add the Discord Action

Connect Discord, add the Discord send-message Action to the sequential Workflow, select the target server and channel, and map message fields from the Source or previous step.

Workflow step
Provider Source
  -> filter or transform
  -> discord.send_message

Shape the Discord message

Discord accepts content, embeds, components, polls, and file uploads from public HTTPS URLs. Existing threads use thread_id_template; forum and media channels can create a new thread with thread_name_template. Configure only one thread field.

Discord message template
{
  "content_template": "Payment failed for {{payload.customer.email}}",
  "embeds_template": "[{\"title\":\"Payment failed\",\"fields\":[{\"name\":\"Invoice\",\"value\":\"{{payload.invoice_id}}\"}]}]",
  "components_template": "[{\"type\":1,\"components\":[{\"type\":2,\"style\":5,\"label\":\"Open invoice\",\"url\":\"https://example.com/invoices/{{payload.invoice_id}}\"}]}]",
  "files_template": "[{\"url\":\"{{payload.receipt_url}}\",\"filename\":\"receipt.pdf\"}]",
  "suppress_notifications": true,
  "allowed_mentions_parse": []
}

Route only Discord-worthy events

  • Send failures, approvals, reviews, releases, and incidents to Discord.
  • Avoid sending every successful webhook unless the channel is intentionally a live event feed.
  • Filter by provider event type, environment, severity, customer tier, or payload fields before delivery.
  • Use a staging Discord Action before replaying production failures into a real channel.
  • Keep allowed mentions empty unless pinging users, roles, or everyone is intentional.

Debug Discord delivery

  • 401, 403, or 404 usually means the Discord webhook URL is missing, revoked, incomplete, or belongs to another channel.
  • Embed failures usually mean the rendered embeds_template is not valid Discord embed JSON.
  • Unexpected pings usually mean allowed_mentions_parse permits users, roles, or everyone.
  • Forum or media channel failures usually mean neither thread_id_template nor thread_name_template rendered a valid value.
  • Components and poll failures usually mean the rendered JSON does not match Discord's request schema.
  • Rate limiting should be handled with pacing and narrow replay windows.
  • Inspect the FastHook destination attempt response before editing templates or replaying a batch.

Retries, replay, and logs

Discord messages are useful for team awareness, but FastHook remains the delivery record. Each Discord attempt keeps response status, latency, rendered delivery evidence, and retry context, so operators can fix the destination before replaying important missed notifications.

  • Retry temporary Discord API or network failures with backoff.
  • Replay only action-worthy missed notifications after fixing URL or embed configuration.
  • Use rate limits so replay does not flood active channels.
  • Keep high-volume event archives in FastHook, object storage, or Sheets rather than Discord history.

Related guides