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.
This plugin requires a Slack bot token:
- Create a Slack App at api.slack.com/apps
- Add the
chat:writeOAuth scope - Install the app to your workspace
- Add
SLACK_BOT_TOKENon the Env Vars page
| Handle | Type | Description |
|---|---|---|
result | object | Slack message send result |
The result (accessed as {{ slack_message.* }}) shape:
| Field | Type | Description |
|---|---|---|
success | boolean | Whether the message was sent successfully |
message_ts | string | Timestamp of the sent message (use as thread_ts for replies) |
channel | string | Channel ID where the message was posted |
error | string | Error message if success is false |
| Setting | Type | Description |
|---|---|---|
channel | string | Channel ID (e.g., C01234ABCDE) or name (e.g., #general). Supports {{ }} bindings. |
text | string | Message text content. Supports {{ }} bindings. |
blocks | JSON | Optional Block Kit JSON for rich formatting. Supports {{ }} bindings. |
thread_ts | string | Thread timestamp to reply in a thread. Supports {{ }} bindings. |
| Env Var | Description |
|---|---|
SLACK_BOT_TOKEN | Bot User OAuth Token (xoxb-...) with chat:write scope |
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 }}
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.
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.
- Channel access: The bot must be invited to the channel before it can post. Use
/invite @your-botin the channel. - Thread replies: Set
thread_tsto 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.
- Slack Trigger — receive Slack events
- AI Agent — use Slack Send Message as an agent tool
- Send Email — email notifications as an alternative
- Environment Variables — store your Slack bot token
