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

# Integrations

> Connect Circuit to external systems for document sync and for live data access during agent chats.

Circuit integrates with external systems in two different ways, and they solve different problems:

* **Feeds** sync documents from a source system into an index so Circuit can search them. Once a feed is running, the documents are copies in Circuit. Your agent reads them during chats the same way it reads any other indexed document.
* **Agent tools** let an agent reach into an external system *while a chat is happening* to read or write live data: look up a Salesforce account, draft an email in Outlook, pull a record from Dynamics, find a file in Google Drive. Nothing is copied into an index. The agent makes the call at the moment the user asks.

Most workspaces use both. Feeds keep your reference library (catalogs, manuals, policies) searchable. Agent tools give agents access to the systems of record where live data lives.

## Feeds

Feeds connect your indexes to external document sources and keep them synchronized. Instead of manually uploading documents, you can set up a feed that automatically imports and updates content from your existing systems.

If you are an IT or security reviewer evaluating Circuit before users connect, start with [Integration security and admin consent](/it/integration-security).

## At a glance

| Integration                                                                  | Type       | Authenticates with    | Reads                               | Writes                           |
| ---------------------------------------------------------------------------- | ---------- | --------------------- | ----------------------------------- | -------------------------------- |
| [Azure Blob Storage](/admin/integrations/feeds/azure-blob)                   | Feed       | Shared key            | Blob containers                     | None                             |
| [Bluebeam](/admin/integrations/agent-tools/bluebeam)                         | Agent tool | OAuth                 | Projects, documents, sessions       | Annotations, Studio sessions     |
| [Confluence](/admin/integrations/feeds/confluence)                           | Feed       | OAuth (Atlassian)     | Spaces and pages                    | None                             |
| [GitHub](/admin/integrations/feeds/github)                                   | Feed       | Personal access token | Repository contents                 | None                             |
| [Google Drive](/admin/integrations/feeds/google-drive)                       | Feed       | OAuth (Google)        | Files in My Drive and shared drives | None                             |
| [Google Workspace](/admin/integrations/agent-tools/google-workspace)         | Agent tool | OAuth (Google)        | Gmail, Calendar, Contacts           | Gmail drafts                     |
| [HubSpot](/admin/integrations/agent-tools/hubspot)                           | Agent tool | Private app token     | None                                | Transactional emails             |
| [HubSpot Forms](/admin/integrations/feeds/hubspot-forms)                     | Feed       | Private app token     | Form submissions                    | None                             |
| [Microsoft Dynamics 365](/admin/integrations/agent-tools/microsoft-dynamics) | Agent tool | OAuth (Entra)         | Entities                            | Entities                         |
| [Microsoft Outlook](/admin/integrations/agent-tools/microsoft-outlook)       | Agent tool | OAuth (Entra)         | Mail (including shared mailboxes)   | Drafts only                      |
| [Notion](/admin/integrations/feeds/notion)                                   | Feed       | OAuth (Notion)        | Pages and databases you share       | None                             |
| [OneDrive](/admin/integrations/feeds/onedrive)                               | Feed       | OAuth (Entra)         | Files you select                    | None                             |
| [RSS](/admin/integrations/feeds/rss)                                         | Feed       | None                  | Public feed contents                | None                             |
| [Salesforce](/admin/integrations/agent-tools/salesforce)                     | Agent tool | OAuth with PKCE       | Records, schema                     | Records                          |
| [SharePoint](/admin/integrations/feeds/sharepoint)                           | Feed       | OAuth (Entra)         | Sites the admin authorizes          | None                             |
| [Slack](/admin/integrations/agent-tools/slack)                               | Agent tool | Bot token             | None                                | Messages to channels and threads |

## All integrations

