---
title: Slack
description: Post messages to channels you connect.
source: https://www.edgaze.ai/docs/builder/nodes/integration-slack
section: builder
---
# Slack

> Post messages to channels you connect.

**Audience: Workflow creators.**

## Overview

Post messages to channels you connect.

Use this block when its responsibility is clear in the graph. Give it a name that describes the work it performs, then test it with representative input before publishing.

## Setting it up

You never see anyone's Slack sign-in, and you do not need your own Slack account to build with this step. People who run the workflow connect their own account and approve exactly what it may do before it starts.

### Actions

- **Post a message** - Posts a message to the selected channel. Makes a change. Needs: Message. Optional: Reply in thread. People running it are asked to allow: _Post messages to the channel they choose_.
- **Read recent messages** - Reads recent messages from the selected channel, then feeds them to a later step. Only looks things up. Optional: How many messages. People running it are asked to allow: _Read recent messages in the channel they choose_.
- **Add a reaction** - Adds an emoji reaction to a message in the selected channel. Makes a change. Needs: Message timestamp, Emoji name. People running it are asked to allow: _Add emoji reactions in the channel they choose_.
- **List channels** - Reads the public channels in the workspace. Only looks things up. Optional: Maximum channels. People running it are asked to allow: _See which channels Edgaze can post to_.

### Which channel it acts on

- **The person running picks a channel** - the default, and the right choice for anything you publish. They choose one of their own channels before the run starts.
- **Always this channel** - fixed to one you name. Use it for a workflow only you will run.
- **Any channel they allow** - reaches every channel their connection covers. They see a clear warning, and the run gets a lower limit on actions.

### Filling in the fields

Every field can be filled three ways: **type it** (a fixed value), **from a step** (a value an earlier step produced - pick it from a list, no paths to type), or **text + steps** (fixed text with values from earlier steps woven in). The panel shows what will be sent, using sample data, and tells you before you publish if a field is missing or points at a step that is no longer connected.

### Trying it

Test runs from the canvas use sample Slack data. Nothing reaches a real account until someone runs the published workflow with their own connection.

## Working examples

These are complete starting points, not decorative diagrams. Every graph is also available in the main template library and is checked by the workflow compiler.

### 1. Post a summary to a channel

**You will build:** A message in the channel the runner picked.

The runner chooses the channel, so nothing is posted where they did not intend. A retried post is reconciled against recent history rather than duplicated.

```docsgraph
block-integration-slack-post-a-summary-to-a-channel
```

[Open this template](/templates/block-integration-slack-post-a-summary-to-a-channel) and adapt the labels, prompts, or credentials to your own workflow.

### 2. Route a request to the right channel

**You will build:** The request lands in the channel that owns it.

Classification plus posting replaces manual triage. Channel selection happens at authorization, not at runtime, so routing cannot drift.

```docsgraph
block-integration-slack-route-a-request-to-the-right-channel
```

[Open this template](/templates/block-integration-slack-route-a-request-to-the-right-channel) and adapt the labels, prompts, or credentials to your own workflow.

### 3. Daily standup prompt

**You will build:** A consistent prompt posted to one channel each day.

A scheduled nudge keeps standups short without anyone remembering to write it. The call ceiling on the authorization stops a loop from flooding the channel.

```docsgraph
block-integration-slack-daily-standup-prompt
```

[Open this template](/templates/block-integration-slack-daily-standup-prompt) and adapt the labels, prompts, or credentials to your own workflow.

## Ports

- **Input: Input** (`in`): `any`, optional, multi_object.
- **Output: Success** (`success`): `object`, optional, single.
- **Output: Error** (`error`): `object`, optional, single.

## Inspector

- **Action panel:** choose what the step does, which account resource it acts on, and where each field's value comes from. See _Setting it up_ above.

## Behavior

- **Input requirement:** Choose an action. Fields can come from earlier steps or be typed in.
- **Execution:** Runs through the Edgaze Gateway, which talks to the provider on the runner's behalf.
- **Timeout:** 30000 ms by default (1000 to 120000 ms).

## Cost

Uses outbound HTTP transport and may contribute to the run's compute cost.

## Security

- The person running the workflow connects their own account and approves exactly what this step may do before the run starts. The workflow never holds their sign-in, and you never see it.
- Actions that make changes are listed separately on the approval screen, and the run is limited to the account resources the person chose.

## Retry

If a step is interrupted mid-change, Edgaze checks with the provider whether the change went through before ever trying again, so nothing is posted or created twice.

## Production checklist

- Test the happy path and one malformed or empty input.
- Keep credentials out of prompts and published graph configuration.
- Set a timeout and retry policy that matches the operation's side effects.
- Name the final result so a runner can tell what success looks like.
