Slack Setup

Receive Slack messages in Nero and reply directly from the app, in the right channel and thread.

What does the Slack integration do?

  • Inbound: Messages from monitored Slack channels are automatically received in Nero
  • Outbound: Reply from Nero directly into the correct Slack channel and thread
  • Automatic tasks: Incoming messages are bundled and converted into tasks
  • AI triage: Each message is automatically classified (support, sales, etc.)
  • Contact matching: Slack users are automatically linked to existing contacts

How it works

Inbound (Slack → Nero)

  1. A customer sends a message in a monitored Slack channel
  2. Slack sends an event to the Nero webhook
  3. Nero validates the request signature, checks if the channel is monitored, and filters out bot messages and internal team members
  4. The sender is matched to a Nero contact (or auto-created)
  5. The message enters the debounce queue (30 seconds)
  6. After the quiet period, all messages from the same person are bundled into one task with AI classification

Smart bundling

If someone sends 5 messages in 2 minutes, Nero bundles them into 1 task instead of 5. The 30-second timer resets on each new message.

Outbound (Nero → Slack)

  1. A team member clicks Reply on a Slack task in Nero
  2. The compose sheet shows the channel name and thread context
  3. The reply is sent via the Slack API, automatically in the correct thread and channel

Setup

Prerequisites

  • A Slack workspace you have admin access to
  • Permission to create Slack apps (api.slack.com/apps)
1

Create a Slack App

  1. Go to api.slack.com/apps
  2. Click Create New AppFrom scratch
  3. Name it (e.g. Nero) and select your workspace
2

Set Bot Token Scopes

Go to OAuth & Permissions and add these Bot Token Scopes:

Scope Purpose
chat:write Send messages from Nero
channels:read List available channels
channels:history Read messages in channels
users:read Get user display names
users:read.email Get email for contact matching
3

Configure Event Subscriptions

  1. Go to Event Subscriptions
  2. Toggle Enable Events on
  3. Enter the Request URL: https://nerops.ai/api/webhooks/slack
  4. Wait for Slack to show Verified (green checkmark)
  5. Under Subscribe to Bot Events, add:
    • message.channels: messages in channels where the bot is a member
    • app_mention: @mentions of the bot
  6. Click Save Changes
4

Install the app in your workspace

  1. Go to Install App
  2. Click Install to Workspace and authorize
  3. Copy the Bot User OAuth Token (starts with xoxb-)
5

Connect in Nero

  1. Open Nero → SettingsIntegrations
  2. Click Connect on the Slack card
  3. Enter:
    • Bot User OAuth Token: the xoxb- token from Step 4
    • Signing Secret: found under Basic Information in your Slack app settings
  4. Click Save & Connect. Nero validates the credentials and shows your workspace name
6

Add the bot to channels

  1. In Slack, go to each channel you want Nero to monitor
  2. Type /invite @your-bot-name or go to channel settings → IntegrationsAdd an app
7

Select monitored channels

  1. After connecting, Nero shows which channels the bot can see
  2. Select which channels Nero should monitor
  3. Messages in non-selected channels are ignored

Contact matching

When someone sends a message in a monitored channel:

  1. Nero looks up the slack_user_id in your contacts
  2. Not found? Nero fetches name + email from the Slack API
  3. Email match found? The existing contact is linked and the slack_user_id is saved for next time
  4. Still not found? A new contact is auto-created with name, email, and Slack ID

Internal messages

Messages from your own team members are automatically filtered. If a Slack user is linked to a Nero profile (via slack_id in the profile), the message is skipped, no inbound task is created.


Security

  • Signature validation: Every incoming Slack event is cryptographically verified using your Signing Secret. Requests older than 5 minutes are rejected (replay protection).
  • Encrypted credentials: Bot Token and Signing Secret are encrypted before storage. Only server-side functions can decrypt them at runtime.
  • Retry protection: Slack resends events if it doesn't get a 200 response. Nero detects retries via the X-Slack-Retry-Num header and responds immediately to prevent duplicates.