<CardGroup cols={3}>
  <Card title="Azure Blob Storage" href="/admin/integrations/feeds/azure-blob">
    **Feed** · Sync documents from blob containers.
  </Card>

  <Card title="Bluebeam" href="/admin/integrations/agent-tools/bluebeam">
    **Agent tool** · Read projects and documents, manage annotations and Studio sessions.
  </Card>

  <Card title="Confluence" href="/admin/integrations/feeds/confluence">
    **Feed** · Sync pages from Confluence spaces.
  </Card>

  <Card title="GitHub" href="/admin/integrations/feeds/github">
    **Feed** · Sync repository contents and documentation.
  </Card>

  <Card title="Google Drive" href="/admin/integrations/feeds/google-drive">
    **Feed** · Sync documents from My Drive and shared drives.
  </Card>

  <Card title="Google Workspace" href="/admin/integrations/agent-tools/google-workspace">
    **Agent tool** · Read Gmail and Calendar, draft Gmail replies, look up contacts.
  </Card>

  <Card title="HubSpot" href="/admin/integrations/agent-tools/hubspot">
    **Agent tool** · Send transactional emails from a HubSpot template.
  </Card>

  <Card title="HubSpot Forms" href="/admin/integrations/feeds/hubspot-forms">
    **Feed** · Sync form submissions as documents.
  </Card>

  <Card title="Microsoft Dynamics 365" href="/admin/integrations/agent-tools/microsoft-dynamics">
    **Agent tool** · Read and update Dynamics records.
  </Card>

  <Card title="Microsoft Outlook" href="/admin/integrations/agent-tools/microsoft-outlook">
    **Agent tool** · Read mail and draft replies.
  </Card>

  <Card title="Notion" href="/admin/integrations/feeds/notion">
    **Feed** · Sync pages and databases you share with Circuit.
  </Card>

  <Card title="OneDrive" href="/admin/integrations/feeds/onedrive">
    **Feed** · Sync documents from a user's OneDrive.
  </Card>

  <Card title="RSS" href="/admin/integrations/feeds/rss">
    **Feed** · Sync content from any public RSS or Atom feed.
  </Card>

  <Card title="Salesforce" href="/admin/integrations/agent-tools/salesforce">
    **Agent tool** · Query, create, and update records. Production and sandbox.
  </Card>

  <Card title="SharePoint" href="/admin/integrations/feeds/sharepoint">
    **Feed** · Sync documents from SharePoint sites and libraries.
  </Card>

  <Card title="Slack" href="/admin/integrations/agent-tools/slack">
    **Agent tool** · Post messages to channels and threads.
  </Card>
</CardGroup>

### How feeds work

When you connect a feed to an index:

1. **Initial import**: Circuit imports all documents from the configured source.
2. **Ongoing updates**: Circuit periodically checks for changes and re-imports updated documents.
3. **Deletions**: If a document is removed from the source, it is removed from the index on the next update.

This keeps your index in sync with your source of truth without manual intervention.

### Setting up a feed

<Steps>
  <Step title="Choose the source">
    Navigate to your index and open its **Integrations** tab. Each feed appears as a row with a status badge: **Active** (green) when syncing normally, or a yellow badge such as **Error** or **Paused** when attention is needed. Hover the badge to see the reason.
  </Step>

  <Step title="Authenticate">
    Connect Circuit to your external system using OAuth or an API token, depending on the source.
  </Step>

  <Step title="Select content">
    Choose which spaces, folders, or pages to import. You can sync an entire workspace or select specific areas.
  </Step>

  <Step title="Start the integration">
    Begin the initial import. Depending on the volume of content, this may take several minutes to a few hours.
  </Step>
</Steps>

To pause, edit, or remove a feed later, use the actions menu on the feed's row on the index's **Integrations** tab.

### Feed best practices

* **Be selective**: Sync the folders, spaces, or repositories that contain relevant, current content. Indexing your entire cloud storage usually hurts quality.
* **Organize at the source**: Feeds reflect the structure they pull from. A clean source produces a clean index.
* **Monitor feed health**: Check periodically that feeds are syncing successfully. Some integrations require occasional reconnection if a user's permissions change.
* **Avoid duplicates**: If the same content lives in multiple feeds or is also uploaded manually, agents may surface duplicate results.

<Note>
  Feed update frequency depends on your plan and configuration. Changes in the source typically appear in Circuit within a few hours.
</Note>

## Agent tools

Agent tools give an agent a live connection to an external system so it can read or write data during a chat. When an agent has an available tool, users can ask things like "show me open opportunities for Acme in Salesforce" or "draft a reply to the latest email from [sarah@example.com](mailto:sarah@example.com)" and the agent queries the system and responds with current data.

