View as Markdown
Slack icon

Slack ACTION

Post Message

Send a message to a channel, user, or group. Accepts a channel ID (e.g. C1234567890) or channel name (e.g. #general or general) — names are resolved automatically. To post a note to yourself (save a personal note or reminder), pass your own user ID (e.g. U1234567890) as the Channel — use Get Current User to find your user ID first. To reply to a thread, provide threadTs (Slack calls this thread_ts) from Get Channel History. Supports plain text with Slack mrkdwn formatting and Block Kit blocks. Posts as the authenticated user by default; set sendAsBot to true to post as the Slack app's bot user instead. See the documentation
  • Action
  • Writes data
  • OAuth
  • SDK
  • MCP

IMPLEMENTATION

Call this tool

Connect a user's Slack account once, then configure and run Post Message from your backend or agent.

import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "slack_v2-post-message",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    slack_v2: { authProvisionId: "apn_xxxxxxx" },
    channel: "Channel",
    text: "Text",
  },
})

console.log(result)

SCHEMA

Inputs

Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.

Post Message inputs
Property Type Description
channel Channel string
Channel ID (e.g. C1234567890), channel name (e.g. general or #general), user ID, or group ID. Channel names are resolved to IDs automatically.
Required
text Text string
The message text. Supports Slack mrkdwn formatting (e.g. *bold*, _italic_, <https://example.com|link>). To mention a user, use <@U123> with their user ID. Do NOT append a display name after a pipe: Slack renders <@U123|Name> as literal text, not a mention.
Required
blocks Blocks string
JSON array of Block Kit blocks for rich message layouts. Example: [{"type":"section","text":{"type":"mrkdwn","text":"Hello from Pipedream"}}].
Optional
threadTs Thread Timestamp string
The ts of a parent message to reply to. If provided, the message is posted as a threaded reply.
Optional
replyBroadcast Reply Broadcast boolean
When replying to a thread, set to true to also post the reply to the channel.
Optional
unfurlLinks Unfurl Links boolean
Enable unfurling of text-based content (URLs).
Optional
unfurlMedia Unfurl Media boolean
Enable unfurling of media content.
Optional
mrkdwn Parse Markdown boolean
Set to false to disable Slack mrkdwn parsing.
Optional
sendAsBot Send as Bot boolean
Set to true to post the message as the Slack app's bot user instead of the authenticated user. The app is added to the channel automatically if it is not already a member (not possible for DMs). The bot cannot DM a user who has not opened its Messages tab. Defaults to false (posts as the authenticated user).
Optional

REFERENCE

Tool details

Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.

Registry key
slack_v2-post-message
Version
0.1.0
App
Slack
Authentication
OAuth
Read-only
No
Destructive
No
Open world
Yes