Skip to the operations

Messaging

Slack in a decision flow.

4 Slack operations a decision flow can call directly, with the credentials your own contract issued. The response is data the rest of the flow reads, branches on, and keeps in the trace.

Category
Messaging
Type
Integration
Authentication
API key or OAuth 2.0
Test environment
Production host only

Who they are

Team messaging, organised around channels.

Slack is a workplace messaging product built around channels, with a Web API for posting into them from other systems. It is owned by Salesforce. For a flow it is the shortest path between a decision and the people who have to act on it, in the place they are already watching.

What a flow can call

4 operations, each one a step you can place on the canvas.

  1. POST/chat.postMessage

    Post a message

    Sends a message to a channel. The bot must be a member of the channel first or the call fails with not_in_channel.

  2. POST/chat.postMessage

    Post a message with Block Kit layout

    Same endpoint as "Post a message", pre-filled with a Block Kit layout for a decision summary.

  3. POST/chat.postMessage

    Reply in a thread

    Replies under an existing message. thread_ts is the parent's ts, which an earlier Post-a-message node returns at body.ts.

  4. POST/auth.test

    Verify token (auth.test)

    Cheapest way to confirm the token works and see which workspace and bot user it belongs to.

Where it sits in the decision

Messaging calls have a natural place in a flow.

Notifying a person is part of the decision rather than an afterthought to it: the message goes out from the flow, at the point the flow decided it was warranted, carrying the same version and trace as the outcome that triggered it.

Whatever Slack returns is part of the run, so it is part of the record. When someone asks months later why an applicant was declined, the answer cites what came back at the time rather than re-fetching from a service whose answer has since changed.

  • 01Add Slack as a connection authenticating with an API key or OAuth 2.0.
  • 02Slack has one host for both environments, so guard test runs with your own credentials and limits.
  • 03Place a Connection node and pick an operation — “Post a message” is usually the first one a flow needs.
  • 04Map the response into the fields your rules read, then test the whole path before it carries live traffic.

Common questions

Using Slack in a flow.

How do I connect Slack to a decision flow?

Add Slack as a connection in your workspace authenticating with an API key or OAuth 2.0, with the credentials your own contract issued — ArboRule calls the provider as you, and never holds a contract on your behalf. Once the connection exists, any flow in the workspace can place a Connection node and choose one of its operations. The credentials live on the connection, not in the flow, so a policy owner can use Slack in a decision without ever seeing the secret.

Can I test Slack without touching production?

Slack exposes one host for both environments, so there is no separate sandbox to point at. Test runs still execute in Sandbox and are recorded separately in decision history, but the call goes to the same place as production — so guard it with your own test credentials, rate limits, or data.

What can a flow call on Slack?

4 operations, including “Post a message”, “Post a message with Block Kit layout”, “Reply in a thread”. Each one is a step you place on the canvas and map into the fields your rules read, and most flows start with “Post a message”. The list comes from the same manifest the engine uses to make the call, so this page cannot describe an operation the product does not have.

Where in a decision should Slack be called?

Notifying a person is part of the decision rather than an afterthought to it: the message goes out from the flow, at the point the flow decided it was warranted, carrying the same version and trace as the outcome that triggered it.

Ready when you are

Wire Slack into a real decision.

Build the flow in Sandbox, connect your account, and watch the decision pull what it needs before it answers.

Read the docs