Slack Send Message

Sends messages to Slack channels or threads from a workflow. Use it for notifications, alerts, bot replies, and any programmatic messaging in Slack.

Requirements

This plugin requires a Slack bot token:

  1. Create a Slack App at api.slack.com/apps
  2. Add the chat:write OAuth scope
  3. Install the app to your workspace
  4. Add SLACK_BOT_TOKEN on the Env Vars page

Output

HandleTypeDescription
resultobjectSlack message send result

The result (accessed as {{ slack_message.* }}) shape:

FieldTypeDescription
successbooleanWhether the message was sent successfully
message_tsstringTimestamp of the sent message (use as thread_ts for replies)
channelstringChannel ID where the message was posted
errorstringError message if success is false

Settings

SettingTypeDescription
channelstringChannel ID (e.g., C01234ABCDE) or name (e.g., #general). Supports {{ }} bindings.
textstringMessage text content. Supports {{ }} bindings.
blocksJSONOptional Block Kit JSON for rich formatting. Supports {{ }} bindings.
thread_tsstringThread timestamp to reply in a thread. Supports {{ }} bindings.

Authentication

Env VarDescription
SLACK_BOT_TOKENBot User OAuth Token (xoxb-...) with chat:write scope

Example

Send a deployment alert to #alerts when a webhook fires:

  • Channel: #alerts
  • Text: Deployment succeeded for {{ webhook.body.service }} at {{ webhook.body.timestamp }}

Reply in a thread after a Slack Trigger:

  • Channel: {{ slack.channel }}
  • Text: Got it! Processing your request...
  • Thread Timestamp: {{ slack.timestamp }}

Block Kit

Use the Block Kit JSON field to send rich messages with sections, buttons, and images. Pass a valid Block Kit blocks array:

[
  {
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "*Deployment succeeded*\nService: `api-gateway`"
    }
  }
]

When blocks is provided, it takes priority over plain text for message formatting.

AI Agent Tool

Connect this node to an AI Agent as a tool. The agent can send Slack notifications on your behalf — for example, "notify #alerts that deployment succeeded" — using dynamic values from the conversation context.

Common Gotchas

  • Channel access: The bot must be invited to the channel before it can post. Use /invite @your-bot in the channel.
  • Thread replies: Set thread_ts to the parent message's timestamp. Use {{ slack.timestamp }} from a Slack Trigger to reply in the same thread.
  • Check slack_message.success: The node does not automatically stop execution on failure. Connect the On Error branch or add an If node to handle failures.
  • Missing SLACK_BOT_TOKEN: The node fails at runtime with an authentication error if the env var is not set.

See Also

On this page