Slack notifier
Slack incoming webhook. Minimal config, no bot token required.
Slot:
notifier · Name: slackmacOSSupported
LinuxSupported
WindowsSupported
Setup
- In Slack, Apps → Incoming Webhooks → Add to Slack on the target workspace.
- Pick the channel, copy the webhook URL.
- Add it to AO:
notifier:
- type: slack
webhookUrl: ${SLACK_WEBHOOK_URL}
channel: "#agents" # optional — override default channel
username: "AO" # optionalConfig
| Key | Required | Default | What it does |
|---|---|---|---|
webhookUrl | ✓ | — | Slack incoming webhook URL |
channel | optional | webhook default | Channel name (must be accessible to the webhook) |
username | optional | Agent Orchestrator | Bot display name |
Notes
- No bot token / OAuth to manage. Incoming webhooks are the simplest integration Slack offers.
- This notifier does not handle
Retry-Afterheaders — if you're sending at high volume, use the webhook notifier with retries configured. - Messages use Slack Block Kit (header + section + context blocks). Action URLs render as inline links in the context block.
Outgoing payload shape
{
"blocks": [
{
"type": "header",
"text": { "type": "plain_text", "text": "🔔 pr.created — sess_01HXY...", "emoji": true }
},
{
"type": "section",
"text": { "type": "mrkdwn", "text": "PR opened: fix(auth): handle token expiry" }
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "*Project:* myproject | *Priority:* info | *Time:* <!date^1713387600^{date_short_pretty} {time}|2026-04-17T...>"
}
]
},
{
"type": "section",
"text": { "type": "mrkdwn", "text": ":github: <https://github.com/owner/repo/pull/123|View Pull Request>" }
}
]
}