Slack Integration

Send public posts and comments to Slack, and create draft posts with /boarbs or a message shortcut.

Connect each Boarbs organization to a Slack workspace from Settings → Integrations. After Connect, an organization admin chooses an organization default channel, and can optionally choose a different channel per board.

After setup, Boarbs sends a message when:

  • a post is created on a public board
  • a public comment is created on a public board

Each message includes the post title, author email, board name, and a link to the post. Internal comments and votes are never sent to Slack.

In a connected channel you can also create a Boarbs post from Slack. The post starts as a draft. It is not public on the board until someone clicks Approve in the channel. Reject discards the draft.

Create a post from Slack

Use either entry point in a connected channel (organization default or a board override):

  • /boarbs followed by the post text
  • the Create Boarbs post message shortcut on an existing top-level message

The first line becomes the title. Extra lines become the body. If there is only one line, it is used for both. Empty text does nothing.

Boarbs posts a channel message for that draft with Approve and Reject. Only Approve publishes the post to the board. Reject (or Ablehnen) discards the draft and removes the actions so it cannot be approved later.

Author identity is the Slack user (display name plus a stable slack:U… identity), the same pattern as comments imported from Slack.

Board routing:

  • A board-specific channel creates the draft on that board.
  • The organization default channel uses the organization's oldest public board.

Casual chat is not imported and does not become a draft. Bot and app messages are ignored, including notifications Boarbs itself posted. Thread replies under a Boarbs notification stay on two-way comment sync and do not create a second post.

After a draft is approved, Boarbs sends the normal public-post notification so the channel gets the usual message and comment thread. That notification is a bot message, so it is not imported as another post. The approval prompt is updated so Approve cannot be used again.

Two-way replies

On those existing notification threads only, public comments sync both ways:

  • A reply in the Slack thread under a Boarbs notification becomes a public comment on that post.
  • A public comment on that post in Boarbs is posted as a reply in the same Slack thread.

Two-way sync does not create posts from Slack. It only uses replies under notification messages Boarbs has already sent, including threads posted to a board channel, and only public comments.

If a Slack workspace is already connected, an organization admin must disconnect Slack, authorize it again, and re-select the channel so the new reply-sync scopes are granted.

Configure the Platform Slack App

The person operating the Boarbs deployment must create one Slack app for the platform and add these bot token scopes under OAuth & Permissions:

  • channels:read
  • groups:read
  • chat:write
  • chat:write.public
  • channels:history
  • groups:history
  • channels:join
  • users:read

Under Event Subscriptions, enable events and set this Request URL, replacing the origin with the deployment's NEXT_PUBLIC_SITE_URL:

https://your-boarbs-domain.example/api/integrations/slack/events

Subscribe the bot to these events:

  • message.channels
  • message.groups

Under Slash Commands, create /boarbs and set this Request URL, replacing the origin the same way:

https://your-boarbs-domain.example/api/integrations/slack/commands

Use a short description such as Create a Boarbs post draft and a usage hint such as [title]. The command text after /boarbs becomes the draft. Extra lines become the body. Approve or reject the draft in the channel.

Under Interactivity & Shortcuts, enable interactivity and set this Request URL:

https://your-boarbs-domain.example/api/integrations/slack/interactions

Create a message shortcut named Create Boarbs post with callback ID create_boarbs_post. People can use it on an existing top-level message in a connected channel.

Add this OAuth redirect URL, replacing the origin the same way:

https://your-boarbs-domain.example/api/integrations/slack/callback

Set these server-side environment variables in Dokploy:

SLACK_CLIENT_ID=...
SLACK_CLIENT_SECRET=...
SLACK_SIGNING_SECRET=...
SLACK_TOKEN_ENCRYPTION_KEY=...
CRON_SECRET=...

SLACK_SIGNING_SECRET comes from the Slack app's Basic Information page and is required to verify Events API requests. SLACK_TOKEN_ENCRYPTION_KEY should be a long random secret dedicated to encrypting stored Slack access tokens. Boarbs falls back to BETTER_AUTH_SECRET, but a separate key is recommended. The Slack connect action stays unavailable until both SLACK_CLIENT_ID and SLACK_CLIENT_SECRET are set.

Slack notifications use Boarbs' retryable notification queue. Vercel runs /api/cron/process-notifications every minute from vercel.json. On Dokploy, schedule the same path every minute with an Authorization: Bearer <CRON_SECRET> header.

Restart the deployment after changing environment variables.

Choose channels

After authorization you return to Settings → Integrations for the same organization.

  • Organization default: select a channel and save it. Used when a board does not have its own channel.
  • Board channels: each board can override the default. Choose Organization default to clear an override.

Public channels are available automatically. To use a private channel, invite the Boarbs Slack app to that channel first.

Changing a board channel starts new notification threads in the new channel. Existing threads stay where they were posted.

Disconnect Slack

Organization admins can disconnect Slack from Settings → Integrations. Disconnecting removes the stored workspace connection and stops queued and future Slack notifications.

Boarbs© 2026 Boarbs