Integrations¶
Doable can talk to dozens of third-party SaaS products on your behalf. The agent uses these connections as tools: read your Notion docs to inform a build, post a Slack notification when a project is published, create a Linear ticket from a chat, etc.
Browsing the catalog¶
Workspace Settings → Integrations → Browse.
Categories (source):
| Category | Examples |
|---|---|
| AI / ML | OpenAI, Anthropic, Together, Replicate, Hugging Face, Cohere, Perplexity |
| Communication | Slack, Discord, Telegram, Microsoft Teams, Zoom |
| CRM / Marketing / Social | HubSpot, Mailchimp, ConvertKit, Twitter/X, LinkedIn, Buffer |
| Developer tools | GitHub, GitLab, Bitbucket, Linear, Jira, Sentry, Vercel, Netlify, Cloudflare |
| Finance / E-commerce | Stripe, PayPal, Shopify, Square, QuickBooks, Plaid |
| Productivity | Notion, Google Workspace (Drive, Docs, Sheets, Calendar), Airtable, Asana, Trello, Monday |
The catalog is data-driven; to add a new one, see Contributing → Add an Integration.
Connecting¶
- Click an integration.
- Click Connect. You'll be redirected through OAuth.
- Approve the requested scopes.
- You're returned to Doable with the connection saved.
The OAuth credentials are encrypted with your Doable instance's ENCRYPTION_KEY and stored in the database. The platform admins can see that you connected, never the raw token.
Per-workspace vs per-user¶
By default, integrations are workspace-scoped: once an admin connects Slack, every workspace member can use the Slack tools.
Some integrations support per-user mode (each member connects their own account). The integration's metadata (scope: 'user' vs scope: 'workspace') decides this.
Using integrations in chat¶
Once connected, the integration's tools appear in the agent's tool list automatically. You don't need to "switch on" anything; just ask the agent to do the thing:
- “Post a message in #releases on Slack: 'v0.4 is live'”
- “Read my Notion page titled 'Brand guidelines' and use it for the colors here”
- “Open a Linear ticket assigned to me when this build fails”
The agent picks the right tool based on the integration's exposed schema. Tool calls are policy-gated like any other; see Sandboxing.
Disconnecting¶
Workspace Settings → Integrations → Connected → Disconnect. Tokens are revoked (where the provider supports it) and removed from the DB.
Webhooks from integrations¶
Some integrations register webhooks back into Doable when you connect them, so the agent can react to events (new Stripe customer, new Linear comment, GitHub push). See Webhooks API.
Audit & limits¶
Every integration tool call is logged in Workspace Settings → Audit. You can:
- Filter by integration.
- Revoke specific tools without disconnecting the whole integration.
- See the response payloads (truncated) for every call.
Platform vs personal credentials¶
Some integrations support platform-managed credentials: a platform admin connects the service once, and any user in the workspace can use it without their own OAuth grant. Others still require personal credentials (a per-user OAuth flow). The integration's catalog tile shows which mode it supports. For admin setup, see Integrations Admin.
Your own integration¶
Two paths:
- MCP connector: if you already have an MCP server, just register it under Connectors. No code changes needed in Doable.
- First-class integration: add a definition under
services/api/src/integrations/registry/. See Contributing → Add an Integration.