Slack

Posts a message to a Slack channel, through an incoming webhook or a bot token.

Fields

FieldTypeRequiredWhat it does
webhookUrlstringAn incoming webhook on hooks.slack.com. The channel is fixed when the webhook is made, so no channel is needed. Keep it in a flow variable: {{variables.SLACK_HOOK}}.
botTokenstringA bot token ("xoxb-…") for chat.postMessage, used when there is no webhook. Keep it in a flow variable. The bot needs chat:write and has to be invited to the channel.
channelstringRequired with a bot token: #general or a channel id like C0123456789.
textstringyesThe message, may contain {{expressions}}. At most 40000 characters.
threadTsstringReply inside a thread, named by its timestamp, like 1712345678.000100.
replyBroadcastbooleanShow a threaded reply in the channel as well. Only with threadTs.
unfurlbooleanSet false to stop Slack expanding link previews.

Output

ok, way (webhook or api), channel, ts, text

Notes

Give either webhookUrl or botToken; with both, the webhook wins. chat.postMessage answers 200 even when it refuses, so a refusal ("not_in_channel", "channel_not_found") arrives as a node failure with the reason in plain words. Neither the token nor the webhook address appears in an error.