> ## Documentation Index
> Fetch the complete documentation index at: https://docs.relayhub.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Connections and saved logins

> Give a bot your files, mail, calendar, other apps, 1Password logins and passwords, use its own email address, and let other apps send it tasks

A bot can use your accounts to find files, work with your email and calendar, use your other apps and sign in to websites. You connect them in the **Connections** section of the bot settings. The section has these groups:

* **Files**: Google Drive, OneDrive and Dropbox.
* **Mail and calendar**: one row for each Google or Microsoft account, with Gmail and Google Calendar, or Outlook mail and Outlook calendar, inside the row.
* **Apps**: your other apps, for example Slack, Notion, HubSpot or GitHub. The group shows only when your company turned other apps on.
* **Passwords**: 1Password.
* **Saved secrets**: the passwords and keys that you gave the bot on a card.
* **Email for (name)**: **Email address**, the bot's own email address and its mail.
* **Other apps**: **Give it tasks from another app**, the link that a form or an automation service uses to send the bot a task.

## Open Connections

**1. Open the bot**

Open **Bots** and click the bot.

**2. Open its settings**

Click the gear button (**Settings**) on the status control at the top of the page, or open the bot menu (**...**) and click **Settings**.

**3. Click Connections**

The section lists each account with its state, for example "Not connected" or "Connected as [ana@example.com](mailto:ana@example.com)".

## Connect Google Drive, OneDrive or Dropbox

Click the drive, then click **Connect** and sign in to your account. The drive is your own: other bots you own can use it too, and the RelayHub chat uses the same connection. Dropbox connects through the apps connection: its sign-in opens in a small window, and the Dropbox account is the same one as in **Settings** > **Connections** > **Apps**.

If a row or a service line says "Reconnect so (name) can use it", click it and click **Reconnect**. To remove access, click **Disconnect**.

> [!WARNING]
>
> Disconnect removes the account from the chat and from every bot you own. Disconnect only when no bot needs the account.

## Connect Gmail, Google Calendar or Outlook mail

To give a bot your email or calendar, connect the account here. A bot works as you, so it uses your own mail and calendar accounts, the same ones as the RelayHub chat. In **Mail and calendar**, each account has one row: the account and its label, the email under it, and one line for each service. Click **Connect** or **Reconnect** on a service line and sign in. An account that you connect here is also connected for your chats.

With more than one Google account, the group has one row for each account, for example "Google account (acme)". Click **Add another Gmail account** to connect one more inbox. A bot uses the account that the task is about or the account that you name. When it is not clear, the bot asks you which account to use before it writes a draft or changes a message.

You can connect several Microsoft accounts in the same way. Click **Add another Microsoft account** to sign in to one more account; it never replaces an account you already have. Each account has its own label and its own row, for example "Microsoft account (contoso)". When a Microsoft account has OneDrive but no mail yet, its Outlook mail line offers **Connect**. Tell the bot which account to use by its label, for example "draft the reply from the contoso account".

Each Microsoft account row also has an Outlook calendar line. Click **Connect** on the line to let the bot read and change that calendar; one sign-in adds the calendar to the account and keeps its other services. The bot reads the calendar's events and finds free time on its own, and asks you on a card before it adds, changes or cancels an event; when an event has guests, the card says that an invitation goes to them. Tell the bot which account to use by its label.

In **Files**, Google Drive and OneDrive list every account you connected, each with its own state, and **Add another account** connects one more.

Every account row in a bot's **Connections** has one **Disconnect** for the whole account. Your accounts belong to you, not to one bot: when you disconnect an account, chat and every bot you own lose access to it, and your other accounts stay connected. RelayHub asks you to confirm first and names what the account loses, for example its OneDrive and Outlook mail.

When a bot proposes one of these accounts on a card and it is not connected, the card signs you in first. When a bot uses an account, it says which account it used. A bot does not ask you to sign in to Gmail, Google Calendar, Drive, Docs, Outlook mail or OneDrive on its computer when you connected the account here.

### Archive email

A bot can archive email in your Outlook or Gmail inbox. An archive takes a message out of the inbox and keeps it: in Outlook the message goes to your Archive folder, and in Gmail it loses the Inbox label and stays in All Mail. A bot never deletes a message when you ask it to archive, and you can move an archived message back at any time. A bot archives many messages in one step and tells you which messages it could not archive.

