Slack
Slack is the most capable channel: it direct-messages each person in the delivery's audience and posts to any Slack channels you add, and it's the only channel with interactive approval buttons.
Delivery happens through the Willow Slack app, installed once per organization. No token is ever stored on a destination — Slack destinations hold only channel IDs.
Connect your Slack workspace
- Go to Security → Alerts → Channels.
- In the Slack workspace card, select Connect Slack and complete the OAuth flow in the popup.
- If a Slack admin must approve the app first, the card shows Awaiting approval. Once they've approved it, come back and select Finish install.
When connected, the card shows a Connected badge with your workspace name, and Slack becomes selectable on rules.
If Connect Slack isn't available, Slack OAuth isn't configured for this deployment. On the hosted service, contact Willow. If you self-host, set SLACK_CLIENT_ID and SLACK_CLIENT_SECRET.
DMs to the audience
Once the workspace is connected, any rule delivery with Slack turned on DMs everyone in its audience — no destination needed. Willow matches people to their Slack account by email, so a person whose Willow email differs from their Slack email won't be found.
Posting to a Slack channel
- Under Destinations, select Slack channel.
- Name it, then add one or more Slack channel IDs (e.g.
C0123ABCD). In Slack, the channel ID is at the bottom of channel settings → About. - Select Add, then Test.
The Willow bot must be a member of each channel or delivery fails. Open the channel in Slack and run /invite @Willow, or use channel settings → Integrations → Add apps. DM recipients don't need this. A Test that fails with "the Willow bot isn't in this channel" means exactly this — invite the bot and retry.
One Slack destination can hold several channel IDs, and one delivery can select several destinations.
Interactive approvals
New integration requested renders Approve and Reject buttons directly on the Slack message. Any admin holding the Integrations → Create permission (integrations:create) can decide from Slack, and the message updates in place to record who did.
When a guard holds a specific tool call for human approval, that's delivered as a direct Slack DM to the requester with its own Approve/Reject buttons, independent of the alert rules configured here.
Disconnecting
Disconnecting Slack stops every Slack delivery immediately. Existing Slack destinations are kept but flagged Not delivering, and the Channels tab shows a banner explaining it. Reconnect the workspace to resume, or delete the affected destinations.
Troubleshooting
A channel post fails. Confirm the channel ID is right and that the bot has been invited with /invite @Willow.
A DM never arrives. Confirm the person's Willow email matches their Slack account email. Also check they haven't muted Slack in their own profile — see personal preferences.
Everything Slack fails at once. Check the workspace still shows Connected. A Not delivering badge on destinations means Slack was disconnected.