Slack
Everruns integrates with Slack to deploy agents as bots that respond to messages in channels and threads. Messages are received via Slack’s Events API, processed by the agent, and responses are posted back to the conversation.
What You Get
Section titled “What You Get”- Conversational agents in Slack: Users interact with the agent by messaging in channels or threads
- Session routing: Conversations are mapped to sessions by thread, channel, or user
- Secure webhooks: Requests are verified using Slack’s signing secret (HMAC-SHA256)
- Async responses: Slack is acknowledged immediately; the agent response is posted when ready
- Per-app Slack bots: Each Everruns App gets its own Slack App with its own identity, name, and avatar
Quick Start (Manifest)
Section titled “Quick Start (Manifest)”Everruns generates a pre-filled Slack App manifest for each app, making setup faster.
1. Create an App in Everruns
Section titled “1. Create an App in Everruns”- Go to Apps and click New App
- Enter a name, select a Harness and Agent
- Click Create App — you’ll be redirected to the detail page
2. Create the Slack App
Section titled “2. Create the Slack App”- On the App detail page, click Create Slack App
- This opens Slack’s “Create app from manifest” page with pre-filled scopes and bot settings
- Review the manifest and click Create
- Install the app to your workspace when prompted
3. Copy Credentials Back
Section titled “3. Copy Credentials Back”- In your new Slack app, go to Basic Information and copy the Signing Secret
- Go to OAuth & Permissions and copy the Bot User OAuth Token (
xoxb-...) - Back in Everruns, click Configure on the Slack Integration card
- Paste both values and click Save
4. Configure Event Subscriptions
Section titled “4. Configure Event Subscriptions”- Publish the app in Everruns first (so the webhook URL is live)
- Copy the Request URL shown on the app detail page
- In your Slack app settings, go to Event Subscriptions → Enable Events
- Paste the Request URL — Slack will verify it automatically
- Subscribe to bot events:
message.channels,message.groups,message.im,message.mpim,app_mention - Click Save Changes
Note: Event subscriptions require a live webhook URL, so the Everruns app must be published before configuring this step.
5. Start Using
Section titled “5. Start Using”Invite the bot to a channel (/invite @botname) and send a message. The bot will respond using the configured agent.
Quick Start (Manual)
Section titled “Quick Start (Manual)”If you prefer to set up everything manually without the manifest:
1. Create a Slack App
Section titled “1. Create a Slack App”- Go to api.slack.com/apps and click Create New App > From scratch
- Name your app and select the workspace
- Navigate to OAuth & Permissions and add these Bot Token Scopes:
chat:write— Send messageschannels:history— Read messages in public channelsgroups:history— Read messages in private channels (optional)im:history— Read direct messages (optional)mpim:history— Read group direct messages (optional)app_mentions:read— React to @mentions (optional)
- Click Install to Workspace and authorize
- Copy the Bot User OAuth Token (
xoxb-...) from the OAuth page
2. Get the Signing Secret
Section titled “2. Get the Signing Secret”- In your Slack app settings, go to Basic Information
- Under App Credentials, copy the Signing Secret
3. Create an App in Everruns
Section titled “3. Create an App in Everruns”You need a Harness and Agent already configured. Then create an App via the UI or API:
Via UI:
- Go to Apps and click New App
- Enter a name (e.g., “Support Bot”)
- Select your Harness and Agent
- Click Create App
- On the detail page, click Configure under Slack Integration
- Paste the Signing Secret and Bot Token
- Choose a session strategy (default:
per_thread) - Click Save
Via API:
curl -X POST http://localhost:9300/api/v1/apps \ -H "Content-Type: application/json" \ -d '{ "name": "Support Bot", "harness_id": "harness_...", "agent_id": "agent_...", "channel_type": "slack", "channel_config": { "signing_secret": "your-signing-secret", "bot_token": "xoxb-your-bot-token", "session_strategy": "per_thread" } }'4. Publish the App
Section titled “4. Publish the App”Publish to start accepting messages:
curl -X POST http://localhost:9300/api/v1/apps/{app_id}/publishOr click Publish in the UI.
5. Configure the Slack Webhook
Section titled “5. Configure the Slack Webhook”- Copy the webhook URL from the App detail page. It follows this format:
https://your-everruns-host/api/v1/apps/{app_id}/slack/events
- In your Slack app settings, go to Event Subscriptions
- Turn on Enable Events
- Paste the webhook URL as the Request URL — Slack will send a verification challenge that Everruns handles automatically
- Under Subscribe to bot events, add:
message.channels— Messages in public channelsmessage.groups— Messages in private channels (optional)message.im— Direct messages (optional)app_mention— @mentions (optional)
- Click Save Changes
Channel Config Reference
Section titled “Channel Config Reference”| Field | Required | Description |
|---|---|---|
signing_secret | Yes | Slack app signing secret for HMAC-SHA256 verification |
bot_token | Yes | Bot User OAuth Token (xoxb-...) for sending responses |
channel_id | No | Restrict to a specific channel (e.g., C0123456789) |
team_id | No | Slack workspace ID |
session_strategy | No | per_thread (default), per_channel, or per_user |
Session Strategies
Section titled “Session Strategies”The session strategy controls how Slack messages map to Everruns sessions:
| Strategy | Behavior | Tag Pattern |
|---|---|---|
per_thread | Each Slack thread is a separate session | slack:thread:{thread_ts} |
per_channel | One session per Slack channel | slack:channel:{channel} |
per_user | One session per Slack user | slack:user:{user} |
per_thread is recommended for most use cases — it gives each conversation its own context, matching how Slack threads naturally work.
How It Works
Section titled “How It Works”- Slack sends a message event to the webhook endpoint
- Everruns verifies the request using the signing secret
- The request is acknowledged immediately (Slack requires a response within 3 seconds)
- A session is found or created based on the session strategy tags
- The message is sent to the agent, which processes it asynchronously
- Once the agent responds, the response is posted back to Slack via
chat.postMessage
Troubleshooting
Section titled “Troubleshooting””URL verification failed” when setting up Event Subscriptions
Section titled “”URL verification failed” when setting up Event Subscriptions”- Ensure the app is published in Everruns before configuring the webhook in Slack
- Check that the webhook URL is correct and publicly accessible
Bot not responding to messages
Section titled “Bot not responding to messages”- Verify the app is in published status
- Check that the bot has been invited to the channel (
/invite @botname) - Ensure the correct bot events are subscribed (
message.channels, etc.) - Verify the bot token has
chat:writescope
”Request verification failed” errors
Section titled “”Request verification failed” errors”- Confirm the signing secret in Everruns matches the one in Slack’s Basic Information page
- Check that your server clock is accurate (signing verification uses timestamps)