The first time a bot archives, it asks you to approve. Choose **Allow always**, and the bot archives without asking again, for example in a weekday morning email routine. Outlook needs no new sign-in. Gmail needs a permission to change labels, which a standard Gmail connection does not include. The first time a bot archives your Gmail, it sends you a card named "Gmail labels, archive and trash". Click **Connect** on the card and approve in the Google window. You do this once for each Gmail account.

## Connect your other apps

In **Apps**, click **Add an app**, search for the app, and click **Connect**. The sign-in page of the app opens in a small window. Sign in and allow access. The window closes by itself, and the row shows the app as connected. An app that you connect serves every bot you own. Each app row has **Reconnect** and **Disconnect**.

When a task needs an app that is not connected, the bot shows a card in its chat with a button to connect the app, and the task waits until you connect it.

### When an app shows Needs setup

Most apps connect with one click. About 96 apps, for example Xero, Shopify, DocuSign, NetSuite, Zoho Sign and Google Chat, show **Needs setup** instead of **Connect**, with the line "Your administrator must set up (app) before you can connect it. Ask them to add it." These apps accept a sign-in only through an OAuth app that your company registers with the app's provider. A bot that needs such an app tells you the same, and the task waits.

The setup is one time for each app, and it takes about 20 minutes:

1. Your company's administrator of the app (for example the owner of your Xero or Zoho account) creates an OAuth app (also named a developer app or API client) in the provider's developer portal, for example `https://developer.xero.com/app/manage` for Xero, `https://console.cloud.google.com/apis/credentials` for Google apps or `https://api-console.zoho.com/` for Zoho. Choose the type for a web server ("Web app"). Add this redirect URL exactly, with no slash at the end: `https://backend.composio.dev/api/v3/toolkits/auth/callback`. Choose the scopes your bots need, and add the refresh scope (often `offline_access`) so that the connection does not expire after one hour. Copy the client ID and the client secret.
2. Send them to the RelayHub team with the app name, the scopes and your company's RelayHub address. Send the secret through a safe way, for example a 1Password share link that expires; never in an email or a chat message.
3. The RelayHub team registers the app for your company. Within one hour, the app shows **Connect**.
4. Each person connects the app in **Add an app**, as for any other app. Every bot of that person then uses the connection.

Problems: "redirect\_uri\_mismatch" means that the redirect URL at the provider is not exactly the one above. A connection that stops after about one hour needs the refresh scope. Some providers (Google, DocuSign, X) limit a new app until a review or a "go live" step. The full guide with every step, the provider portals and the list of apps is the PDF "Setting up an app that shows Needs setup in RelayHub", which the RelayHub team can send you.

Gmail can also connect in **Apps**, and you can connect more than one Gmail account there. Each sign-in adds one more account with its own label, beside your other accounts. When you sign in again to an inbox that is already connected, the new connection replaces the old one and keeps its label. A bot chooses among all your Gmail accounts with one rule, the same rule as for **Mail and calendar**:

* When it is not clear which account to use, the bot asks you first, before any approval card.
* An approval card names the account, for example "Run Create email draft in gmail from work ([work@example.com](mailto:work@example.com))".
* An inbox that is connected in **Mail and calendar** and in **Apps** counts once, as the account in **Mail and calendar**.

**1. Click Connect on the card**

The sign-in page of the app opens in a small window. The card shows "Waiting for you to finish in the other window." and a **Cancel** button.

**2. Sign in and allow access**

The window closes by itself. You stay in the bot chat. The card changes to "(app) connected", and the bot goes on with the task at once.

If you close the window before you allow access, the card shows **Connect** again with the line "The window closed before (app) was connected. The request is still open." Click **Connect** to try again. If your browser blocks the window, or you use a phone, the sign-in opens in the same tab and then brings you back to the same bot chat. Later, the card reads "Connected (app)." When the card expires or you stop the task first, the card reads "Not connected: (app). This request is closed." and has no button. When other apps are not turned on for your company, the **Apps** group does not show, and the bot tells you "Other apps are not turned on for your company yet."

