Guides
Connect your accounts
To let a bot act on a third-party service — read your Gmail, check your Stripe balance, write to Notion — you connect that service to GATE once, then delegate the connection to the bot. This page walks through both steps, how to share one connection across several bots, how to revoke, and what to do when a connection breaks.
You do all of this from the dashboard. A bot can never connect or delegate a service for itself; granting access is always a human action. For the why behind this, see Credentials & delegation.
The two steps: connect, then delegate
Connecting and delegating are separate actions.
- Connect (per user). Open the dashboard → Settings and pick the service's page from the sidebar. The Google services — Gmail, Calendar, Drive, Search Console, Analytics, and Ads — share the Settings → Google page; Outlook and OneDrive share Settings → Integrations → Microsoft 365; the rest (Notion, Stripe, Shopify, and so on) each have their own. Click Connect <service> and complete the provider's OAuth flow. The OAuth tokens land inside GATE's integration provider, never inside GATE itself. You, the human, own the connection.
- Delegate (per bot). After connecting, grant individual bots the right to use that connection. The bot then holds a delegation — a pointer to your connection, not the token itself.
Confirm a bot can see the connection by asking it to check — for example, ask your bot to list which accounts it has connected for that service. Its answer lists the connections delegated to this bot. If the connection you just delegated shows up in that list, the bot is ready to use it.
If a bot has more than one connection for the same service, identity-bearing writes require naming which one. On a multi-account bot, a send only goes through once you tell the bot which account to use — otherwise the write is refused so a message never goes out from the wrong mailbox.
One connection, many bots
You connect a service once and can delegate that same connection to as many bots as you like. The reverse also holds: a single bot can hold delegations from several users. Delegation is just a pointer, so there's no extra OAuth flow per bot — connect once, delegate as widely as you need.
Revoking access
Revoking, like granting, is a dashboard action:
- Remove one bot's access by un-delegating the connection from that bot in the dashboard. Other bots keep their delegations.
- Disconnect the service entirely to drop the connection for every bot at once.
You can also revoke from the provider's side. When you do, GATE sees the delegation flip to no_delegation on the bot's next call.
When a connection breaks
A delegated connection can stop working — someone removed the delegation or disconnected the account, or the provider stopped accepting the token. The bot can't fix this itself, but it can tell you about it. There are two distinct errors, and they mean different things.
no_delegation — the bot holds no delegation for the service, or every user who delegated one has disconnected all their accounts. The call fails with HTTP 412:
{
"ok": false,
"error": "no_delegation",
"service": "...",
"bot_id": "...",
"dashboard_url": "...",
"message": "..."
}
The message is written for humans — the bot's job is to relay it, along with the dashboard_url (which opens the bot's Integrations page in the dashboard), to its master (you). Reconnect or re-delegate from there and the bot is back in business.
connection_expired — the delegation is intact, but the provider expired or revoked the token on its end. Re-delegating won't help; the human who owns the connection has to reconnect the account in the dashboard.
For Google services, ask your bot to re-authorize — it produces the sign-in URL (the Settings → Google page) and DMs it to you. This covers Gmail, Calendar, Drive, Search Console, Analytics, and Ads. Outlook and OneDrive reconnect together from Settings → Integrations → Microsoft 365 because they share one Microsoft login.
Two exceptions
Not every integration runs through this connect-then-delegate flow:
- Slack uses GATE's own Slack app, not the general integration provider. Humans bind channels to a bot in the dashboard; from the bot side it's read-only. See Connect to Slack.
- Social (Instagram / LinkedIn / Facebook content and outreach) is a separate system with its own account sign-in. See Connect social accounts.
Going deeper
- See Credentials & delegation for how tokens stay out of the bot and how access flows across orgs, users, and bots.
- See the Integrations matrix for the full list of connectable services and their verbs.
- For Slack specifically, see Connect to Slack.