Atlas
Guides

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 admin role
  • DATABASE_URL configured (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:

  1. OAuth (recommended) — Set SLACK_CLIENT_ID and SLACK_CLIENT_SECRET, then click Connect to Slack in the admin UI. This opens Slack's OAuth flow and stores the token per-workspace.

  2. 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 via auth.test and stored per-workspace.

  3. Environment variable — Set SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET directly. 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:

  1. Platform OAuth (recommended) — Set TEAMS_APP_ID and TEAMS_APP_PASSWORD environment variables. The admin UI Connect to Teams button appears once TEAMS_APP_ID is detected, and initiates the admin consent flow.

  2. 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:

  1. Platform OAuth (recommended) — Set DISCORD_CLIENT_ID and DISCORD_CLIENT_SECRET environment variables. The admin UI Connect to Discord button appears once DISCORD_CLIENT_ID is detected, and initiates the OAuth flow to add the bot to your server.

  2. 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.

  1. Create a bot via BotFather on Telegram
  2. Copy the bot token
  3. On the Integrations page, enter the token in the Bot Token field on the Telegram card
  4. 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.

  1. Create a service account in Google Cloud Console
  2. Enable the Google Chat API for the project
  3. Download the JSON key file
  4. On the Integrations page, paste the full JSON key contents into the Service Account JSON textarea
  5. 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.

  1. Create a personal access token on GitHub with the permissions you need
  2. On the Integrations page, enter the token in the Personal Access Token field on the GitHub card
  3. Click Connect — the token is validated via the GitHub API (GET /user)

Connection Details

When connected, the card shows:

  • User — The GitHub @username associated 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.

  1. Go to Linear workspace settings > API and create a new API key
  2. On the Integrations page, paste the key into the API Key field on the Linear card
  3. 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.


WhatsApp

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.

  1. Create or access your WhatsApp Business Account in Meta Business Suite
  2. Copy the Phone Number ID and generate a permanent access token
  3. On the Integrations page, enter both values on the WhatsApp card
  4. 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.


Email

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.

  1. On the Integrations page, select a provider from the Email card dropdown
  2. Enter the sender address (the "From" address for outgoing emails)
  3. 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
  4. 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 bridge
  • RESEND_API_KEY — Resend API key for direct email delivery
  • ATLAS_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

BehaviorSelf-HostedSaaS
Slack setupOAuth, BYOT token, or env varsOAuth via platform, or BYOT token form
Teams setupEnv vars + admin consent, or BYOTAdmin consent flow, or BYOT credentials
Discord setupEnv vars + OAuth, or BYOTOAuth via platform, or BYOT credentials
Telegram setupBot token + internal DBBot token (always configurable)
Google Chat setupService account JSON + internal DBService account JSON (always configurable)
GitHub setupPAT + internal DBPAT (always configurable)
Linear setupAPI key + internal DBAPI key (always configurable)
WhatsApp setupCloud API credentials + internal DBCloud API credentials (always configurable)
Email setupProvider config + internal DB, or env varsProvider config (always configurable)
BYOT fallbackShown when OAuth not configured + internal DB availableShown when platform OAuth not configured
Env var hintsShown when no OAuth and no internal DBHidden — shows "Not Available" instead
DisconnectAvailable for all connected integrationsAvailable for all connected integrations

API Endpoints

All endpoints require admin authentication.

MethodPathDescription
GET/api/v1/admin/integrations/statusGet all integration statuses
POST/api/v1/admin/integrations/slack/byotConnect Slack via bot token (BYOT)
DELETE/api/v1/admin/integrations/slackDisconnect Slack
POST/api/v1/admin/integrations/teams/byotConnect Teams via app credentials (BYOT)
DELETE/api/v1/admin/integrations/teamsDisconnect Teams
POST/api/v1/admin/integrations/discord/byotConnect Discord via bot credentials (BYOT)
DELETE/api/v1/admin/integrations/discordDisconnect Discord
POST/api/v1/admin/integrations/telegramConnect Telegram (validates bot token)
DELETE/api/v1/admin/integrations/telegramDisconnect Telegram
POST/api/v1/admin/integrations/gchatConnect Google Chat (validates service account JSON)
DELETE/api/v1/admin/integrations/gchatDisconnect Google Chat
POST/api/v1/admin/integrations/githubConnect GitHub (validates PAT via GitHub API)
DELETE/api/v1/admin/integrations/githubDisconnect GitHub
POST/api/v1/admin/integrations/linearConnect Linear (validates API key)
DELETE/api/v1/admin/integrations/linearDisconnect Linear
POST/api/v1/admin/integrations/whatsappConnect WhatsApp (validates Cloud API credentials)
DELETE/api/v1/admin/integrations/whatsappDisconnect WhatsApp
POST/api/v1/admin/integrations/emailConnect email provider (SMTP, SendGrid, Postmark, SES)
POST/api/v1/admin/integrations/email/testSend test email using saved config
DELETE/api/v1/admin/integrations/emailDisconnect email provider

See Also

On this page