Slack
Send walkerOS events to Slack as formatted messages. Supports both Incoming Webhooks (simple, single-channel) and the Web API (multi-channel routing, threading, DMs, ephemeral messages, Block Kit).
Slack is a server destination in the walkerOS flow:
Turns events into Slack messages for real-time alerts, sales notifications, moderation queues, or incident routing — without coupling your product code to Slack.
Installation
Setup
- Integrated
- Bundled
Webhook vs Web API modes
Pick exactly one auth method per destination. Each mode trades capability for simplicity.
| Capability | Incoming Webhook (webhookUrl) | Web API (token) |
|---|---|---|
| Setup | Paste a URL, done | Create a Slack app, install bot, manage scopes |
| Channels | Fixed to the webhook's channel | Any channel the bot is in, routable per rule |
| Threading | Not supported | threadTs + replyBroadcast |
| Direct messages | Not supported | dm: true + user |
| Ephemeral messages | Not supported | ephemeral: true |
| Retries | Plain HTTP | SDK-managed (retryConfig) |
| Block Kit | Yes | Yes |
Use webhooks for a single firehose channel and minimal setup. Use the Web API whenever you need routing, threading, DMs, or ephemeral messages.
Configuration reference
| Property | Type | Description | More |
|---|---|---|---|
token | string | Slack Bot token (xoxb-...). Enables Web API mode. Mutually exclusive with webhookUrl. | |
webhookUrl | string | Incoming Webhook URL. Enables webhook mode. Mutually exclusive with token. | |
channel | string | Default Slack channel ID or name (e.g. "#alerts" or "C024BE91L"). Required for Web API mode unless every rule supplies one. Ignored in webhook mode. | |
text | string | Default text template. Supports `${data.field}` interpolation against the walkerOS event. | |
blocks | Array<object> | Default Block Kit blocks applied when no mapping override is set. | |
includeHeader | boolean | Auto-add an event-name header block when generating default blocks. Default: true. | |
unfurlLinks | boolean | Enable link unfurling. Default: false (cleaner for automated alerts). | |
unfurlMedia | boolean | Enable media unfurling. Default: false. | |
mrkdwn | boolean | Use mrkdwn formatting in text. Default: true. | |
threadTs | string | Static thread_ts for replies (rarely set at destination level). | |
retryConfig | Retry policy passed to WebClient. Default: "default". |
Channel routing
With Web API mode, route events to different channels using nested entity > action mapping. Each rule can override channel, text, blocks, and threading behavior.
Events that don't match any rule fall back to the default channel in settings.
Message formatting
Messages support two formatting styles, set at destination level or per rule:
- Text templates —
${data.field}placeholders interpolate against the walkerOS event. Good for terse alerts. - Block Kit — structured layouts via Slack's Block Kit (headers, sections, buttons, context). Use the
blockssetting when you need rich formatting.
When neither text nor blocks is provided, the destination generates a default message with an event-name header (toggle via includeHeader).
Docker Deployment
Step 1: Create Flow Configuration
Use the $env.NAME syntax in your flow configuration to reference environment variables at runtime:
Step 2: Bundle the Flow
Bundle your flow configuration before running in Docker:
Step 3: Run with Docker
Docker Compose Example
Never commit bot tokens or webhook URLs to version control. Use environment variables or a secrets manager to inject credentials at runtime.