Prerequisites
- Self-hosted Proliferate instance running and accessible via HTTPS
- Slack workspace admin access
- Your instance URLs:
NEXT_PUBLIC_APP_URL- Your web app (e.g.,https://proliferate.yourcompany.com)- Webhook endpoint:
https://YOUR_APP_URL/api/slack/events
Step 1: Create a Slack App
Go to Slack API
Visit api.slack.com/apps and click Create New App
Slack App Manifest
Step 2: Get Your Credentials
After creating the app, collect these credentials:From Basic Information
From Basic Information
- Client ID →
SLACK_CLIENT_ID - Client Secret →
SLACK_CLIENT_SECRET - Signing Secret →
SLACK_SIGNING_SECRET
From OAuth & Permissions
From OAuth & Permissions
- Bot User OAuth Token → stored automatically per org
The Slack bot token is stored in the database after installation. You do not need to set it manually for each org.
Step 3: Configure Environment
Add these to your.env file:
Step 4: Restart Services
Step 5: Install to Workspace
Troubleshooting
Bot doesn't respond to mentions
Bot doesn't respond to mentions
- Check that the event subscription URL is correct and accessible
- Verify the signing secret matches
- Check gateway logs:
docker-compose logs gateway
OAuth callback fails
OAuth callback fails
- Verify the redirect URL matches exactly (including trailing slashes)
- Check that your APP_URL is accessible from the internet
- Check web logs:
docker-compose logs web
Events not being received
Events not being received
- Go to Event Subscriptions in your Slack app
- Click Retry to re-verify the URL
- Ensure your gateway is accessible via HTTPS
Security Notes
Store Slack credentials securely - never commit them to git. Use HTTPS for all URLs since Slack requires it for event subscriptions. Rotate credentials if they’re ever exposed.
Permissions Reference
| Scope | Purpose |
|---|---|
app_mentions:read | Detect when users mention the bot |
chat:write | Send messages and responses |
channels:history | Read message history for context |
channels:read | List channels the bot can access |
channels:join | Join public channels when invited |
groups:* | Same as above for private channels |
im:* | Direct message support |
mpim:* | Group DM support |
users:read | Get user info for mentions |
users:read.email | Match Slack users to Proliferate accounts |
