Skip to main content

Overview

Integrations let each user connect their own external accounts to Experio. Connected services are available in Deep Agent chat via the MCP retrieval path (mcp_action). As an administrator you configure OAuth credentials once in System Settings. Each user completes OAuth on the Integrations page.
IntegrationAdmin configuresUser connects
Google WorkspaceGoogle Cloud OAuth client + APIsGmail, Drive, Calendar, Docs
SlackSlack app OAuth clientWorkspace messages and channels
Organization-wide connectors (e.g. HubSpot) are configured under Admin > MCP > Organization integrations, not on this page.

Prerequisites

  • Admin access to Admin > Settings > System Settings
  • Provider admin access (Google Cloud Console and/or Slack API)
  • Your Experio backend URL (BACKEND_URL), e.g. https://your-domain or http://localhost:8000
OAuth redirect URLs always follow:
{BACKEND_URL}/api/mcp/connections/{provider}/callback
Replace {provider} with google or slack. The URL must match exactly (protocol, host, port).

Google Workspace

1. Create OAuth credentials

1

Open Google Cloud Console

2

Create OAuth client

Create CredentialsOAuth 2.0 Client IDWeb application.Authorized redirect URIs:
https://your-domain/api/mcp/connections/google/callback
http://localhost:8000/api/mcp/connections/google/callback
Copy the Client ID and Client Secret.
Configure the OAuth consent screen first. Add the scopes from step 2 before users connect.

2. Enable Google APIs

Enable each API in APIs & Services > Library:
APIUsed for
Gmail APIEmail read/search
Google Drive APIFiles and search
Google Calendar APIEvents
Google Docs APIDocuments
Google Sheets APISpreadsheets

3. Experio settings

SettingCategory
GOOGLE_MCP_CLIENT_IDAUTH
GOOGLE_MCP_CLIENT_SECRETAUTH

4. Test

User: IntegrationsConnect on Google Workspace → chat: “List my recent emails”.

Slack

Experio uses Slack user OAuth (token type xoxp). Add scopes under User Token Scopes, not bot scopes. Posting messages still requires per-action approval in chat.

1. Create Slack app

1

Create app

At api.slack.com/apps, choose Create New AppFrom scratch. Name the app (e.g. Experio) and select a development workspace.
2

Redirect URLs

Open OAuth & PermissionsRedirect URLs. Add:
https://your-domain/api/mcp/connections/slack/callback
http://localhost:8000/api/mcp/connections/slack/callback
Save URLs.
3

User token scopes

Under ScopesUser Token Scopes, add:
ScopePurpose
channels:history, channels:readPublic channels
groups:history, groups:readPrivate channels
im:history, im:readDMs
mpim:history, mpim:readGroup DMs
users:read, users:read.emailUser identity
search:readMessage search
chat:writePost messages (optional; requires chat approval)
Omit chat:write for read-only search and history.
4

Copy credentials

SettingsBasic InformationApp Credentials. Copy Client ID and Client Secret.

2. Experio settings

SettingCategory
SLACK_MCP_CLIENT_IDAUTH
SLACK_MCP_CLIENT_SECRETAUTH
On new deployments, run npm run config:seed so these keys appear in System Settings. Ensure the Slack MCP server is enabled in admin (seeded by migration).

3. Test

User: IntegrationsConnect on Slack → chat: “Search Slack for messages about launch”.

How it works

  1. User starts OAuth from Integrations; Experio stores encrypted tokens on UserMCPConnection.
  2. The Deep Agent router sends external-service questions to mcp_action → MCP retrieval.
  3. MCP tools run with that user’s credentials (Google session home directory or Slack xoxp token).
  4. Write tools (e.g. Slack post) trigger an in-chat approval step before execution.
If the user has not connected a service, the agent directs them to Integrations.

Troubleshooting

Google

IssueResolution
OAuth fails immediatelyRedirect URI must match exactly in Google Cloud
Missing client_idSet GOOGLE_MCP_CLIENT_ID in System Settings
Permission denied on a toolEnable the matching Google API; user reconnects
Agent ignores Google dataUse Deep Agent; start a new chat after connecting

Slack

IssueResolution
redirect_uri did not matchAdd the exact callback URL under Slack Redirect URLs
invalid_scopeAdd the scope under User Token Scopes; user reconnects
Connect works but no Slack toolsEnable Slack MCP server; confirm Pass 3 migration applied
Search works, post failsAdd chat:write in Slack app; user reconnects