To tell a bot how to use a connector, for example "reply in threads on Slack", click the link in **Connections** to **Settings** > **Connections** > **Connector instructions**. The bot reads your instructions after each result of that connector. For more information, see [Settings](https://docs.relayhub.ai/getting-started/settings.md#connector-instructions).

A bot can also start a routine on an app event, for example a new email or a new issue (see [Routines, groups and helpers](https://docs.relayhub.ai/bots/routines-groups-helpers.md)). **App events** in **Connections** lists each event with its routine; **Delete routine** stops the watch. When you asked for the routine, its events run with no card. A watch from before October 16th, 2026, or a routine on a copied bot, asks you once on an approval card, for example "Gmail sent an event: New Gmail Message. Let this bot handle these events?". **Allow always** keeps the permission "Handle events: New Gmail Message", and **Deny** drops the event. A Linear watch is not available with the app connection that RelayHub uses.

## Give a bot your 1Password logins

The bot signs in to websites with logins from one 1Password vault that you share with it. It fills the login on its own computer. It never sees or says the passwords.

**1. Make a vault for the bot**

In 1Password, create a vault named "Shared with (bot name)". Move the logins you want to share into it.

**2. Make a service account**

On 1Password.com, open **Developer**, then **Service Accounts**. Create a service account with read access to only that vault.

**3. Copy the token**

1Password shows the token of the service account one time. Copy it.

**4. Paste the token in RelayHub**

In the bot settings, open **Connections**, then **1Password** (in **Passwords**). Paste the token in **Service account token**.

**5. Give the expiry date (optional)**

If you set an expiry date for the service account in 1Password, give it in **Token expires on (optional)**. 1Password does not tell RelayHub this date. Click **Connect 1Password**.

After you connect, the page shows "Connected on (date)", the **Shared vaults** and the **Token** group. The **Token** group shows when 1Password last accepted the token and the expiry date. Click **Add a date** or **Change the date** to set it, or **Clear** to remove it. The bot can now use those logins.

From 7 days before the expiry date, the bot reminds you once in its chat to make a new token. The list of connections also shows "Token expires on (date)".

Ask the bot whether it can sign in. It checks its 1Password connection and its saved passwords, and it never shows a password.

| Message | What to do |
| - | - |
| 1Password did not accept this token. Check it and try again. | Copy the token again. A token shows only one time, so make a new one if you lost it. |
| This service account cannot read any vault. Give it read access to one vault. | In 1Password, give the service account read access to the vault. |
| This date is in the past. Give the date when the token expires, or leave it empty. | Give a date of today or later, or leave **Token expires on** empty. |
| Connect again with a new token | 1Password does not accept the token now. It can be expired, or it was deleted. Make a new token in 1Password and paste it on the 1Password page. Until then, the bot cannot sign in with your saved logins, and its sign-in cards offer **Connect 1Password** again. |

> [!NOTE]
>
> Give the service account access to one vault only, with only the logins the bot needs. To stop access, click **Disconnect** on the 1Password page, or delete the service account in 1Password.

## Passwords and keys that you give the bot

When a website or an app needs a password or a key that the bot does not have, the bot asks you on a card in its chat:

* A website sign-in is one card, "Sign in to (site)", with **Username** and the password field. When the bot has no 1Password, the card also has **Connect 1Password**. When you connect 1Password, the card closes and the bot signs in with your saved login.
* Type the value and click **Save**, or click **Not now**. **Remember for (name)** is on, so the bot keeps the value for next time. Turn it off to use the value for this task only.
* A website password is saved under the name "Password for (site)".
* When a site does not accept a saved password, one card asks for a new password under the same name, with the line "The site did not accept the saved password."

When you write a password in your own message for a task, for example "log in with the password Winter2026!", the bot uses it for that task only. It does not show a card for it. The messages and the cards show "(hidden)" in place of the password.

**Saved secrets** lists each saved password or key by its name, never its value. Click **Replace** to give a new value, or **Delete** to remove it.

## The bot's email address

Every bot gets its own email address on `relaybots.ai`, for example `maya@relaybots.ai`. RelayHub makes the address from the name of the bot. You do not set anything to get mail at the address. Its one setting is the switch that lets the bot send from it (see [Mail from the bot's address](#mail-from-the-bots-address)).

Use the address to:

* Sign the bot up for a service. The bot gets the codes and the verification links of the service at this address.
* Send the bot work. People and automations can send a request to the address, and the bot does the task.

### See the address and its mail

In **Connections**, click **Email address** in the group **Email for (name)**. The screen shows the **Address** with **Copy address**, and the switch **Send email from this address**. On a computer, the top of the bot page also shows the address with a copy button.

While RelayHub sets up the address, the row reads "Being set up" and the screen reads "The email address for (name) is being set up." When you archive a bot, its address stops: the row reads "Turned off", and mail to the old address is not delivered.

The **Mail** list under the address shows the mail that came to the address and the mail that the bot sent from it. You cannot change the list. Each row shows the subject, "Received from (sender)" or "Sent to (recipient)" and the time. It also shows what happened to the mail:

* "Started a task:" with a link to the task.
* "Went to a running task:" with a link to the task.
* "From the task:" for mail that the bot sent, with a link to the task.
* "Kept, no task:" with the reason: automatic mail, the daily mail limit, a bot that was not running, or a delivery report.

Click a row to read the mail and see its attachments. Click **Show older mail** to see more rows.

### What the bot does with new mail

| Mail | What the bot does |
| - | - |
| A code or a link that a running task waits for, or a reply to mail that the bot sent in a running task | The mail goes to that task. |
| A newsletter, a mailing list or other automatic mail | The bot keeps the mail. It does not start a task. |
| Mail that would start a task while the bot is paused | The task waits. It starts when you resume the bot. |
| Other mail from a person or an automation | The mail starts a new task, "Email from (sender): (subject)". The attachments of the mail come with the task. |

A reply to mail of a task that is complete starts a new task. After 200 mails in one day, the bot keeps the next mail of that day with no task.

> [!NOTE]
>
> The bot reads the text of a mail as outside content, not as your instructions. Only mail from your own address counts as your words: the email address of your RelayHub account or of an account that you connected. The receiving mail service must also verify that the mail came from that address.

### Mail from the bot's address

The bot sends mail from its own address only after you switch this on, once for each bot. The switch is off until then, also with **Send without asking**. When the bot needs the address, you get an account card. Click **Accept** on the card, or turn on **Send email from this address** in **Settings** > **Connections** > **Email address**. While the switch is off, mail to the address still reaches the bot, and nothing goes from the address. The bot does not use your mailbox in its place.

The switch is off for every bot until you turn it on, also for a bot that sent from the address before. If you decline the card, or nobody answers it for 24 hours, nothing goes from the address, and no new card comes for 7 days. You can turn on the switch at any time. You can also turn it off at any time. An email card from the address cannot send while the switch is off. The card stays open, and **Send** works after you turn on the switch.

After you switch it on, a reply to mail that came to the address goes from the address. The email card names the address that the mail goes from. The usual email rule of the bot in **Permissions** decides when the bot asks you first (see [Permissions and approvals](https://docs.relayhub.ai/bots/permissions.md)).

These limits apply to mail from the address:

* One bot sends at most 10 emails an hour and 50 emails a day. All bots of your RelayHub send at most 1,000 emails a day together.
* One email goes to at most 10 recipients. An email to 10 recipients always waits for your **Send** on the card.
* A large attachment goes as a link. The link works for 7 days.
* When the bot sends a reply without your **Send**, it never replies to automatic mail. It sends at most 5 such replies in one thread, and the next reply waits for your **Send**.
* The bot does not send to an address that could not get its mail before.

When a recipient marks mail from the address as spam, or when too much mail from the address cannot be delivered, the bot stops sending from the address. The chat of the bot and the **Email address** screen tell you. Write to RelayHub support to turn sending on again.

## Give it tasks from another app

Another app, for example a form or an automation service, can send the bot a task. In **Connections**, open **Give it tasks from another app** (the last row). Click **Create a key**, then copy the link with **Copy link** and the key with **Copy key** into that app. **Follow requests from my connected apps** lets the bot act on these requests without asking you the first time. Click **Replace the key** to stop the old key. The technical limits are under "Details for the person who sets up the app".


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.