Community · n8n

Instantly Forward Any Webhook Event as a Discord Message to Your Server

Receive any incoming webhook payload and automatically post a formatted message to a Discord channel. Perfect for server admins who want real-time alerts from external apps without writing code.

difficulty Beginnersetup 20 minresult Every time your webhook URL receives data, a clean message appears in your chosen Discord channel within seconds.
  1. 1

    Create a Webhook Trigger in n8n

    Add a Webhook node as your trigger. Set the HTTP Method to POST and note the generated webhook URL — this is the address you will give to any external service (GitHub, Stripe, a form tool, etc.) that should send events to Discord. Set Response Mode to 'Last Node' so the caller gets a confirmation.

  2. 2

    Extract and Format the Payload

    Add a Set node connected to the Webhook node. Create a new field called discordMessage with a value like: New event received: {{ $json.body.event ?? 'unknown' }} — {{ $json.body.message ?? JSON.stringify($json.body) }}. This turns the raw payload into a readable sentence. Adjust the field names to match whatever your external service actually sends.

  3. 3

    Send the Message to Discord

    Add an HTTP Request node connected to the Set node. Set Method to POST and paste your Discord channel webhook URL into the URL field (get this from Discord under Channel Settings > Integrations > Webhooks). Set Body Content Type to JSON and add one body parameter: key content, value {{ $json.discordMessage }}. This is the text that will appear in your Discord channel.

Frequently asked questions

How do I get a Discord webhook URL?

Open Discord, right-click the channel you want messages in, choose Edit Channel, go to Integrations, click Webhooks, then Create Webhook. Copy the URL and paste it into the HTTP Request node's URL field in n8n.

Can I filter which events get posted to Discord?

Yes. Add an IF node between the Set node and the HTTP Request node. Set a condition such as `$json.body.event` equals the event name you care about. Connect the TRUE branch to the HTTP Request node and leave the FALSE branch empty so unmatched events are silently ignored.

What if I want richer Discord messages with embeds or colors?

Instead of sending a plain `content` field, change the HTTP Request body to include an `embeds` array following Discord's embed format. For example, add a `title`, `description`, and `color` field inside the embed object. You can build these values using the Set node before the HTTP Request.

About this recipe. Recipes on FlowRecipesHub are written for business owners, not developers, and are tested before publishing — how recipes get made. Some ingredient links are affiliate links that cost you nothing — full disclosure.