Slack
Connect your Slack workspace to AnswerLoops — via 1-click OAuth or polling mode with no webhook required.
AnswerLoops supports two Slack connection paths. On managed cloud, every workspace connects via 1-click OAuth and gets instant delivery automatically — there's no polling fallback to choose, since the platform already has a public webhook URL. Polling mode is a self-hosted-only option for operators who can't expose one.
1-click OAuth
Admin installs via OAuth. Channel picker auto-populates. Real-time-capable via Events API.
Polling mode
Paste a read-only bot token. No webhook, no inbound connections, no admin approval needed.
Option A: 1-click OAuth
The platform operator sets three env vars once. Every user then sees Add to Slack and authorizes in one click — no credentials to copy.
Prerequisites: SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, SLACK_SIGNING_SECRET set on the server. See Environment Variables.
How it works:
- User clicks Add to Slack in the onboarding wizard (or Settings → Integrations)
- Slack OAuth page → user selects workspace → authorizes
- AnswerLoops exchanges the code for a bot token, stores it encrypted
- Channel picker loads automatically from your workspace — in the onboarding wizard this happens inline before the next step; in Settings it appears on the same page
- Picking a public channel joins the bot to it automatically. Private channels can't be auto-joined by any bot (a Slack platform limit) — add the app manually via that channel's Integrations → Add apps
Add {AUTH_URL}/api/slack/callback to your Slack app's OAuth & Permissions → Redirect URLs before users connect.
Option B: Polling mode (self-hosted only, no admin required)
Not available on managed cloud — every cloud org already gets real-time delivery via Option A's Events API webhook, so a self-hosted-only operator toggle (DEPLOYMENT_MODE) skips starting the polling loop entirely for cloud deployments. This path exists for self-hosters who can't expose a public webhook URL at all.
No OAuth setup. No inbound webhook. No firewall rules. The bot reaches out to Slack's API — never the reverse.
How it works:
- User goes to Settings → Integrations → Slack → Set up manually
- Pastes a bot token (
xoxb-…), Team ID, and channel IDs - AnswerLoops polls
conversations.historyon a configurable interval (default: 60s) - New messages feed into the same AI pipeline as the webhook path
Why enterprises choose polling:
- No inbound HTTP from Slack to your servers
- No public webhook URL required
- No firewall rule changes
- Security review scope: one outbound API call per poll interval
- Read-only token sufficient — no admin scope needed
SLACK_POLL_INTERVAL_SECONDS=60 # default. Minimum recommended: 30.Feature comparison
| 1-click OAuth | Polling mode | |
|---|---|---|
| Setup time | ~1 min | ~2 min |
| Admin approval needed | No | No |
| Inbound webhook required | Optional | No |
| Message latency | Instant (Events API) or 60s (polling) | Configurable (default 60s) |
| Channel picker | Auto | Manual (paste IDs) |
| Signing secret needed | For webhook verification only | No |
| Enterprise firewall-friendly | If webhook is blocked, use polling | ✅ Yes |
Shared capabilities
Both paths share the same pipeline:
- AI deflection with configurable confidence threshold
- 👍/👎 reaction feedback
- CSAT rating prompts (1️⃣–5️⃣ reactions)
- Escalation ping when AI confidence is low
- Ticket creation + deduplication
Setup guide
See Slack App Setup for step-by-step instructions for both paths.