Connections

OAuth installs to third-party platforms (slack today) that back one or more subscription channels.

A connection is a third-party OAuth install — today only Slack, with Discord and Telegram to follow — attached to a Nevo project. One connection captures the workspace-level identity and bot token; one or more channels then subscribe to specific slices of that workspace’s events.

Two primitives, two levels:

  • Connection — “my Acme Slack workspace is connected to this project.”
  • Channel — “I want events whenever the bot is @mentioned, and separately whenever anyone posts in #support.”

You can have many channels on one connection, but the combination of (connection, subscription) is unique — you can’t have two channels both listening to @mentions on the same workspace, or both listening to #support messages.

Lifecycle

1. Install

Go to Projects → your project → Connections and click connect slack. You’ll be redirected to Slack’s consent screen where you approve the Nevo bot for your workspace, then bounced back to Nevo. The connection now exists but has no subscriptions — you add those next.

A Slack workspace can only be connected to one Nevo project globally. Attempting to connect the same workspace to a second project returns a clear “workspace taken” error.

2. Add a subscription (a channel)

From Channels → new channel → slack, pick which connection to use and which slice you want:

  • @mentions — only events where the bot is @mentioned. One per connection.
  • channel messages — every non-bot message in one specific Slack channel. One per (connection, slack channel) pair. Requires the bot to be invited to the channel (/invite @nevo inside Slack) before events flow.

Give the subscription a short label (e.g. “support questions”) — it shows up on the events list and in the dashboard.

3. Reauthorize (if needed)

A fresh install grants just enough scope to receive @mentions and read channel metadata (so the picker can list your Slack channels by name). Subscribing to channel messages needs additional permission (channels:history + groups:history) that the initial install didn’t ask for — Nevo detects the gap and surfaces a reauthorize in slack button inline. Clicking it redirects to Slack with the extra scopes; on approval you’re back in the dashboard with the subscription ready to save.

Subsequent subscriptions on the same workspace don’t re-prompt — scope is remembered per connection.

4. Disconnect

From the connections page, click the trash icon on the connection card. Nevo refuses if any channels still reference it — remove them first. On confirm, the bot is uninstalled from your Slack workspace and the connection row is dropped. Past events stay for audit.

Subscription shapes

Today:

{ "kind": "mention" }
{
  "kind": "channel_messages",
  "slack_channel_id": "C01ABCD…",
  "slack_channel_name": "support"
}

The slack_channel_id is what the router matches on — if the Slack channel is renamed, delivery keeps working; only the display label goes stale (refresh by re-picking the channel in the dashboard).

Plan availability

Same as Slack channels today — Pro and Scale include Slack connections. Hobby and Hacker don’t.

TierSlack connections
Hobby
Hacker
Pro
Scale
  • Channels — the subscription side of the pair.
  • Events — the shape Slack events land in.
  • Dashboard → Connections for the install + list surface.