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
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.
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.
Slack Events API handler (HTTP route template)
Upload File
List User Groups
List Members in Channel
List Files
List Custom Emojis
List Channels
Get Current User
Get Channel Details
Download File
Delete File
Update User Profile
Update User Group Members
Update Message
Set User Status
Set Channel Topic
Invite Users to Channel
Create Reminder
Create Channel
Archive Channel
Add Reaction
Search Messages
Get User
Get Thread Replies
Variable expiration handler
Send direct message
Set Channel Purpose
List Conversation History
Send error to slack channel
Ask channel for approval
Flows
Multi-step workflows that already wire Slack to something else.
List Slack channels and send shared message to selected channels
Example handler for slack bot commands and @mentions
Whenever an HackerNews message contains a mention, publish it to slack with sentiment analysed
OCR receipt pictures in gdrive folder and send result to Slack
See account data over the last 3 days as a pie chart
Ban a user, notify them by email, and us by Slack
Slack Alert EUR/USD Exchange rate
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.
slack
View raw schema →| Field | Type | Required | What it is |
|---|---|---|---|
| token | string | No | The 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.