Discord

The Discord node sends a message to a Discord channel via an Incoming Webhook.

The Discord node sends a message to a Discord channel via an Incoming Webhook. Use it for alerts, workflow notifications, bot-like replies, and error reporting.

Overview

PropertyValue
Inputs1
Outputs1
Output$nodeLabel.status, $nodeLabel.response, $nodeLabel.message, $nodeLabel.username, $nodeLabel.avatar_url

Parameters

ParameterTypeDescription
credentialIdUUIDdiscord credential containing the incoming webhook URL
messageexpressionOutgoing message text. Supports expressions.
usernameexpressionOptional display name override for this message
avatarUrlexpressionOptional avatar URL override for this message

Setup

  1. Create a Discord Webhook credential
  2. Add the Discord node to your workflow
  3. Select the credential
  4. Set message to the outgoing text or a template built from upstream data
  5. Optionally override the display username and avatarUrl

Example

{
  "type": "discord",
  "data": {
    "label": "notifyDiscord",
    "credentialId": "discord-credential-uuid",
    "message": "Workflow completed: $input.text",
    "username": "Heym Bot",
    "avatarUrl": "https://example.com/heym.png"
  }
}

Output Fields

ExpressionDescription
$nodeLabel.statusHTTP status code returned by Discord, usually 204 on success
$nodeLabel.responseRaw response body returned by the Discord webhook
$nodeLabel.messageMessage text that Heym sent
$nodeLabel.usernameUsername sent with the webhook, if provided
$nodeLabel.avatar_urlAvatar URL sent with the webhook, if provided

Common Patterns

  • Use it alongside Discord Trigger when you want an extra channel post beyond the interaction reply
  • Send failure notices from Error Handler
  • Post summaries generated by LLM or Agent

Egress Safety

  • The webhook URL stored in the credential must use http:// or https:// and resolve only to public addresses. Loopback, private, link-local, multicast, and cloud-metadata destinations are blocked.
  • Heym validates the resolved addresses and pins the connection target before sending, so a DNS answer cannot move the request onto an internal address after the check. Environment proxies are disabled while the guard is active, and redirects are not followed.
  • Deployments that post to an internal webhook receiver can set HEYM_HTTP_ALLOW_PRIVATE_URLS=true on a trusted self-hosted instance. Keep the default on hosted or multi-tenant deployments.

Upgrade note for v0.0.109: this check is new for Discord. A credential whose webhook URL points at loopback or a private address is refused unless the setting above is enabled.