Guide
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)
- A customer sends a message in a monitored Slack channel
- Slack sends an event to the Nero webhook
- Nero validates the request signature, checks if the channel is monitored, and filters out bot messages and internal team members
- The sender is matched to a Nero contact (or auto-created)
- The message enters the debounce queue (30 seconds)
- 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)
- A team member clicks Reply on a Slack task in Nero
- The compose sheet shows the channel name and thread context
- 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
- Go to api.slack.com/apps
- Click Create New App → From scratch
- 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
- Go to Event Subscriptions
- Toggle Enable Events on
- Enter the Request URL:
https://nerops.ai/api/webhooks/slack - Wait for Slack to show Verified (green checkmark)
- Under Subscribe to Bot Events, add:
message.channels: messages in channels where the bot is a memberapp_mention: @mentions of the bot
- Click Save Changes
4
Install the app in your workspace
- Go to Install App
- Click Install to Workspace and authorize
- Copy the Bot User OAuth Token (starts with
xoxb-)
5
Connect in Nero
- Open Nero → Settings → Integrations
- Click Connect on the Slack card
- Enter:
- Bot User OAuth Token: the
xoxb-token from Step 4 - Signing Secret: found under Basic Information in your Slack app settings
- Bot User OAuth Token: the
- Click Save & Connect. Nero validates the credentials and shows your workspace name
6
Add the bot to channels
- In Slack, go to each channel you want Nero to monitor
- Type
/invite @your-bot-nameor go to channel settings → Integrations → Add an app
7
Select monitored channels
- After connecting, Nero shows which channels the bot can see
- Select which channels Nero should monitor
- Messages in non-selected channels are ignored
Contact matching
When someone sends a message in a monitored channel:
- Nero looks up the
slack_user_idin your contacts - Not found? Nero fetches name + email from the Slack API
- Email match found? The existing contact is linked and the
slack_user_idis saved for next time - 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-Numheader and responds immediately to prevent duplicates.