<Note>
  **When do they run?** Agent tools run *at chat time*: an agent uses them on demand while talking to a user, like sending one Slack message or writing one Salesforce record. Feeds run *ahead of time* on a sync schedule: they bring external content into an index so agents can search it any time. The HubSpot pair illustrates the split: [HubSpot](/admin/integrations/agent-tools/hubspot) (agent tool) sends transactional emails at chat time; [HubSpot Forms](/admin/integrations/feeds/hubspot-forms) (feed) imports past form submissions into an index ahead of time.
</Note>

Agent tools are configured at one of two levels:

* **Per user** (**Connected Accounts** on your profile): each user connects their own account. The agent uses the signed-in user's credentials and only sees what that user already has permission to see. This is the default for most integrations.
* **Per agent** (**Integrations** tab in the agent editor): an administrator attaches shared credentials to a specific agent. The agent uses the same credentials for every user. Currently this path is used for HubSpot.

### Connected accounts (per user)

Each user connects their own external accounts from their profile. Go to your profile and find the **Connected Accounts** section. Supported providers include Salesforce, Microsoft Dynamics, Microsoft Outlook, Google Workspace, and Bluebeam.

Each provider appears as a row with a short description ("Connect your Salesforce account to access customer data"). To connect:

<Steps>
  <Step title="Click Connect">
    The button reads **Connect** when the account isn't linked yet. It changes to **Connecting...** while you're being redirected.
  </Step>

  <Step title="Sign in with the provider">
    Circuit opens the provider's sign-in page (Salesforce, Microsoft, Google) and asks you to approve access. Follow the provider's normal consent flow.
  </Step>

  <Step title="Review the connection">
    After consenting, you return to your profile. The row now shows your signed-in email ("Connected as [sarah@example.com](mailto:sarah@example.com)") and a **Disconnect** button.
  </Step>
</Steps>

Agents that have tools for a connected provider can now use those tools on your behalf. Because the connection is tied to your user, the agent only sees records, files, or emails you already have access to in the source system. Another user chatting with the same agent uses their own connection and sees their own data.

<Note>
  Disconnecting an account from your profile revokes Circuit's access on the next attempt. Ongoing chats will see the tool fail; new chats will behave as if the integration is unavailable until you reconnect.
</Note>

### Per-agent integrations

Some integrations are configured on a specific agent instead of per-user, so every user of that agent shares the same connection. Open the agent in the admin console and select the **Integrations** tab.

The fields shown depend on the provider. For HubSpot, the form exposes:

* **HubSpot Access Token**: a private-app access token from your HubSpot account.
* **HubSpot Email ID**: the email address Circuit will impersonate when making calls (typically a shared integration user).

Fill in the fields and click **Save**. The agent can now call HubSpot on behalf of every user who chats with it. Because the credentials are shared, be thoughtful about who has access to the agent and what the agent is configured to do.

### How agent tools differ from feeds

|                       | Feed                                                    | Agent tool                                                                |
| --------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------- |
| **What it does**      | Copies documents from a source into an index            | Calls the source system live during a chat                                |
| **Where data lives**  | Inside a Circuit index                                  | Stays in the source system                                                |
| **When data is read** | On sync, then searched from the index                   | At the moment the user asks                                               |
| **Best for**          | Static reference material (catalogs, manuals, policies) | Live records that change often (opportunities, tickets, emails, calendar) |
| **Configured on**     | An index                                                | A user profile or an agent                                                |

A single workspace typically uses both. For example: a sales agent might have a feed syncing product catalogs into a reference index, and a Salesforce tool so it can look up the specific opportunity the user is working on.

### Best practices for agent tools

* **Prefer per-user connections when possible.** They inherit the user's permissions, which keeps data access aligned with what each person is already allowed to see.
* **Document what the agent will do.** If an agent has write access (for example, can draft Outlook emails), make this explicit in the agent's description so users aren't surprised.
* **Rotate shared credentials regularly.** Per-agent tokens don't expire on their own. Refresh them on whatever cadence your security policy requires.
* **Use [groups](/admin/groups) to scope access.** Per-agent integrations apply to every user of the agent; if only part of the team should have that power, share the agent with a group rather than the whole workspace.

Don't see what you need? Some integrations are [in development](/admin/integrations/coming-soon). For others, contact your Circuit account representative or use in-app support to request priority.
