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

# Confluence

> Team workspace and documentation platform connector

<div className="max-w-2xl mx-auto mt-12">
  <div className="p-6 border border-gray-200 dark:border-gray-700 rounded-lg bg-blue-50 dark:bg-gray-800">
    <div className="flex items-center mb-4">
      <img src="https://mintcdn.com/pipeshub/8k-iBPRh1yJZHQe1/logo/confluence.png?fit=max&auto=format&n=8k-iBPRh1yJZHQe1&q=85&s=90d0e7fb5418167b553db5c420a8c72f" alt="Confluence Logo" className="w-8 h-8 mr-3 object-contain flex-shrink-0" width="567" height="545" data-path="logo/confluence.png" />

      <h2 className="text-2xl font-semibold m-0">Confluence</h2>
    </div>

    <p className="text-lg text-gray-700 dark:text-gray-300 mb-4">Team workspace and documentation platform</p>

    <div className="flex items-center gap-2">
      <span className="px-3 py-1 bg-green-100 dark:bg-green-900 text-green-800 dark:text-green-200 rounded-full text-sm font-medium">
        ✅ Ready
      </span>

      <span className="px-3 py-1 bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 rounded-full text-sm font-medium">
        📖 Documentation Available
      </span>
    </div>
  </div>
</div>

## Overview

Confluence is Atlassian's team workspace and documentation platform, widely used for knowledge bases, product docs, meeting notes, and collaborative content. The Confluence connector syncs spaces, pages, blog posts, comments, attachments, and user information, enabling comprehensive knowledge-base search across your Confluence content.

### What Gets Synced

| Entity             | Description                                         |
| ------------------ | --------------------------------------------------- |
| **Spaces**         | Top-level containers (e.g., Engineering, Marketing) |
| **Pages**          | Full page content with formatting preserved         |
| **Blog Posts**     | All blog post content and metadata                  |
| **Comments**       | Comments on pages and blog posts                    |
| **Attachments**    | Files attached to pages and blog posts              |
| **Users & Groups** | User profiles, group memberships                    |
| **Permissions**    | Space permissions and content restrictions          |

***

## Configuration Guide

The Confluence connector supports **two authentication methods**. Both sync the same data — pick whichever fits your rollout.

### Prerequisite: Email Visibility

<Warning>
  <div className="text-lg font-semibold">
    **Each user in your organization must set their email address to be visible** in order for PipesHub to correctly assign permissions and make records visible to them.
  </div>
</Warning>

This prerequisite applies to **both** authentication methods (OAuth and API Token).

**Why email visibility matters.** PipesHub uses email addresses to match Confluence users with their permissions. If a user's email is hidden:

* PipesHub cannot match the user's Confluence account to their PipesHub account
* Permissions cannot be synced correctly for that user
* The user will not see any Confluence content in PipesHub

**How to configure email visibility.** Every user must complete these steps in their Atlassian account:

1. Click your **profile picture** in the top right → select **Account Settings**.

<div className="text-center">
  <img src="https://mintcdn.com/pipeshub/sDOxTTIVyV4RZm70/images/connectors/confluence/user_profile_settings.png?fit=max&auto=format&n=sDOxTTIVyV4RZm70&q=85&s=5ad3f1f00025db5cc04d76d23b9a0639" alt="Access User Profile Settings" className="block mx-auto w-11/12" width="462" height="756" data-path="images/connectors/confluence/user_profile_settings.png" />
</div>

2. Select the **Profile and visibility** tab.
3. Scroll down to the **Contact** section.
4. In the **Who can see this?** dropdown for your email address, select either **Anyone** (recommended) or **Your organization**.

<div className="text-center">
  <img src="https://mintcdn.com/pipeshub/tuKrsd0BFGek9X3m/images/connectors/confluence/email_visibility_setting.png?fit=max&auto=format&n=tuKrsd0BFGek9X3m&q=85&s=8a512ddfee38ff348ca8dbd9c8a5f543" alt="Set Email Visibility to Organization" className="block mx-auto w-11/12" width="1891" height="986" data-path="images/connectors/confluence/email_visibility_setting.png" />
