# Send Message to Channel — Slack

> Send a message to a public or private channel. Legacy, channel-only variant — prefer Post Message for new integrations: it covers channels, users, and groups from a single tool, and also supports threaded replies and unfurl settings. Use…

- Key: `slack_v2-send-message-to-channel`
- Type: Action (Write)
- Version: 0.2.4
- App: Slack (`slack_v2`) — https://pipedream.com/apps/slack-v2.md
- This page (HTML): https://pipedream.com/apps/slack-v2/actions/send-message-to-channel
- Hints: open-world
- Source: https://github.com/PipedreamHQ/pipedream/blob/master/components/slack_v2/actions/send-message-to-channel/send-message-to-channel.mjs

## Description

Send a message to a public or private channel. Legacy, channel-only variant — prefer **Post Message** for new integrations: it covers channels, users, and groups from a single tool, and also supports threaded replies and unfurl settings. Use this tool only if a workflow specifically needs to target a channel exclusively, without the user/group support **Post Message** offers. [See the documentation](https://api.slack.com/methods/chat.postMessage)

## Props

| Prop | Type | Required | Description |
|---|---|---|---|
| `conversation` | `string` | Yes | A public or private channel ID (e.g. C1234567890). Use List Channels to find valid IDs. |
| `text` | `string` | Yes | Text of the message to send (see Slack's formatting docs). This field is usually necessary, unless you're providing only attachments instead. 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. |
| `mrkdwn` | `boolean` | No | true by default. Pass false to disable Slack markup parsing. See docs here |
| `as_user` | `boolean` | No | Optionally pass true to post the message as the authenticated user, instead of as a bot. Defaults to false. |
| `addToChannel` | `boolean` | Yes | If true, the app will be added to the specified non-DM channel(s) automatically. If false, you must add the app to the channel manually to post to a private channel as a bot. Defaults to false. |
| `post_at` | `string` | No | Messages can only be scheduled up to 120 days in advance, and cannot be scheduled for the past. The datetime should be in ISO 8601 format. (Example: 2014-01-01T00:00:00Z) |
| `include_sent_via_pipedream_flag` | `boolean` | No | Defaults to true, includes a link to Pipedream at the end of your Slack message. |
| `username` | `string` | No | Optionally customize your bot's user name (default is Pipedream). Must be used in conjunction with Send as User set to false, otherwise ignored. |
| `icon_emoji` | `string` | No | Optionally provide an emoji to use as the icon for this message, wrapped in colons. E.g., :fire:. Overrides icon_url. Must be used in conjunction with Send as User set to false, otherwise ignored. Use List Icon (emoji) Options to look up valid emoji names for this workspace, including custom emoji. |
| `icon_url` | `string` | No | Optionally provide an image URL to use as the icon for this message. Must be used in conjunction with Send as User set to false, otherwise ignored. |
| `thread_ts` | `string` | No | Provide another message's ts value to make this message a reply (e.g., if triggering on new Slack messages, enter {{event.ts}}). Avoid using a reply's ts value; use its parent instead. e.g. 1403051575.000407. |
| `thread_broadcast` | `boolean` | No | If true, posts in the thread and channel. Used in conjunction with Message Timestamp and indicates whether reply should be made visible to everyone in the channel. Defaults to false. |
| `metadata_event_type` | `string` | No | The name of the metadata event. Example: task_created |
| `metadata_event_payload` | `string` | No | The payload of the metadata event. Must be a JSON string. Example: { "id": "11223", "title": "Redesign Homepage"} |
| `unfurl_links` | `boolean` | No | Default to false. Pass true to enable unfurling of links. |
| `unfurl_media` | `boolean` | No | Defaults to false. Pass true to enable unfurling of media content. |

## Run it

**MCP**

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
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 accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "slack_v2",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// listTools() hands your model this tool's input schema, so it can
// fill the arguments itself:
const result = await mcp.callTool({
  name: "slack_v2-send-message-to-channel",
  arguments: {
    conversation: "Channel",
    text: "Text",
  },
})
```

**TypeScript**

```ts
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-send-message-to-channel",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    slack_v2: { authProvisionId: "apn_xxxxxxx" },
    conversation: "Channel",
    text: "Text",
  },
})

console.log(result)
```

**cURL**

```bash
curl -X POST https://api.pipedream.com/v1/connect/{project_id}/actions/run \
  -H "Content-Type: application/json" \
  -H "X-PD-Environment: production" \
  -H "Authorization: Bearer {access_token}" \
  -d '{
    "external_user_id": "{external_user_id}",
    "id": "slack_v2-send-message-to-channel",
    "configured_props": {
      "slack_v2": { "authProvisionId": "apn_xxxxxxx" },
      "conversation": "Channel",
      "text": "Text"
    }
  }'
```

---

- App: https://pipedream.com/apps/slack-v2.md · All apps: https://pipedream.com/apps
