Slack

Communication OAuth (bot or user token), or a token you paste Windmill docs

Post and read messages, manage channels and search Slack from any Windmill script, flow or app, and let Slack events, slash commands and buttons trigger flows.

What you can do with Slack

Complete, deployable projects built around Slack — the fastest way to get something real running.

Set up in 2 steps

1

Connect from the Resources page

Open Resources, click Add a resource/API and pick slack under Instance-configured OAuth APIs. Choose a bot token to act as the Slack app (use it for shared and scheduled flows) or a user token to act as yourself, then click Connect and allow access.

2

Run your first script

Fork any script below and run it against a test channel.

Scripts

Building blocks, if none of the projects above fit. Fork one, run it, or call it as a step inside your own flow.

Submit a script →

Flows

Multi-step workflows that already wire Slack to something else.

All flows →

Trigger flows from Slack

Slack is not only a destination. These inbound paths are supported today.

Slash commands

A command like /deploy staging hits a webhook and starts a flow with the arguments as inputs.

Events API

Fork the Slack Events API handler script below and add an HTTP route on it: POST, request type Sync, Signature authentication with the Slack provider and your app's Signing Secret. In the Slack app's Event Subscriptions, paste the route URL as the Request URL, subscribe to bot events such as message.channels or app_mention, and reinstall the app; the script's header lists each event's scope and a manifest snippet. Slack retries after 3 seconds, so hand long work to another job.

Interactive blocks

Buttons and modals resume a suspended flow step.

Resource type

The shape of the credential every script on this page expects.

FieldTypeRequiredWhat it is
tokenstringNoThe slack token

Questions

Bot token or user token?

A bot token acts as the Slack app and reads only public channels it has joined. A user token acts as the person who connected, reads their private channels and DMs, and is the only kind that can search. Scripts that need a user token say so.

A script fails with missing_scope or not_allowed_token_type

not_allowed_token_type means the script needs a user token (search, status, profile, reminders). missing_scope means the connection lacks a scope the script names in its description: connect again and tick it.

Is my token stored on the hub?

Never. It lives only in your own Windmill workspace, encrypted at rest.

There is no Connect button on my instance

The Windmill instance admin must add a Slack OAuth app once under Instance settings, Auth/OAuth/SAML, OAuth. Until then, paste a bot token as in the CLI lane.