- Home
- Resources
- Integrations
- Discord
Discord n8n integrationAutomate Discord with n8n.
Your community lives on Discord, your automations live elsewhere. The Discord n8n integration covers 14 operations over 3 resources: channels, messages and members. No trigger node exists on the Discord side, so a workflow starts elsewhere and Discord is where it posts, reads or grants a role.
Verified Trustpilot reviews · AI, automation & growth agency
What can the Discord n8n integration actually do?
The Discord n8n integration is the Discord node shipped with n8n, driven by a workflow. It authenticates with a bot token, an OAuth2 app or a Discord webhook URL, then works on three resources: Channel, Message and Member. Fourteen operations cover creating and editing channels, sending and reading messages, reacting with an emoji, listing members and granting or revoking a role.
Start with the alert nobody has to refresh. A Schedule Trigger pulls a value or a row from Google Sheets, a filter keeps only what crosses the threshold, and message.send posts the result in the channel that cares about it. The same alert sent to Slack or Telegram is built the same way in n8n; on Discord it lands where the community already sits, and a role mention pings only the people on duty.
Second shape: moderation with a human in the loop. A workflow reads new posts with message.getAll, a text classifier scores them, and the doubtful ones go to a moderator through message.sendAndWait. The run stops on an approval button, and only a Yes calls message.deleteMessage. No message disappears on a model's word alone, and the decision stays visible in the channel where it was taken.
Third shape: access that follows the money. A payment webhook fires member.roleAdd to unlock the paid channels, the end of a subscription fires member.roleRemove, and member.getAll exports the roster when someone wants to check who still belongs there. Channels follow the same lifecycle: channel.create opens a space for a project, channel.update slows it down when it gets loud, channel.deleteChannel closes it once the archive is done.
Two things the node will not do for you. Nothing listens to Discord: there is no Discord trigger in n8n, so a message posted on the server never starts a run by itself, and the entry point is a Schedule Trigger, the n8n Webhook node called by a third-party service, or another app's trigger. And embeds stop at the fields the node exposes; a footer or custom fields go through Input Method set to Raw JSON, or through the HTTP Request node aimed at the Discord API with the very same credential. That fallback also answers any endpoint the node does not cover.
Still weighing platforms or still learning the tool? The n8n review takes the hosting and cost questions apart, and the n8n training walks through building this kind of workflow end to end.
How do you connect Discord to n8n?
- 01
Create the app and generate a bot token
In the Discord developer portal, create an application, enter a Name and select Create. Open Bot in the left menu, then Reset Token under Token to generate the bot token, and copy it. Under Privileged Gateway Intents, n8n recommends turning on SERVER MEMBERS INTENT, required for the events listed under GUILD_MEMBERS.
- 02
Set the scopes and permissions, then install the bot
Guild Install is the installation context for a bot added to a server, the common case with n8n. In Default Install Settings, select the
applications.commandsandbotscopes. On Bot Permissions, n8n recommends Send Messages, Manage Channels, Manage Roles, Read Message History and Add Reactions. Then open the install link and select Add to server. - 03
Create the credential in n8n
A credential lives in the n8n Credentials menu and serves every workflow. The bot method asks for the Bot Token alone. OAuth2 adds a Client ID, a Client Secret, the Authentication placement (header or body) and a bot token; the OAuth Redirect URL from n8n goes into the Redirects of the Discord app. The webhook method needs a Webhook URL.
What the Discord node does, operation by operation
The Discord node exposes 14 operations across 3 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Create | Get | Get Many | Update | Delete | Delete | React with Emoji | Role Add | Role Remove | Send | Send and Wait for Response |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Channel | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||
| Message | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |||||
| Member | ✓ | ✓ | ✓ |
Operations index
Channel
5 operationsCreate a channel
channel.createWhat you see in n8n
Notes & use cases
Creates a channel in the chosen server and returns it, so the next node can already post in it.
Key parameters
- Server: the server the bot was installed on, picked from the dropdown or by ID.
- Name: the channel name, usually lowercase with hyphens (
new-channel). - Type:
0for a text channel,2for voice,4for a category. - Parent Category: optional, files the channel under an existing category instead of leaving it loose.
- Topic: optional description of the channel, up to 1024 characters.
Delete a channel
channel.deleteChannelWhat you see in n8n
Notes & use cases
Removes one channel from a server, which makes this the closing step of a lifecycle workflow rather than a routine action.
Key parameters
- Channel: selected by name, URL or ID, so an ID carried over from a previous node works as well as a manual pick.
- Server: the server that holds it, since the same channel name can exist in several.
Get a channel
channel.getWhat you see in n8n
Notes & use cases
Returns a single channel with its settings. Useful when a workflow needs to know what it is about to touch, or needs the channel data for a later node.
Key parameters
- Channel: the channel to read, chosen from the list or resolved from an ID or a URL.
- Server: the server it belongs to.
Get many channels
channel.getAllWhat you see in n8n
Notes & use cases
Retrieves the channels of a server, one item per channel, which is how a workflow maps a server before acting on it.
Key parameters
- Server: the server to scan.
- Return All: enabled, n8n chains the API pages until every channel is out; disabled, Limit sets the maximum number of channels returned.
- Filter by Type: keeps only text (
0), voice (2) or category (4) channels.
Update a channel
channel.updateWhat you see in n8n
Notes & use cases
Applies new settings to an existing channel, field by field, without recreating it.
Key parameters
- Channel: the channel being edited.
- Name: fill it only to rename the channel; left empty, the current name stays.
- Rate Limit Per User: the number of seconds a member has to wait before sending another message, the slow mode of a channel under pressure.
- User Limit: the maximum number of members in a voice channel,
0meaning no limit, like Bitrate only relevant there.
Message
6 operationsDelete a message
message.deleteMessageWhat you see in n8n
Notes & use cases
Deletes one message in a channel, identified by its ID.
Key parameters
- Message ID: the numeric ID of the message (
1057576506244726804), copied with developer mode on or carried by the node that read the message. - Channel: where that message was posted.
- Server: the server hosting the channel.
Get a message
message.getWhat you see in n8n
Notes & use cases
Fetches a single message and returns its data, raw by default.
Key parameters
- Message ID: the ID of the message to read.
- Channel and Server: where to look for it.
- Simplify: enabled, the node returns a simplified version of the response instead of the raw payload, which keeps the next nodes readable.
Get many messages
message.getAllWhat you see in n8n
Notes & use cases
Retrieves the latest messages in a channel, one item per message, ready for a summary or an export.
Key parameters
- Channel: the channel to read.
- Return All: enabled, every message the API returns comes through; disabled, Limit caps how many land in the workflow.
- Simplify: trims the response so a summarizing node does not choke on raw fields.
React with an emoji to a message
message.reactWhat you see in n8n
Notes & use cases
Adds a reaction to an existing message. It is the quiet way for a workflow to answer, without adding a post to the channel.
Key parameters
- Emoji: the emoji the bot reacts with, typed into the field.
- Message ID: the message getting the reaction.
- Channel and Server: its location.
Send a message
message.sendWhat you see in n8n
Notes & use cases
Posts a message in a channel, or as a direct message to a member, with optional embeds and files.
Key parameters
- Send To:
channelposts in the channel,usersends a DM to the account chosen in User. - Message: the content, up to 2000 characters; a mention needs an ID, not a display name, in the form
<@USER_ID>. - Embeds: Title, Description, Author, URL and URL Image in the form; Input Method on Raw JSON opens Value for the rest, a footer for instance.
- Message to Reply to: the ID of the message this one answers.
Send message and wait for response
message.sendAndWaitWhat you see in n8n
Notes & use cases
Posts a message, then pauses the execution until someone answers. This is the operation that turns a Discord channel into the approval step of an automation.
Key parameters
- Message: the question being asked, required here.
- Response Type:
approvalputs buttons in the message,freeTextopens a form for a written answer,customFormbuilds a form from the elements you define. - Approval Options: Type of Approval offers Approve Only or Approve and Disapprove, with your own button labels.
- Limit Wait Time: caps how long the node waits before the execution resumes.
Member
3 operationsGet many members
member.getAllWhat you see in n8n
Notes & use cases
Lists the members of a server, with the controls a large community needs to be read in several passes.
Key parameters
- Server: the community to list.
- Return All: enabled, the node walks through every page; disabled, Limit fixes the maximum number of members returned.
- After: the ID of the user after which the next members are returned, the way to resume a long export where it stopped.
- Simplify: returns a lighter version of each member record.
Add a role to a member
member.roleAddWhat you see in n8n
Notes & use cases
Assigns one or several roles to a member. On Discord, that is how access is granted, since permissions and private channels hang off roles. The bot needs the Manage Roles permission n8n recommends.
Key parameters
- Role: the roles to add, ticked in the list read from the server, several at once if needed.
- User: the member receiving them, chosen from the list or resolved from an ID passed by the previous node.
- Server: where the roles and the member live.
Remove a role from a member
member.roleRemoveWhat you see in n8n
Notes & use cases
Takes one or several roles back from a member. Mirror of the previous operation, and the clean way to close an access without kicking anyone out of the server.
Key parameters
- Role: the roles to withdraw, selected the same way as when they were granted.
- User: the member losing them.
- Server: the server where the change applies.
Need help automating Discord with n8n?
A person reads every message.

