How to post to a Discord channel from n8n
n8n-nodes-postwire and use Post → Publish with Networks set to Discord, or send one HTTP Request to https://postwire.io/api/post. The workflow posts an announcement of up to 2,000 characters, Discord's limit, with an image or a video link that Discord previews, and needs no bot to host. The same node can send that news to Telegram, Bluesky, LinkedIn or any of PostWire's other networks in the same step, each with its own text.n8n also has its own Discord node, which sends a message to Discord through a webhook, a bot or OAuth2. The PostWire node is for the workflow that announces one thing everywhere: a release on GitHub, a new article in an RSS feed, a new YouTube video, a live stream starting.
Updated . Written from PostWire's own code; vendor prices read on Oct 28, 2026. Live networks: TikTok, Instagram, YouTube, LinkedIn (personal profiles), Facebook Pages, Bluesky, Mastodon, Telegram, Discord, and X on paid plans.
Post to a Discord channel from n8n, step by step
About six minutes, on the free plan. You need permission to manage the Discord channel (server owner or admin).
- Create a free PostWire account
Open postwire.io/dashboard.html, type your email and press Create my free account. PostWire emails you a link to confirm the address; connecting accounts and publishing unlock once it is confirmed. No password and no card (free plan: 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month), 2 networks per post, 3 scheduled posts at a time — every network connects free, no card).
- Copy the channel's webhook URL
In Discord, open the channel → Edit Channel → Integrations → Webhooks → New Webhook → Copy Webhook URL. The link looks like
https://discord.com/api/webhooks/<id>/<token>; its name and avatar are what members see as the author of the posts. - Connect Discord
In the dashboard open Accounts, press Connect on Discord and paste the link. There is no sign-in screen. PostWire checks that it is a Discord webhook and asks Discord whether it exists before saving it, so a link copied without its end is refused right there.
- Copy your API key
In the dashboard, open API & MCP and press Copy key on the API key card. It is sent as
Authorization: Bearer pw_live_…(theX-API-Keyheader also works). Keep it server-side. - Install the PostWire node
In n8n: Settings → Community nodes → Install, enter
n8n-nodes-postwire(version 0.4.3 on npm on Oct 28, 2026), then add a PostWire API credential with the key and press Test, which checks the key at once. Where community nodes cannot be installed, the HTTP Request node further down does the same job. - Configure Post → Publish
Networks: Discord (add Telegram, Bluesky or LinkedIn to send the news there too). Content: Smart Distribute: Write a Native Post per Network, with the Idea from the previous node (e.g.
{{ $json.name }} is out: {{ $json.body }}): the Discord draft is short and friendly, in a community tone, emojis and links welcome, under 2,000 characters. To send your own words, set Content to Same Text on Every Network. Media: None, or URL / Binary File for an image or a video. Options → Dry Run checks everything without publishing. - Or one HTTP Request node
POST to the REST API with header
Authorization: Bearer pw_live_….per_platform.discord.textis the message;photo_urlorvideo_url(a public https link) goes into the message, where Discord shows its preview:POST https://postwire.io/api/post Authorization: Bearer pw_live_… Content-Type: application/json { "platforms": ["discord", "telegram"], "per_platform": { "discord": { "text": "🚀 {{ $json.name }} is out!\n\n{{ $json.highlights }}\n\nRelease notes: {{ $json.html_url }}" }, "telegram": { "text": "{{ $json.name }} is out.\n\n{{ $json.highlights }}\n\n{{ $json.html_url }}" } }, "idempotency_key": "release-{{ $json.id }}" } - Read the result, or schedule it
The result lists Discord with
okand the id of the message; if Discord refuses it, the result carries what happened and the fix. To publish later, use Post → Schedule with When: At a Specific Time (up to 365 days ahead) or In the Next Free Queue Slot (orPOST /api/schedulewithrun_at). A scheduled post is sent by PostWire's servers at its time, whether or not n8n is running then.
With a GitHub or RSS trigger, put the release id or the item's guid in Options → Idempotency Key (or idempotency_key): PostWire refuses a second post with the same key for 24 hours, so a retried execution announces once. A whole workflow, from the trigger to the post, is laid out in n8n social media automation.
Three ways to post to Discord from n8n
n8n's own documentation and each vendor's page, read on Oct 28, 2026.
| Route | How it plugs into n8n | Each network's text, written in the step | Free to start |
|---|---|---|---|
| PostWire | The node n8n-nodes-postwire (Discord under Networks), or an HTTP Request, with a channel webhook | Yes — Smart Distribute writes the Discord, Telegram and Bluesky versions from one idea | Free plan: 10 posts a month |
| n8n's Discord node | Built in: Message → Send, with a webhook, bot or OAuth2 credential | The message you write, for Discord | Part of n8n |
| Upload-Post | Its community node with platform[]=discord and a channel webhook, then poll the status | Not listed on its n8n Discord page | Free plan: 10 uploads a month |
Checked on Oct 28, 2026 (2026-10-28) on each vendor's own pricing or docs page, linked in the first column and below. Monthly billing in USD unless noted. "Not listed" means we could not find it on their page, not that it is missing.
Where PostWire is ahead
- One node, every network. The step that announces on Discord can post to Telegram, Bluesky, Mastodon, LinkedIn, Facebook Pages, TikTok, Instagram, YouTube, and X on paid plans. n8n's Discord node posts to Discord.
- Each network's text written in the node from the previous step's data: a casual Discord announcement, a direct Telegram message, a 300-character Bluesky post.
- The webhook is checked before it is saved, and a deleted one shows up as "reconnect" in the dashboard before a scheduled post is due.
- Scheduling run by PostWire: a post scheduled from n8n goes out at its time from PostWire's servers, even if n8n is down then; the next free queue slot is one option away.
- A result per network, and the PostWire Trigger node to start a workflow when a post lands or fails.
- A retried execution announces once: with the release id as the Idempotency Key, PostWire refuses a second post with that key for 24 hours.
- n8n docs — Discord node (Message → Send, channels, members): docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.discord/
- n8n docs — Discord credentials (Bot, OAuth2 or Webhook): docs.n8n.io/integrations/builtin/credentials/discord/
- Upload-Post — n8n Discord upload (its community node with platform[]=discord, a channel webhook, poll the status): www.upload-post.com/n8n/discord-upload/
- Upload-Post plans (llms-full.txt: Free 10 uploads a month; Basic $24 a month): www.upload-post.com/llms-full.txt
- Discord developer docs — Execute Webhook (content up to 2000 characters): discord.com/developers/docs/resources/webhook
A Discord webhook, checked before the first post
- No bot to create or host: a webhook belongs to one channel, and that is the only place PostWire can post. It cannot read messages, see members or act anywhere else on the server.
- Checked when you connect it: the link has to have the shape of a Discord webhook, and PostWire asks Discord whether it exists before saving it. In an audit on Oct 2, 2026 a webhook copied without the end of its token had been saved as connected and failed only at the first post; since then it is refused on the connect page.
- Watched afterwards: a webhook someone deletes in Discord shows up in the dashboard as "reconnect" before a scheduled post is due, not as a failed post.
- 2,000 characters per message, Discord's limit for a webhook message (Discord docs). A longer text is cut there, so for a long changelog post a summary with a link.
Source: PostWire's Discord publisher and connection checks, read Oct 28, 2026.
One announcement, every community
A release, a new video or a new article usually goes to more than one place. With the PostWire node, the step that posts to Discord can post to Telegram, Bluesky, Mastodon, LinkedIn and the rest in the same execution, each with its own text: a casual Discord announcement with an emoji, a direct Telegram message, a 300-character Bluesky post. On the free plan one post reaches 2 networks; from Starter ($9 a month) every connected network.
The result has one line per network, so the next node can branch on the one that failed, and the PostWire Trigger node starts another workflow when a post lands or fails.
What it does not do
PostWire posts and schedules messages in the one channel each webhook belongs to. An image or a video goes into the message as its link, which Discord previews; it is not uploaded as an attachment. It does not read messages, reply, react, create threads or manage channels, members or roles, and it does not use a bot account. For those, n8n's own Discord node works with a bot or OAuth2.
Questions people ask
How do I post to a Discord channel from n8n?
Copy the channel's webhook URL (Edit Channel → Integrations → Webhooks → New Webhook → Copy Webhook URL), connect it in PostWire, install n8n-nodes-postwire and use Post → Publish with Networks set to Discord. Or send an HTTP Request to https://postwire.io/api/post with "platforms": ["discord"].
Doesn't n8n already have a Discord node?
Yes: n8n's built-in Discord node sends messages with a webhook, a bot or OAuth2, and manages channels and members. The PostWire node is for posting the same announcement to Discord and other networks in one step, each with its own text, with scheduling run by PostWire.
Do I need a Discord bot?
No. PostWire posts through the channel's webhook, so there is no bot to create, invite or host. The webhook's name and avatar appear as the author, and it can only post in its own channel.
How long can a Discord message from n8n be?
Up to 2,000 characters, Discord's limit for a webhook message. Smart Distribute keeps the Discord draft under it; with your own text, keep it shorter or link to the full notes.
Can n8n post an image or a video to Discord?
Yes, by URL or as a binary file from a previous node. It goes into the message as a link, which Discord previews in the channel; it is not uploaded as an attachment.
How do I post a GitHub release to Discord automatically?
Start the workflow with n8n's GitHub Trigger on release events, pass the release name and notes as the Idea of the PostWire node with Networks set to Discord (and Telegram or Bluesky if you like), and put the release id in Options → Idempotency Key so a retry announces once.
How much does it cost?
Discord, the API and the n8n node are on the free plan: 1 business, 10 posts a month, 5 AI drafts a day, 2 networks per post, no card. Starter is $9 a month for 3 businesses and Pro $29 for 10, with every network in each post; paid plans have a 14-day refund.
Try it on one business, free.
The free plan is 1 business, 10 posts a month, 5 AI drafts a day (about 20 a month) and 2 networks per post — every network connects free, no card, no time limit. Paid plans start at $9 a month and have a 14-day refund; Pro can be tried free for 7 days and Agency for 14, with a card at checkout and nothing charged that day.