Skip to content

Slack ​

Exhale posts a scrubbed triage summary to a shared Slack channel after a primary Pulse reaches triaged. This is outbound. It does not create Pulses.

Posts go to the channel a workspace admin connected. There is no per-user unsubscribe. Personal incident email and SMS use membership opt-in instead.

Connect ​

Sign in as a workspace admin → Connections → Notifications → Slack.

Add to Slack (OAuth) ​

When the Exhale Slack app is configured on the platform, Add to Slack authorizes chat:write plus incoming-webhook so Slack can offer a channel picker. Exhale stores the install webhook URL when Slack returns one. Delivery posts to that URL first, and uses chat.postMessage only when no webhook URL is stored.

Incoming Webhook ​

  1. In Slack, create an Incoming Webhook for the destination channel.
  2. Paste the hooks.slack.com HTTPS URL and an optional channel label.
  3. Save, then Test connection.

See Slack's official guide: Sending messages using incoming webhooks.

A tenant can keep both a bot token and a webhook URL. Delivery prefers the webhook URL. The webhook host must be hooks.slack.com. The URL is stored as a secret and is not shown again after connect.

Delivery ​

When triage completes, Exhale posts Block Kit (header, summary, next-step facts, View pulse in Exhale). Title and triage text are scrubbed again before send. Retry-triage does not send a second Slack message for the same Pulse.

Quiet hours do not defer Slack. Optional minimum severity (Notifications → Other preferences) can skip Slack below the floor; unclassified Pulses always notify. Optional notify-on-acknowledge / resolve posts a short status plus link.

Test connection uses the stored Incoming Webhook URL when one is present, otherwise chat.postMessage.

Plan ​

Slack is available on all plans and consumes an outgoing slot (Trial/Starter 1, Growth 3, Business 3, Enterprise 5, shared with Teams). Updates on an already-configured Slack row do not consume a second slot.

API ​

Canonical paths are under /v1. Session plus CSRF on writes.

MethodPath
PUT/v1/auth/notifications/slack
POST/v1/auth/notifications/slack/test
GET/v1/auth/notifications/slack/oauth/start
DELETE/v1/auth/notifications/slack/oauth

Webhook URLs and bot tokens are never returned on GET /v1/auth/notification-channels.

Exhale by Kolstrom Systems LLC