Skip to main content

Slack Integration

Pulsar posts to Slack in one of two ways. Pick one when you create the channel:

ModeWhat you needBehaviour
WebhookAn incoming webhook URLEvery alert and recovery is a new message in the channel the webhook was created for.
Bot token (recommended)A Slack app's Bot User OAuth Token plus the channel IDThe first alert of the day for a site starts a thread; every later alert and recovery for that site that day is posted as a reply, so one incident does not flood the channel. A new thread starts each day (UTC).

If both are filled in, the bot token is used and the webhook is ignored.

Option A: Webhook​

Step 1: Create an incoming webhook​

  1. Go to Slack API Apps and create an app (or open an existing one)
  2. Open Incoming Webhooks and switch it on
  3. Click Add New Webhook to Workspace
  4. Pick the channel alerts should go to
  5. Copy the webhook URL (https://hooks.slack.com/services/...)

Step 2: Create the channel in Pulsar​

  1. Go to Settings → Notification Channels → Create Channel
  2. Enter a Channel Name (for example "Ops Slack")
  3. Set Channel Type to Slack
  4. Paste the URL into Webhook URL and leave the bot token fields empty
  5. Click Create

Option B: Bot token with threading​

Step 1: Create a Slack app with a bot​

  1. Go to Slack API Apps and create an app from scratch
  2. Under OAuth & Permissions → Scopes → Bot Token Scopes, add chat:write and channels:join (the second lets Pulsar join public channels by itself; without it, invite the bot manually)
  3. Click Install to Workspace and approve
  4. Copy the Bot User OAuth Token (starts with xoxb-)

Step 2: Find the channel ID​

In Slack, right-click the channel → View channel details. The channel ID (for example C0123456789) is at the bottom of the panel.

Step 3: Create the channel in Pulsar​

  1. Go to Settings → Notification Channels → Create Channel
  2. Enter a Channel Name
  3. Set Channel Type to Slack
  4. Under For threading support, paste the token into Bot Token and the ID into Channel ID. The Webhook URL can stay empty
  5. Click Create

Step 4: Let the bot into the channel​

Pulsar joins public channels automatically. For a private channel, invite the bot yourself with /invite @YourAppName in that channel. Until it is a member, sends fail with channel_not_found.

A channel sends nothing until it is attached to a site.

  1. Open the site in Pulsar
  2. In the Notification Channels card, click Link Channel
  3. Pick the Slack channel

Repeat for every site that should post there. You can also use the Test action on the channel row in Settings to send a test message at any time.

Message format​

Alerts are posted with a warning marker and recoveries with a check mark:

:warning: Pulsar Alert
mystore.com is DOWN — HTTP 503 Service Unavailable
:white_check_mark: Pulsar Recovery
mystore.com is back UP after 13 minutes

With a bot token, the recovery lands in the same thread as the alert it resolves.

Multiple channels and sites​

Create one Pulsar channel per Slack channel you want to post to, then link the right ones to each site. Every alert for a site goes to all channels linked to that site. Routing different alert types to different Slack channels is not supported: a linked channel receives all of that site's alerts.

On-call escalation

For severity-based paging use PagerDuty, which opens an incident for outages and resolves it on recovery.

Troubleshooting​

channel_not_found​

The bot is not a member of the channel. Invite it with /invite @YourAppName, or double-check the channel ID.

not_in_channel or missing_scope​

The app is missing the chat:write scope, or was reinstalled after scopes changed. Reinstall the app and paste the new token into the channel's settings.

Webhook stopped working​

  1. Confirm the Slack app is still installed in the workspace
  2. Confirm the channel the webhook was created for still exists
  3. Send a Test from the channel row in Settings

Rate limiting​

Slack rate-limits incoming webhooks and chat.postMessage. The bot token mode is gentler on busy channels because repeat alerts become thread replies rather than top-level posts.