Integrations Hub
Connect Slack, Microsoft Teams, Discord, Telegram, Google Chat, GitHub, Linear, WhatsApp, Email, and webhooks to Atlas from the admin console.
The Integrations page provides a central hub for connecting Atlas to external platforms. Manage Slack, Microsoft Teams, Discord, Telegram, Google Chat, GitHub, Linear, WhatsApp, Email, and webhook delivery from a single admin page.
Prerequisites
- Managed auth enabled
- A user with the
adminrole DATABASE_URLconfigured (connection state is stored in the internal database)
Overview
Route: /admin/integrations
The page shows a card for each integration with its connection status:
- Connected — Integration is active and working
- Disconnected — Integration is available but not connected
- Not Available — Integration cannot be connected (no OAuth configured and no internal database for BYOT)
A Delivery Channels card at the bottom summarizes all available notification channels (email, Slack, webhook) for use with scheduled tasks.
Slack
Connect Slack to enable the /atlas slash command and thread follow-ups in Slack channels.
Self-Hosted Setup
There are three ways to connect Slack:
-
OAuth (recommended) — Set
SLACK_CLIENT_IDandSLACK_CLIENT_SECRET, then click Connect to Slack in the admin UI. This opens Slack's OAuth flow and stores the token per-workspace. -
Bot token (BYOT) — If OAuth is not configured but an internal database is available (
DATABASE_URL), the card shows a bot token form. Create a Slack app, copy the Bot User OAuth Token (xoxb-...), and enter it on the Integrations page. The token is validated viaauth.testand stored per-workspace. -
Environment variable — Set
SLACK_BOT_TOKENandSLACK_SIGNING_SECRETdirectly. The integration shows as connected, but cannot be managed from the UI.
When using environment variables, the Slack card shows "Using environment variable (SLACK_BOT_TOKEN)" and the Disconnect button is hidden. To enable self-serve management, configure OAuth credentials or use the BYOT token form.
SaaS Mode
In SaaS deployments, workspace admins see a Connect to Slack button if the platform has OAuth configured. If OAuth is not configured, the card falls back to the BYOT token form (since SaaS always has an internal database). The card only shows Not Available when neither OAuth nor BYOT is possible.
Disconnecting
Click Disconnect and confirm in the dialog. The /atlas command and thread follow-ups stop working immediately. You can reconnect at any time.
For the full Slack setup guide, see Slack Integration.
Microsoft Teams
Connect Microsoft Teams to enable @atlas mentions and channel conversations.
Self-Hosted Setup
There are two ways to connect Teams:
-
Platform OAuth (recommended) — Set
TEAMS_APP_IDandTEAMS_APP_PASSWORDenvironment variables. The admin UI Connect to Teams button appears onceTEAMS_APP_IDis detected, and initiates the admin consent flow. -
App credentials (BYOT) — If platform env vars are not set but an internal database is available (
DATABASE_URL), the card shows a credentials form. Create an Azure Bot, copy the App ID and App Password, and enter them on the Integrations page. Credentials are validated via Azure AD client credentials token acquisition.
SaaS Mode
Workspace admins see a Connect to Teams button if the platform has Teams configured. If not, the card falls back to the BYOT credentials form. The card only shows Not Available when neither OAuth nor BYOT is possible.
Connection Details
When connected, the card shows:
- Tenant — The Microsoft 365 tenant name
- Tenant ID — The Azure AD tenant identifier
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. The @atlas mentions stop working until you reconnect.
Discord
Connect Discord to enable bot commands and server conversations.
Self-Hosted Setup
There are two ways to connect Discord:
-
Platform OAuth (recommended) — Set
DISCORD_CLIENT_IDandDISCORD_CLIENT_SECRETenvironment variables. The admin UI Connect to Discord button appears onceDISCORD_CLIENT_IDis detected, and initiates the OAuth flow to add the bot to your server. -
Bot credentials (BYOT) — If platform env vars are not set but an internal database is available (
DATABASE_URL), the card shows a credentials form. Create a Discord application, copy the Bot Token, Application ID, and Public Key, and enter them on the Integrations page. The bot token is validated via the Discord API.
SaaS Mode
Workspace admins see a Connect to Discord button if the platform has Discord OAuth configured. If not, the card falls back to the BYOT credentials form. The card only shows Not Available when neither OAuth nor BYOT is possible.
Connection Details
When connected, the card shows:
- Server — The Discord server (guild) name
- Guild ID — The Discord server identifier
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. The bot stops responding in that Discord server until you reconnect.
Telegram
Connect a Telegram bot for chat conversations. Unlike other integrations, Telegram uses a Bot Token rather than an OAuth flow.
Setup
Telegram integration requires an internal database (DATABASE_URL). In SaaS mode it is always configurable; in self-hosted mode it requires the internal database.
- Create a bot via BotFather on Telegram
- Copy the bot token
- On the Integrations page, enter the token in the Bot Token field on the Telegram card
- Click Connect — the token is validated against the Telegram API
Connection Details
When connected, the card shows:
- Bot — The bot's
@username - Bot ID — The Telegram bot identifier
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. The bot stops responding to messages until you reconnect with a new token.
Google Chat
Connect Google Chat for bot conversations in Google Workspace. Unlike other integrations, Google Chat uses a service account (not OAuth).
Setup
Google Chat integration requires an internal database (DATABASE_URL). It is always BYOT — workspace admins provide their own service account credentials.
- Create a service account in Google Cloud Console
- Enable the Google Chat API for the project
- Download the JSON key file
- On the Integrations page, paste the full JSON key contents into the Service Account JSON textarea
- Click Connect — the JSON is validated for required fields (
client_email,private_key)
Connection Details
When connected, the card shows:
- Service Account — The service account email address
- Project ID — The Google Cloud project identifier
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. The Google Chat bot stops responding until you reconnect with new credentials.
GitHub
Connect GitHub for issue tracking and repository integration. GitHub uses a personal access token (PAT).
Setup
GitHub integration requires an internal database (DATABASE_URL). It is always BYOT — workspace admins provide their own PAT.
- Create a personal access token on GitHub with the permissions you need
- On the Integrations page, enter the token in the Personal Access Token field on the GitHub card
- Click Connect — the token is validated via the GitHub API (
GET /user)
Connection Details
When connected, the card shows:
- User — The GitHub
@usernameassociated with the token - Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. GitHub integration stops working until you reconnect with a new token.
Linear
Connect Linear for issue tracking and project management integration. Linear uses a personal API key.
Setup
Linear integration requires an internal database (DATABASE_URL). It is always BYOT — workspace admins provide their own API key.
- Go to Linear workspace settings > API and create a new API key
- On the Integrations page, paste the key into the API Key field on the Linear card
- Click Connect — the key is validated via the Linear GraphQL API (
{ viewer { id name email } })
Connection Details
When connected, the card shows:
- User — The Linear user name associated with the API key
- Email — The Linear user email
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. Linear integration stops working until you reconnect with a new API key.
Connect WhatsApp for messaging and notification delivery. WhatsApp uses the Cloud API via Meta Business Suite.
Setup
WhatsApp integration requires an internal database (DATABASE_URL). It is always BYOT — workspace admins provide their own Cloud API credentials.
- Create or access your WhatsApp Business Account in Meta Business Suite
- Copy the Phone Number ID and generate a permanent access token
- On the Integrations page, enter both values on the WhatsApp card
- Click Connect — the credentials are validated via the Meta Graph API (
GET /v18.0/{phoneNumberId})
Connection Details
When connected, the card shows:
- Phone — The WhatsApp display phone number
- Phone Number ID — The Meta phone number identifier
- Connected — Timestamp of when the connection was established
Disconnecting
Click Disconnect and confirm. WhatsApp messaging stops working until you reconnect with new credentials.
Configure email delivery for digests and notifications. Email supports multiple providers: SMTP, SendGrid, Postmark, and Amazon SES.
Setup
Email integration requires an internal database (DATABASE_URL). Each workspace admin configures their own email delivery provider.
- On the Integrations page, select a provider from the Email card dropdown
- Enter the sender address (the "From" address for outgoing emails)
- Fill in the provider-specific fields:
- SMTP — Host, port, username, password, TLS toggle
- SendGrid — API key from your SendGrid dashboard
- Postmark — Server token from your Postmark server settings
- Amazon SES — AWS region, access key ID, secret access key
- Click Connect — the configuration is saved
Test Email
After connecting, use the Send Test button to verify your configuration. Enter a recipient email address and a test message will be sent using your saved settings.
Connection Details
When connected, the card shows:
- Provider — The email provider type (SMTP, SendGrid, Postmark, SES)
- Sender — The configured sender email address
- Connected — Timestamp of when the configuration was saved
Disconnecting
Click Disconnect and confirm. Email delivery will fall back to environment variables (ATLAS_SMTP_URL or RESEND_API_KEY) or be disabled until reconnected.
Self-Hosted
For self-hosted deployments without an internal database, email delivery is configured via environment variables:
ATLAS_SMTP_URL— Webhook endpoint for SMTP-to-HTTP bridgeRESEND_API_KEY— Resend API key for direct email deliveryATLAS_EMAIL_FROM— Default sender address
Webhooks
The webhook card shows the count of active webhook delivery tasks. Webhooks are created via Scheduled Tasks — the Integrations page provides a summary view.
In SaaS mode with webhook support enabled, a Create Webhook link navigates to the Scheduled Tasks page.
SaaS vs Self-Hosted
| Behavior | Self-Hosted | SaaS |
|---|---|---|
| Slack setup | OAuth, BYOT token, or env vars | OAuth via platform, or BYOT token form |
| Teams setup | Env vars + admin consent, or BYOT | Admin consent flow, or BYOT credentials |
| Discord setup | Env vars + OAuth, or BYOT | OAuth via platform, or BYOT credentials |
| Telegram setup | Bot token + internal DB | Bot token (always configurable) |
| Google Chat setup | Service account JSON + internal DB | Service account JSON (always configurable) |
| GitHub setup | PAT + internal DB | PAT (always configurable) |
| Linear setup | API key + internal DB | API key (always configurable) |
| WhatsApp setup | Cloud API credentials + internal DB | Cloud API credentials (always configurable) |
| Email setup | Provider config + internal DB, or env vars | Provider config (always configurable) |
| BYOT fallback | Shown when OAuth not configured + internal DB available | Shown when platform OAuth not configured |
| Env var hints | Shown when no OAuth and no internal DB | Hidden — shows "Not Available" instead |
| Disconnect | Available for all connected integrations | Available for all connected integrations |
API Endpoints
All endpoints require admin authentication.
| Method | Path | Description |
|---|---|---|
GET | /api/v1/admin/integrations/status | Get all integration statuses |
POST | /api/v1/admin/integrations/slack/byot | Connect Slack via bot token (BYOT) |
DELETE | /api/v1/admin/integrations/slack | Disconnect Slack |
POST | /api/v1/admin/integrations/teams/byot | Connect Teams via app credentials (BYOT) |
DELETE | /api/v1/admin/integrations/teams | Disconnect Teams |
POST | /api/v1/admin/integrations/discord/byot | Connect Discord via bot credentials (BYOT) |
DELETE | /api/v1/admin/integrations/discord | Disconnect Discord |
POST | /api/v1/admin/integrations/telegram | Connect Telegram (validates bot token) |
DELETE | /api/v1/admin/integrations/telegram | Disconnect Telegram |
POST | /api/v1/admin/integrations/gchat | Connect Google Chat (validates service account JSON) |
DELETE | /api/v1/admin/integrations/gchat | Disconnect Google Chat |
POST | /api/v1/admin/integrations/github | Connect GitHub (validates PAT via GitHub API) |
DELETE | /api/v1/admin/integrations/github | Disconnect GitHub |
POST | /api/v1/admin/integrations/linear | Connect Linear (validates API key) |
DELETE | /api/v1/admin/integrations/linear | Disconnect Linear |
POST | /api/v1/admin/integrations/whatsapp | Connect WhatsApp (validates Cloud API credentials) |
DELETE | /api/v1/admin/integrations/whatsapp | Disconnect WhatsApp |
POST | /api/v1/admin/integrations/email | Connect email provider (SMTP, SendGrid, Postmark, SES) |
POST | /api/v1/admin/integrations/email/test | Send test email using saved config |
DELETE | /api/v1/admin/integrations/email | Disconnect email provider |
See Also
- Slack Integration — Full Slack setup guide
- Scheduled Tasks — Create webhook delivery tasks
- Admin Console — Overview of all admin pages