Connecting an app
Communication lists one card per app in the catalog. Today that is Slack 💬, Microsoft Teams 💻, Linear 📐, and Jira 🔷: everything in the provider catalog that is not a cloud provider (AWS/GCP/Azure, on Clouds) or a Git host (GitHub/GitLab, on Repositories). A fifth provider, the Microsoft Teams Bot, exists in the same catalog but is marked hidden. It never shows its own card here; you connect it from inside the Teams configuration panel instead.
Each card shows the app's icon, name, a Connected / Not connected badge, and a one-line description (for example Slack's: "Connect Slack so agents can notify channels and post updates.").
How do I connect an app?
Click connect (or connect another account, once you already have one) on a card. This:
- Calls the backend to start an OAuth attempt and opens a popup window (620×760) for the provider's consent screen.
- If the popup is blocked, you get an inline error: "Popup blocked. Allow popups for this site, then try again."
- Once you close the popup (approved or not), the app polls the backend to complete that exact attempt. This can retry briefly while Nango (the credential vault behind every connection) finishes propagating the new connection; a stale or invalid attempt fails outright rather than retrying forever.
- On success the card flips to Connected and a new account row appears underneath it.
None of these four providers currently accept a pasted personal access token; the "use a token" shortcut you will see on Repositories only applies to GitHub and GitLab. Communication apps are OAuth-only.
You can connect more than one account of the same provider (for example two Slack workspaces, or a personal and a shared Jira instance); each connect click after the first is labelled "connect another account." What each account is actually used for is decided afterward; see Managing accounts and project assignments.
Each connected account, and what can go wrong
Every account row shows its name (whatever the provider calls it: a workspace, an org, a tenant) and:
- A default tag, if it is the account used when nothing more specific is picked.
- A status tag other than "active" (for example expired), in a warning color.
- A new permissions tag if the app's required scopes changed since you connected and you need to re-consent; hovering it names exactly which scopes are new.
- An error strip, if the last call to the provider failed: an error code, which part of the platform hit it, when, and the error message itself.
Reconnect appears next to any account that is not active or needs re-consent, and re-runs the same OAuth popup flow to refresh its credentials. Disconnect (the trash icon) removes that one account only; other accounts of the same provider, and other providers, are unaffected.
Read-only mode
If your role does not include org:integrations:manage (see the permissions), the whole page is read-only: you can see every card, account, and status, but there is no connect, reconnect, or disconnect control anywhere, and a banner at the top says so explicitly.
What if no workspace is selected?
If you have no workspace at all, the page shows a prompt to create one from the sidebar switcher. If you have workspaces but none is currently selected, it prompts you to pick one; integrations always belong to exactly one workspace, never to your user account directly.