Slack Send Message

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

When to Use

Use Slack Send Message when:

  • You need to post notifications or alerts to a Slack channel from a workflow
  • You want to reply in a thread after a Slack Trigger event
  • You need rich Block Kit messages with sections, buttons, or images
  • An AI Agent should send Slack notifications as a tool

Pair with Slack Trigger to receive events and reply in the same channel or thread.

Inputs

HandleTypeDescription
inputanyUpstream data for template expression references in settings bindings.

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
{
  "success": true,
  "message_ts": "1719234567.123456",
  "channel": "C01234ABCDE",
  "error": null
}

Settings

SettingTypeDefaultDescription
channelstringChannel ID (e.g. C01234ABCDE) or name (e.g. #general). Required. Supports template expression bindings.
textcode editorMessage text content. Required. Supports template expression bindings.
blockscode editor (JSON)Optional Block Kit JSON array for rich formatting. When provided, takes priority over plain text. Supports template expression bindings.
thread_tsstringThread timestamp to reply in a thread. Supports template expression bindings.

Required Secrets

Configure on the Env Vars page:

Env VarDescription
SLACK_BOT_TOKENBot User OAuth Token (xoxb-...) with chat:write scope. Create a Slack App at api.slack.com/apps, add the scope, install to your workspace, and copy the token.

Example

Canvas

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

Webhook Trigger → Slack Send Message

Slack Send Message settings:

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

Reply in a thread after a Slack Trigger:

Slack Trigger → Slack Send Message

Slack Send Message settings:

  • Channel: {{ slack.channel }}
  • Message Text: Got it! Processing your request...
  • Thread Timestamp: {{ slack.thread_ts }} (or {{ slack.timestamp }} for top-level replies)

Send a rich Block Kit message:

  • Channel: #alerts
  • Block Kit JSON:
[
  {
    "type": "section",
    "text": {
      "type": "mrkdwn",
      "text": "*Deployment succeeded*\nService: `api-gateway`"
    }
  }
]

Access the result in downstream nodes:

{{ slack_message.success }}
{{ slack_message.message_ts }}
{{ slack_message.channel }}

TSL

import webhook from @tensorify/webhook-trigger:4.0.0
import slack from @tensorify/slack-send-message:1.0.0

node trigger @tensorify/webhook-trigger:4.0.0 {
    provider = "generic"
    path = "/deploy"
    method = "POST"
}

node notify @tensorify/slack-send-message:1.0.0 {
    channel = "#alerts"
    text = "Deployment succeeded for {{ webhook.body.service }}"
}

trigger.payload -> notify.input

Error Handling

Slack Send Message has an On Error control output branch. Enable it via the "Error output handle" toggle at the bottom of the settings panel.

The error branch fires when:

  • The Slack API returns an error (invalid channel, missing scope, rate limit, etc.)
  • SLACK_BOT_TOKEN is missing or invalid
  • Block Kit JSON is malformed

Connect the error output to a fallback notification, logging action, or If node. On the success path, check {{ slack_message.success }} — the node does not automatically stop execution on failure.

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 }} or {{ slack.thread_ts }} from a Slack Trigger to reply in the same thread.
  • Block Kit vs text: When blocks is provided, it takes priority over plain text for message formatting.
  • 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