</div>

<Warning>
  **Do not select "Only you and admins"** — this will prevent PipesHub from accessing your email address and matching you to permissions, making all records invisible to you.
</Warning>

📖 **Official documentation:** [Configure User Email Visibility in Confluence](https://support.atlassian.com/confluence-cloud/docs/configure-user-email-visibility/)

<Info>
  This is a **per-user setting** that must be configured by each individual user. Administrators cannot change this setting for other users. We recommend communicating this requirement to your team during the Confluence connector rollout.
</Info>

### Choose an authentication method

| Method              | Best for                                                                                                                                          |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| **OAuth 2.0 (3LO)** | Multi-user / org-wide rollouts, production — per-user refresh tokens, per-user consent, audit trail. Requires Atlassian Developer Console access. |
| **API Token**       | Single-account setups, quick POCs, or environments where you cannot register an OAuth app. Fastest path to sync.                                  |

<Tabs>
  <Tab title="OAuth 2.0">
    #### Step 1: Access the Atlassian Developer Console

    1. Go to [developer.atlassian.com/console/myapps/](https://developer.atlassian.com/console/myapps/) and sign in with your Atlassian account (must have admin access to your Confluence workspace).
    2. You'll see the **My apps** page where you create and manage OAuth 2.0 integrations.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/create_new_app.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=d58c8d653900c0be546419f674a2effa" alt="Atlassian Developer Console - My Apps" className="block mx-auto w-11/12" width="1917" height="503" data-path="images/connectors/confluence/create_new_app.png" />
    </div>

    #### Step 2: Create a new OAuth 2.0 integration

    1. Click **Create** in the top-right corner.
    2. Select **OAuth 2.0 integration** from the dropdown.
    3. Fill in the application details:
       * **Name:** Enter a meaningful name (e.g., `PipesHub Confluence Connector`).
       * Check the box to agree to Atlassian's developer terms.
    4. Click **Create**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/create_new_app_form.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=0c33f0e57e835ac63998d9ca0e64f7b7" alt="Create OAuth 2.0 Integration Form" className="block mx-auto w-11/12" width="1913" height="893" data-path="images/connectors/confluence/create_new_app_form.png" />
    </div>

    <Info>
      OAuth 2.0 (3LO) integrations use rotating refresh tokens by default, which improves security by limiting token validity and enabling automatic detection of refresh-token reuse.
    </Info>

    #### Step 3: Review the application overview

    After creation, you'll land on the app overview page. It shows:

    * **App ID** — your application's unique identifier
    * **Distribution status** — whether the app is shared publicly
    * **Permissions** — API scopes configured for the app
    * **Authorization** — OAuth 2.0 (3LO) authorization settings

    Use the left sidebar to navigate between **Permissions**, **Authorization**, and **Settings**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/app_overview.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=22cfec1240d7cd000abe3fdd6806631e" alt="Application Overview Page" className="block mx-auto w-11/12" width="1916" height="979" data-path="images/connectors/confluence/app_overview.png" />
    </div>

    #### Step 4: Configure OAuth 2.0 authorization

    1. In the left sidebar, click **Authorization**.
    2. Find **OAuth 2.0 (3LO)** in the authorization types list.
    3. Click **Add** to enable OAuth 2.0 authorization for your app.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/add_oauth.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=b278e56743f68ea8f1fc7c5ee642d8b1" alt="Add OAuth 2.0 Authorization" className="block mx-auto w-11/12" width="1913" height="732" data-path="images/connectors/confluence/add_oauth.png" />
    </div>

    4. **Get the Redirect URL from PipesHub:**
       * In PipesHub, go to **Workspace Settings** → **Connectors**, find **Confluence**, and click **+ Setup** for a new instance.
       * The connector panel opens as a right-side drawer. On the **Authenticate Instance** tab, copy the **Redirect URL**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/confluence_config.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=6d75281a778401542620fe6382978d2d" alt="PipesHub Confluence Authenticate Instance tab — copy the Redirect URL" className="block mx-auto w-11/12" width="1884" height="893" data-path="images/connectors/confluence/confluence_config.png" />
    </div>

    5. Paste the copied URL into the **Callback URL** field in Atlassian Developer Console.
    6. Click **Save changes**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/add_callback_url.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=283b4cf4cb7d26f55d0e0a99d496c720" alt="Add Callback URL in Atlassian" className="block mx-auto w-11/12" width="1914" height="606" data-path="images/connectors/confluence/add_callback_url.png" />
    </div>

    <Warning>
      The Callback URL must match exactly between Atlassian Developer Console and PipesHub. Any difference — trailing slash, protocol, casing — causes authentication to fail.
    </Warning>

    #### Step 5: Add API permissions

    1. In the left sidebar, click **Permissions**.
    2. You'll see a list of available Atlassian APIs.
    3. Add scopes for both **User identity API** and **Confluence API**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/add_api_scopes.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=e7f0f4dbda131f9c517c287e306a34bd" alt="Add API Scopes" className="block mx-auto w-11/12" width="1915" height="926" data-path="images/connectors/confluence/add_api_scopes.png" />
    </div>

    **User Identity API scopes**

    Click **Add** next to User identity API and select:

    | Scope          | Description                                           |
    | -------------- | ----------------------------------------------------- |
    | `read:account` | View user profiles (required for user identification) |

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/user_identity_scopes.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=26f09d6e75b7fe93c48590033315f5d8" alt="User Identity API Scopes" className="block mx-auto w-11/12" width="1913" height="739" data-path="images/connectors/confluence/user_identity_scopes.png" />
    </div>

    <Info>
      The `offline_access` scope is automatically included when you configure OAuth 2.0 (3LO). It enables refresh tokens so scheduled synchronization continues when users are not actively logged in.
    </Info>

    **Confluence API — Classic scopes**

    Click **Add** next to Confluence API. You'll see two tabs: **Classic scopes** and **Granular scopes**. Configure scopes from both.

    First, the **Classic scopes** tab:

    | Scope                             | Description                        |
    | --------------------------------- | ---------------------------------- |
    | `read:confluence-content.all`     | Read all Confluence content        |
    | `read:confluence-content.summary` | Read Confluence content summaries  |
    | `read:confluence-props`           | Read Confluence content properties |
    | `read:confluence-space.summary`   | Read Confluence space summaries    |
    | `read:confluence-user`            | Read Confluence user information   |
    | `read:confluence-groups`          | Read Confluence group information  |
    | `search:confluence`               | Search Confluence content          |

    <Info>
      Classic scopes provide broader access patterns required for certain API endpoints. Some features may not work correctly without them.
    </Info>

    **Confluence API — Granular scopes**

    Next, the **Granular scopes** tab. Add these read permissions:

    | Scope                             | Description                               |
    | --------------------------------- | ----------------------------------------- |
    | `read:content-details:confluence` | View content details and properties       |
    | `read:page:confluence`            | View page content                         |
    | `read:blogpost:confluence`        | View blog post content                    |
    | `read:attachment:confluence`      | View and download attachments             |
    | `read:comment:confluence`         | View comments on pages and blog posts     |
    | `read:space:confluence`           | View space details                        |
    | `read:user:confluence`            | View user details                         |
    | `read:group:confluence`           | View groups and memberships               |
    | `read:permission:confluence`      | View content restrictions and permissions |
    | `read:audit-log:confluence`       | View audit records                        |
    | `read:folder:confluence`          | View folder data                          |
    | `read:email-address:confluence`   | View user email addresses                 |

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/granular_scopes_1.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=3bcfbf592aaa6980ece3764a9584dce9" alt="Confluence API Granular Scopes - Part 1" className="block mx-auto w-11/12" width="1898" height="1087" data-path="images/connectors/confluence/granular_scopes_1.png" />
    </div>

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/granular_scopes_2.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=ea6f7554f497d7fcdffdace68358de74" alt="Confluence API Granular Scopes - Part 2" className="block mx-auto w-11/12" width="1896" height="656" data-path="images/connectors/confluence/granular_scopes_2.png" />
    </div>

    <Note>
      Atlassian recommends not adding more than 50 scopes to your app. Both Classic and Granular scopes are required for full connector functionality.
    </Note>

    #### Step 6: Copy Client ID and Client Secret

    1. In the left sidebar, click **Settings**.
    2. Scroll to the **Authentication details** section.
    3. Copy:
       * **Client ID** — used as **Client ID** in PipesHub.
       * **Secret** — used as **Client Secret** in PipesHub. Copy it immediately.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/auth_creds.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=5b710a1410f9ed90304a962f378b25be" alt="OAuth 2.0 Credentials" className="block mx-auto w-11/12" width="1900" height="1088" data-path="images/connectors/confluence/auth_creds.png" />
    </div>

    <Warning>
      Store the Client ID and Client Secret securely. The secret can be regenerated if needed, but you'll have to update your PipesHub configuration with the new value.
    </Warning>

    #### Step 7: Authenticate Instance tab — enter credentials

    The connector drawer in PipesHub has three tabs: **Authenticate Instance**, **Authorize**, and **Configure Records**. Start on the **Authenticate Instance** tab.

    1. Confirm the **Redirect URL** matches the Callback URL you saved in Atlassian in Step 4.
    2. If your admin has pre-registered an OAuth app, pick it from the **OAuth app** dropdown. Otherwise leave it blank and enter credentials manually.
    3. Enter:
       * **Client ID** — from Step 6
       * **Client Secret** — from Step 6
       * **Atlassian Site URL** — your Confluence site URL (e.g., `https://your-domain.atlassian.net`; no trailing slash)
    4. Click **Next** to move to the **Authorize** tab.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/connector_add_creds.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=9a4de38f0b088d61199081c7cd78e739" alt="Authenticate Instance tab — enter Client ID, Client Secret, and Atlassian Site URL" className="block mx-auto w-11/12" width="1892" height="898" data-path="images/connectors/confluence/connector_add_creds.png" />
    </div>

    <Info>
      The **Atlassian Site URL** targets the specific Confluence Cloud site this connector instance will sync. Use the full site URL including `https://` (e.g., `https://acme.atlassian.net`).
    </Info>

    #### Step 8: Authorize tab — complete the OAuth flow

    On the **Authorize** tab, all the OAuth authorization work happens. The tab shows an **Authenticate** button to kick off the OAuth handshake.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/connector_authenticate_option.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=71b39555a7d2468ca71ee7e6a45f6433" alt="PipesHub Authorize tab with the Authenticate button" className="block mx-auto w-11/12" width="1902" height="895" data-path="images/connectors/confluence/connector_authenticate_option.png" />
    </div>

    1. Click **Authenticate** to start the OAuth flow. A popup opens to Atlassian's authorization page.
    2. Select your Confluence site from the dropdown.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/oauth_page_choose_app.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=65ec36c4c788520ca0eb138c91e8f71f" alt="Choose Confluence Site" className="block mx-auto w-11/12" width="1896" height="1015" data-path="images/connectors/confluence/oauth_page_choose_app.png" />
    </div>

    <Warning>
      **Authorize using the same email as your PipesHub account.** Using a different email causes permission issues on the PipesHub platform.
    </Warning>

    3. Review the permissions requested by the connector and click **Accept**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/kCweJy6wjalPMmdY/images/connectors/confluence/oauth_page_accept.png?fit=max&auto=format&n=kCweJy6wjalPMmdY&q=85&s=84a4e0232de8495e832fa9ff016c23c4" alt="Accept OAuth Permissions" className="block mx-auto w-11/12" width="1894" height="1055" data-path="images/connectors/confluence/oauth_page_accept.png" />
    </div>

    4. The popup closes and returns you to PipesHub. The connector tile shows an **Authenticated** badge with a **Reauthenticate** option.

    5. Click **Next** to move to the **Configure Records** tab.

    #### Step 9: Configure Records tab — sync settings, filters, and indexing

    On the **Configure Records** tab, control how the connector syncs and what gets synced.

    **Sync settings** — configure your synchronization preferences first:

    1. **Sync Strategy** — `Scheduled` or `Manual`.
    2. **Sync Interval** — how often to sync (default: 60 minutes).

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/connector_configure_sync_strategy.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=f8295f845d998905753dd8d190ec4ad9" alt="Configure Sync Strategy" className="block mx-auto w-11/12" width="1895" height="906" data-path="images/connectors/confluence/connector_configure_sync_strategy.png" />
    </div>

    <Note>
      **Scheduled sync** runs automatically at the specified intervals. **Manual sync** requires you to trigger synchronization on-demand.
    </Note>

    **Sync filters** — determine which content is downloaded from Confluence. Data excluded by sync filters is never downloaded.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/confluence-filters.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=3cb63cec22ff4ff194a430a7db772ed9" alt="Confluence Filters Configuration" className="block mx-auto w-11/12" width="1898" height="898" data-path="images/connectors/confluence/confluence-filters.png" />
    </div>

    Available sync filters:

    1. **Space Keys** — filter by Confluence spaces.
       * Operator: `In` (include only) or `Not In` (exclude)
       * Value: one or more space keys (e.g., `ENG`, `MKT`, `PROD`). Space keys are case-sensitive.
       * *Finding space keys:* check your space URL — `https://yourinstance.atlassian.net/wiki/spaces/SPACEKEY/overview` — the `SPACEKEY` is what you need.

    2. **Page IDs** — filter specific pages (includes all child pages automatically).
       * Operator: `In` or `Not In`
       * Value: one or more page IDs (e.g., `88375321`, `90341377`)
       * *Finding page IDs:* check your page URL — the number after `/pages/` is the page ID.

    3. **Blogpost IDs** — filter specific blog posts.
       * Operator: `In` or `Not In`
       * *Finding blogpost IDs:* the number after `/blog/YYYY/MM/DD/` in the URL.

    4. **Modified Date** — filter by last modification date. Operators: `Is After`, `Is Before`, `Is Between`.

    5. **Created Date** — filter by creation date. Same operators.

    **Indexing filters** — control what synced data gets processed for AI search. All data is synced, but only enabled content types are indexed.

    * **Pages:** Index Pages / Index Page Attachments / Index Page Comments (all default: enabled)
    * **Blog posts:** Index Blogposts / Index Blogpost Attachments / Index Blogpost Comments (all default: enabled)

    **Example configurations:**

    * *Sync only Engineering space:* Space Keys → Operator `In`, Value `ENG`
    * *Exclude archived spaces:* Space Keys → Operator `Not In`, Value `ARCHIVE, OLD`
    * *Sync specific documentation tree:* Page IDs → Operator `In`, Value `88375321`
    * *Recent content only:* Modified Date → Operator `Is After`, Date `2024-06-01`
    * *Index pages but not attachments:* disable the **Index Page Attachments** toggle

    Click **Save** to save your configuration. PipesHub confirms the instance is ready with a final dialog — **"Instance is configured and ready to sync"** — offering two choices: **I'll do it later** or **Start syncing now**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/enable_connector.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=ea4197364d2feed0fbacc16137a49a7a" alt="Instance is configured and ready to sync — I'll do it later or Start syncing now" className="block mx-auto w-11/12" width="1888" height="901" data-path="images/connectors/confluence/enable_connector.png" />
    </div>

    Choose **Start syncing now** to kick off the initial sync immediately, or **I'll do it later** to enable the connector without an immediate sync. Monitor the **Indexing Progress** to track sync completion.
  </Tab>

  <Tab title="API Token">
    Use this method when you want the fastest setup and only need a single user account to sync Confluence data. No Atlassian Developer Console access required.

    #### Step 1: Generate an API token in Atlassian

    1. Sign in to [id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens).
    2. Click **Create API token**.
    3. Give it a meaningful label (e.g., `PipesHub Confluence Connector`), set an expiry if you want, and click **Create**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/api_token_create.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=08055845878ab6978e7dded5243dd5b3" alt="Atlassian Create API token dialog" className="block mx-auto w-11/12" width="1919" height="863" data-path="images/connectors/confluence/api_token_create.png" />
    </div>

    4. Atlassian shows the token **once** — click **Copy** and store it securely.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/api_token_copy.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=4671ce38b52607409306c319b72d7e0d" alt="Copy the API token — shown once" className="block mx-auto w-11/12" width="1917" height="869" data-path="images/connectors/confluence/api_token_copy.png" />
    </div>

    <Warning>
      The API token is shown only once. If you close the dialog without copying it, you'll have to create a new token.
    </Warning>

    <Info>
      The token inherits the permissions of the account that created it. Use an account that can read the Confluence spaces you want to sync — ideally a dedicated integration user rather than a personal account.
    </Info>

    #### Step 2: Authenticate Instance tab — enter credentials

    1. In PipesHub, go to **Workspace Settings** → **Connectors**, find **Confluence**, and click **+ Setup**.
    2. The connector panel opens as a right-side drawer with three tabs: **Authenticate Instance**, **Authorize**, and **Configure Records**.
    3. On the **Authenticate Instance** tab, pick **API Token** in the **Authentication method** dropdown.
    4. Enter:
       * **Base URL** — your Confluence site URL (e.g., `https://your-domain.atlassian.net`; no trailing slash)
       * **Email** — your Atlassian account email (the account that created the API token)
       * **API Token** — the token you copied in Step 1
    5. Click **Next**. PipesHub validates the credentials and advances directly to the **Configure Records** tab (the **Authorize** tab is skipped for API Token because the token authenticates on its own).

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/connector_api_token_form.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=026c7e247687e637caaf4a7b15611413" alt="Authenticate Instance tab with API Token method — Base URL, Email, API Token fields" className="block mx-auto w-11/12" width="1894" height="908" data-path="images/connectors/confluence/connector_api_token_form.png" />
    </div>

    <Warning>
      The **Email** must match the Atlassian account that owns the API token. Using a different email causes authentication to fail.
    </Warning>

    #### Step 3: Configure Records tab — sync settings, filters, and indexing

    On the **Configure Records** tab, control how the connector syncs and what gets synced.

    **Sync settings** — configure your synchronization preferences first:

    1. **Sync Strategy** — `Scheduled` or `Manual`.
    2. **Sync Interval** — how often to sync (default: 60 minutes).

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/connector_configure_sync_strategy.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=f8295f845d998905753dd8d190ec4ad9" alt="Configure Sync Strategy" className="block mx-auto w-11/12" width="1895" height="906" data-path="images/connectors/confluence/connector_configure_sync_strategy.png" />
    </div>

    **Sync filters** — determine which content is downloaded from Confluence. Data excluded by sync filters is never downloaded.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/confluence-filters.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=3cb63cec22ff4ff194a430a7db772ed9" alt="Confluence Filters Configuration" className="block mx-auto w-11/12" width="1898" height="898" data-path="images/connectors/confluence/confluence-filters.png" />
    </div>

    Available sync filters:

    1. **Space Keys** — filter by Confluence spaces. Operator `In` / `Not In`; value is one or more space keys (case-sensitive).
    2. **Page IDs** — filter specific pages. Includes all child pages automatically.
    3. **Blogpost IDs** — filter specific blog posts.
    4. **Modified Date** — filter by last modification date. Operators: `Is After`, `Is Before`, `Is Between`.
    5. **Created Date** — filter by creation date. Same operators.

    **Indexing filters** — control what synced data gets processed for AI search.

    * **Pages:** Index Pages / Index Page Attachments / Index Page Comments (all default: enabled)
    * **Blog posts:** Index Blogposts / Index Blogpost Attachments / Index Blogpost Comments (all default: enabled)

    Click **Save** to save your configuration. PipesHub confirms the instance is ready with a final dialog — **"Instance is configured and ready to sync"** — offering two choices: **I'll do it later** or **Start syncing now**.

    <div className="text-center">
      <img src="https://mintcdn.com/pipeshub/Eh3Iq7lh99sZRasD/images/connectors/confluence/enable_connector.png?fit=max&auto=format&n=Eh3Iq7lh99sZRasD&q=85&s=ea4197364d2feed0fbacc16137a49a7a" alt="Instance is configured and ready to sync — I'll do it later or Start syncing now" className="block mx-auto w-11/12" width="1888" height="901" data-path="images/connectors/confluence/enable_connector.png" />
    </div>

    Choose **Start syncing now** to kick off the initial sync immediately, or **I'll do it later** to enable the connector without an immediate sync.
  </Tab>
</Tabs>

## Supported Features

The Confluence connector syncs the following data from your Confluence Cloud workspace:

* **Spaces** — all accessible spaces and their configurations
* **Pages** — full page content with formatting preserved
* **Blog Posts** — all blog post content and metadata
* **Comments** — comments on pages and blog posts
* **Attachments** — files attached to pages and blog posts
* **Users** — user profiles and account information
* **Groups** — user groups and memberships
* **Permissions** — content restrictions and space permissions
* **Folders** — folder structure and organization
* **Audit Logs** — activity records for compliance

<Info>
  This connector is designed for **Confluence Cloud** only. Confluence Data Center and Confluence Server (on-premise) deployments are not supported.
</Info>

## Useful Links

* **Atlassian Developer Console:** [developer.atlassian.com/console/myapps/](https://developer.atlassian.com/console/myapps/)
* **Atlassian API tokens:** [support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/](https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/)
* **OAuth 2.0 (3LO) documentation:** [developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/](https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/)
* **Confluence API scopes reference:** [developer.atlassian.com/cloud/confluence/scopes/](https://developer.atlassian.com/cloud/confluence/scopes/)

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Troubleshooting" icon="circle-exclamation">
    ### Common issues

    **Invalid client credentials error (OAuth):**

    * Verify Client ID and Client Secret are correct — no extra spaces
    * Check that the OAuth app is active in Atlassian Developer Console
    * Regenerate the secret if necessary and update PipesHub

    **Callback URL mismatch error (OAuth):**

    * Ensure the Redirect URL in PipesHub exactly matches the Callback URL in Atlassian
    * Check for trailing slashes, protocol differences (`http` vs `https`), or casing
    * Update both configurations to use the same URL

    **API token authentication fails:**

    * Confirm the token was copied correctly — no leading/trailing whitespace
    * The token may have been revoked or expired; create a new one at [id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
    * Verify the **Email** field matches the Atlassian account that created the token
    * Verify the **Base URL** matches your Confluence site (must include `https://`, no trailing slash, match `*.atlassian.net`)

    **Site URL format issues (OAuth: Atlassian Site URL / API Token: Base URL):**

    * Must include the protocol: `https://`
    * Must **not** include a trailing slash — use `https://acme.atlassian.net`, not `https://acme.atlassian.net/`
    * Must match the actual Confluence Cloud site (usually `*.atlassian.net`)
    * Do not include paths like `/wiki` or `/spaces/...`

    **Authorization failed (OAuth):**

    * Verify you're signing in with an account that has Confluence access
    * Ensure your Confluence site is selected during authorization
    * Check that all required API scopes are configured

    **No data syncing:**

    * Verify the connector status shows **Active**
    * Check that the authenticating user (OAuth) or token-owning user (API Token) has access to Confluence spaces
    * Ensure spaces are not restricted or archived
    * Review sync logs for specific error messages

    **Token expired or sync stopped:**

    * OAuth tokens may expire per Atlassian's policies; disable and re-enable the connector to re-authenticate
    * API tokens can be revoked from the Atlassian account page; generate a new one and update the Authenticate Instance tab
    * Check if the OAuth app is still active in Developer Console

    **Permission denied for specific content:**

    * Verify the authenticating user has read access to the content
    * Check space permissions in Confluence
    * Review page restrictions that may limit access

    <Warning>
      If you modify OAuth application settings in Atlassian Developer Console (Client ID, Secret, Callback URL, or scopes), update the configuration in PipesHub and re-authorize. For API tokens, re-enter the token in the Authenticate Instance tab if you regenerate it.
    </Warning>
  </Accordion>
</AccordionGroup>

## Data Sync Behavior

<AccordionGroup>
  <Accordion title="Synchronization Process" icon="sync">
    ### Initial sync

    * Fetches all accessible content from connected Confluence spaces
    * Indexes pages, blog posts, attachments, and comments
    * Respects user permissions for content visibility
    * Duration depends on the size of your Confluence workspace

    ### Incremental sync

    * Uses timestamp-based synchronization to detect changes
    * Only syncs new or modified content since last sync
    * Efficiently handles additions, updates, and deletions
    * Reduces API calls and sync duration

    ### Permission handling

    * Syncs content based on the authenticating user's permissions
    * Each user sees only content they have access to in Confluence
    * Respects space permissions and page restrictions
    * Maintains Confluence's access control model
  </Accordion>
</AccordionGroup>

***

## FAQ

<AccordionGroup>
  <Accordion title="Which authentication method should I choose?">
    |                       | OAuth 2.0                                  | API Token                              |
    | --------------------- | ------------------------------------------ | -------------------------------------- |
    | **Best for**          | Multi-user / org-wide rollouts, production | Single-account setups, quick POCs      |
    | **Credentials model** | Per-user consent, rotating refresh tokens  | Single token, long-lived until revoked |
    | **Prerequisites**     | Atlassian Developer Console admin access   | Any Atlassian account                  |

    Choose **OAuth** for production and anything that needs per-user attribution. Choose **API Token** when you cannot register a developer-console app or just want to get syncing quickly. Both methods sync the same data.
  </Accordion>

  <Accordion title="What's the difference between Confluence Connector and Confluence Toolset?">
    | Aspect          | Confluence Connector                      | Confluence Toolset                             |
    | --------------- | ----------------------------------------- | ---------------------------------------------- |
    | **Purpose**     | Sync and index Confluence data for search | Enable agents to perform actions in Confluence |
    | **Data Flow**   | One-way (import data into PipesHub)       | Two-way (read and write via API)               |
    | **When to Use** | Query/search pages, spaces, blog posts    | Create pages, update content, manage spaces    |

    **Example:** Use **Confluence Connector** to search and retrieve documentation. Use **Confluence Toolset** to let agents create or update Confluence pages.
  </Accordion>

  <Accordion title="Queries not returning results. What could be wrong?">
    There are three common causes:

    1. **Email mismatch** - The email used during connector authentication doesn't match your PipesHub account email. This causes permission issues preventing you from accessing synced data.
       * **Fix:** Reconfigure the connector and authenticate using the same email as your PipesHub account.

    2. **Records show in "All Records" but not in search** - Documents display in the All Records section but don't appear in search query results.
       * **Fix:** Verify sync filters in the connector settings and ensure indexing has completed. Check that the data matches your search query criteria.

    3. **Data not yet indexed** - The connector is still syncing or hasn't completed the initial indexing process.
       * **Fix:** Go to **Settings > Connectors**, check the sync status, and wait for indexing to complete.
  </Accordion>

  <Accordion title="Is it possible to index only specific Confluence spaces?">
    Yes. When creating a Confluence connector, the admin has the option to apply filters and select specific Confluence spaces for indexing. This allows you to limit the scope of indexed content to only the spaces that are relevant to your organization's needs.
  </Accordion>

  <Accordion title="Is it possible to index only specific pages within a Confluence space?">
    Yes. You can achieve this by following these steps:

    1. **Create a dedicated connector instance** — Create a Confluence connector instance for the space that contains the pages you want to index.

    2. **Select Manual Indexing** — When configuring the connector, choose the **Manual Indexing** option. This gives you granular control over which content gets indexed.

    3. **Select the Confluence space** — Use the filters to select the specific Confluence space that contains the pages you want to index.

    4. **Navigate to specific pages** — Go to **All Records** in the navigation bar, then browse to the specific pages you want to index within the selected Confluence space.
  </Accordion>
</AccordionGroup>

***

<div className="text-center mt-12 p-6 bg-gray-50 dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg max-w-2xl mx-auto">
  <h3 className="text-lg font-semibold mb-2">Ready to Get Started?</h3>

  <p className="text-gray-600 dark:text-gray-400">
    Connect your Confluence workspace to PipesHub in just a few minutes. Follow the step-by-step guide above to enable organization-wide knowledge search and access across all your Confluence content.
  </p>
</div>
