Slack
Slack uses a bot token for API access and an app token for Socket Mode. It needs no public callback URL.
Configure the app
- Create an app at Slack API Apps and enable Socket Mode.
- Add bot scopes
chat:write,chat:write.public,app_mentions:read,channels:read,groups:read, andim:history. - Enable Events and subscribe to
app_mentionandmessage.im. - Enable Interactivity for approval buttons.
- Create an app-level token with
connections:write. - Install or reinstall the app and copy the
xoxb-bot token. - Invite the bot to every required channel with
/invite @WOML.
Store credentials
woml secrets set SLACK_BOT_TOKEN
woml secrets set SLACK_APP_TOKENUse Slack
Triggers use comma-separated channel names without #. Notification destinations use whitespace-separated #channel aliases or conversation IDs. If events do not arrive, first confirm that Enable Events is on; if channel lookup reports missing_scope, add read scopes and reinstall the app.
Test a Slack trigger
<slack
id="agentMessage"
events="app-mention,direct-message"
channels="woml-testing"
bot-token="{{secrets.SLACK_BOT_TOKEN}}"
app-token="{{secrets.SLACK_APP_TOKEN}}"
/>Run the workflow, then mention the bot in #woml-testing or send it a direct message. The run receives normalized message data through context.payload.
Channel filters on triggers use comma-separated names without # or exact conversation IDs. The bot must be invited to private or restricted destinations.
Test approval delivery
Place Slack inside an approval's <notify> block. WOML sends interactive Approve and Reject controls through the shared Socket Mode host. Interactivity must be enabled even though no public callback URL is required.
Diagnose permissions
Slack tokens can authenticate successfully while still lacking channel lookup or posting scopes. After changing scopes, reinstall the app so the workspace grants the new set. Verify the app token starts with the expected Socket Mode identity and the bot token belongs to the installed workspace.
WOML redacts tokens and reports actionable scope information such as needed and provided instead of printing credentials.