How to post to a Discord channel from n8n

To post to a Discord channel from n8n, paste the channel's webhook URL into PostWire once, add the community node 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).

  1. 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).

  2. 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.

  3. 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.

  4. 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_… (the X-API-Key header also works). Keep it server-side.

  5. 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.

  6. 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.

  7. Or one HTTP Request node

    POST to the REST API with header Authorization: Bearer pw_live_…. per_platform.discord.text is the message; photo_url or video_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 }}"
    }
  8. Read the result, or schedule it

    The result lists Discord with ok and 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 (or POST /api/schedule with run_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.

RouteHow it plugs into n8nEach network's text, written in the stepFree to start
PostWireThe node n8n-nodes-postwire (Discord under Networks), or an HTTP Request, with a channel webhookYes — Smart Distribute writes the Discord, Telegram and Bluesky versions from one ideaFree plan: 10 posts a month
n8n's Discord nodeBuilt in: Message → Send, with a webhook, bot or OAuth2 credentialThe message you write, for DiscordPart of n8n
Upload-PostIts community node with platform[]=discord and a channel webhook, then poll the statusNot listed on its n8n Discord pageFree 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.
Sources, all read on Oct 28, 2026:

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.