Skip to main content
Confluence Logo
Confluence Cloud

Team workspace and documentation platform

✅ Ready📖 Documentation Available

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.
This page is for Confluence Cloud, the version Atlassian hosts for you. If you run Confluence on your own servers, use the Confluence Data Center connector instead.

What Gets Synced


Configuration Guide

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

Prerequisite: Email Visibility

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.
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.
Access User Profile Settings
  1. Select the Profile and visibility tab.
  2. Scroll down to the Contact section.
  3. In the Who can see this? dropdown for your email address, select either Anyone (recommended) or Your organization.
Set Email Visibility to Organization
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.
📖 Official documentation: Configure User Email Visibility in Confluence
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.

Choose an authentication method

Step 1: Access the Atlassian Developer Console

  1. Go to 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.
Atlassian Developer Console - My Apps

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).
    • Access type: Select Resource-level.
    • Check the box to agree to Atlassian’s developer terms.
  4. Click Create.
Create OAuth 2.0 Integration Form
You must select “Resource-level” access type. PipesHub does not ask for a site URL — the connector uses the exact site you authorize during the OAuth step. If you choose Account-level, authentication will not work.
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.

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.
Application Overview Page

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.
Add OAuth 2.0 Authorization
  1. 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.
PipesHub Confluence Authenticate Instance tab — copy the Redirect URL
  1. Paste the copied URL into the Callback URL field in Atlassian Developer Console.
  2. Click Save changes.
Add Callback URL in Atlassian
The Callback URL must match exactly between Atlassian Developer Console and PipesHub. Any difference — trailing slash, protocol, casing — causes authentication to fail.

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.
Add API Scopes
User Identity API scopesClick Add next to User identity API and select:
User Identity API Scopes
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.
Confluence API — Classic scopesClick Add next to Confluence API. You’ll see two tabs: Classic scopes and Granular scopes. Configure scopes from both.First, the Classic scopes tab:
Classic scopes provide broader access patterns required for certain API endpoints. Some features may not work correctly without them.
Confluence API — Granular scopesNext, the Granular scopes tab. Add these read permissions:
Confluence API Granular Scopes - Part 1
Confluence API Granular Scopes - Part 2
Atlassian recommends not adding more than 50 scopes to your app. Both Classic and Granular scopes are required for full connector functionality.

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.
OAuth 2.0 Credentials
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.

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
    • Grant Jira user access — select Yes or No (see note below).
  4. Click Next to move to the Authorize tab.
Authenticate Instance tab — enter Client ID, Client Secret, and Grant Jira user access
Grant Jira user access. Choose Yes only if your Atlassian OAuth app includes Jira and you’ve added the read:jira-user scope. PipesHub will request that scope during authorization and may use Jira to resolve user emails when Confluence profiles hide them. Choose No if you don’t use Jira on this site or haven’t added that scope.

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.
PipesHub Authorize tab with the Authenticate button
  1. Click Authenticate to start the OAuth flow. A popup opens to Atlassian’s authorization page.
  2. Select your Confluence site from the dropdown.
Choose Confluence Site
Authorize using the same email as your PipesHub account. Using a different email causes permission issues on the PipesHub platform.
  1. Review the permissions requested by the connector and click Accept.
Accept OAuth Permissions
  1. The popup closes and returns you to PipesHub. The connector tile shows an Authenticated badge with a Reauthenticate option.
  2. 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).
Configure Sync Strategy
Scheduled sync runs automatically at the specified intervals. Manual sync requires you to trigger synchronization on-demand.
Sync filters — determine which content is downloaded from Confluence. Data excluded by sync filters is never downloaded. When you narrow the filters, the full sync that follows removes what they now leave out, from search and from storage:
  • Spaces: once the whole space list has been read, a space that is no longer listed is removed with everything in it. That covers a space the space filter now leaves out, and one that was deleted, archived, or that the connector’s account can no longer open. Its sync checkpoints are cleared, so a space listed again later is read in full. A space list that can’t be read to the end, or that comes back empty (for example, because the space filter now leaves out every space), removes no space.
  • Pages and blog posts: a page or blog post is removed when a search of its space finds it without the new filters but not with them. If the search can’t tell (for example, because Confluence hasn’t indexed the page yet), the page is kept and the next sync reads that space in full again.
Confluence Filters Configuration
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.
Date filters apply exactly as set: Is Before keeps content from before that date and time, and Is After keeps content from after it. For Modified Date and Created Date the time defaults to midnight, so Is Before 1 June keeps content up to the end of 31 May, and Is After 1 March starts just after midnight on 1 March. To include 1 June, choose Is Before 2 June. Confluence compares these dates in your site’s time zone, so on a site not set to UTC the edge can shift by that time-zone difference.
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.
Instance is configured and ready to sync — I'll do it later or Start syncing now
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.

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 — footer and inline comments, indexed inside their page or blog post
  • 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
This connector works with Confluence Cloud only. If you run Confluence on your own servers, use the Confluence Data Center connector.

Troubleshooting

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
  • Verify the Email field matches the Atlassian account that created the token
  • Verify the Base URL matches your Confluence site (must include https:// and match *.atlassian.net)
Base URL format issues (API Token):
  • Must include the protocol: https://
  • Must match the actual Confluence Cloud site (usually *.atlassian.net)
  • A trailing slash or a trailing /wiki is fine: https://acme.atlassian.net/wiki works the same as https://acme.atlassian.net
  • Do not include longer paths like /wiki/spaces/...
Error when creating, enabling, saving or testing the connector: PipesHub checks the credentials at each of these steps and fails right away with a specific message:
  • Credentials rejected (401): check the email and API token, or reconnect the OAuth app
  • Missing OAuth scopes: the message names the missing scopes. Add them to the app in Atlassian Developer Console, then reconnect
  • Can’t read Confluence (403): the account signed in but has no Confluence access. Give it Confluence access and permission to view the spaces to sync
  • No site found (404): no Confluence site at that URL. Use the form https://yourcompany.atlassian.net
  • Site unreachable: Confluence did not answer. Check the URL, or try again in a few minutes
Sync failure notices:
  • When a sync ends with anything that failed, partial failures included, PipesHub sends one notice to the connector’s creator and the org admins listing what didn’t finish. Successful syncs send nothing
  • A scheduled or startup sync that can’t start also sends a notice
  • A lasting condition, such as no access to the audit log, is reported when it first appears, not on every sync
Rate limits:
  • The connector paces its requests (at most 10 per second with an API token, 6 per second with OAuth) and retries rate-limited requests, waiting as long as Atlassian’s Retry-After header asks
  • If the OAuth app’s hourly quota runs out, the sync stops cleanly and the notice says when the quota resets. The next sync resumes from the last saved batch. Until then, opening a record’s preview returns 429 with a Retry-After header
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
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.

Data Sync Behavior

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, plus current pages and blog posts that PipesHub doesn’t hold (see Deleted, trashed and hidden content)
  • Each sync also re-checks the 24 hours before the previous sync, so edits made around then aren’t missed. This look-back never goes earlier than a Modified Date Is After date you set
  • Syncs every attachment of a page or blog post, however many it has. If the attachment list can’t be read in full, the attachments already read are kept, and the space’s page or blog post checkpoint doesn’t move, so the next sync reads that time window again. That includes a temporary failure (such as a timeout or rate limit) on the list’s first request, in which case the connector uses the attachments that came with the page or blog post in the search results. If the first request fails for a lasting reason, such as the list not being found, the connector uses those search-result attachments and the checkpoint moves on as usual
  • Reduces API calls and sync duration
  • The sync point moves only after each batch is saved, so a sync that stops early resumes from the last saved batch

Comments

  • Pages and blog posts are indexed with their footer and inline comments inside the page, not as separate items. The Index Page Comments and Index Blogpost Comments settings control whether comments are included
  • A new or edited comment re-indexes its page or blog post
  • Pages indexed before this format switch to it when they next change; there is no mass re-index

Completeness

  • Deleted attachments and deleted folders are removed
  • Attachments added or updated on a page that itself didn’t change are picked up
  • A full sync that couldn’t read part of Confluence removes nothing, and the next sync retries it once
  • A space that fails doesn’t stop the sync of other spaces
  • Images too big to inline in the page are kept as separate file records

Deleted, trashed and hidden content

Each sync lists what the connector’s account can see in every synced space, separately for pages and blog posts: current and archived pages, and current blog posts.
  • Deleted or hidden in Confluence: a stored page or blog post missing from that list is removed from PipesHub, with its file attachments, comments and replies. That covers content that was deleted, moved to the trash or out of the space, or restricted so the account can’t see it.
  • Kept: archived pages the account can see. When a page or blog post is removed, the folders and child pages directly under it stay, and PipesHub lists them at the top of the space.
  • Coming back: each incremental sync also fetches, by ID and within your sync filters, the current pages and blog posts in that list that PipesHub doesn’t hold, whatever their last-modified date. Content the account can see again returns on the next sync.
  • Spaces: a space the account can no longer see, or that the space filter now leaves out, is removed with its records. If it comes back, it is read in full.
  • When Confluence can’t be read: if a space’s list can’t be read to the end, or PipesHub can’t read what it has stored for that space, nothing is removed for that space and content type, and its checkpoint doesn’t move. A space list that can’t be read to the end, or that comes back with no spaces at all, removes no space.
  • When a removal fails partway: removal runs in order: the folders and child pages move to the top of the space, then the file attachments, comments and replies are deleted, then the page or blog post itself. Whatever was done before a failure stays done. For example, if the page itself can’t be deleted, its attachments and comments are already gone; if one attachment can’t be deleted, those deleted before it stay deleted. The space’s other removals for that content type still go ahead, but that type’s checkpoint doesn’t move, so the next sync retries whatever is still stored. Other spaces and the other content type carry on.

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
  • Attachments and comments of a restricted page are restricted the same way as the page. When a page becomes restricted, or stops being restricted, its stored attachments and comments (and their replies) follow
  • A page restricted to a group PipesHub hasn’t synced yet stays restricted; the group’s members get access once the group syncs and the page is read again
  • If a space’s permissions, a group’s members, or a page’s restrictions can’t be read for a temporary reason, PipesHub keeps what it already has and tries again on the next sync. A failed read never opens a page to its whole space and never removes access
  • Restriction changes are found from the audit log. If the audit log can’t be read (the account isn’t a Confluence admin, or the OAuth app lacks read:audit-log:confluence), they are found by re-checking the page, blog post and folder listings instead
  • Restrictions are read in full, including those with more than 100 users or groups
  • Groups deleted in Confluence and users removed from the site lose access
  • Guests and external collaborators are marked as guests
  • “All licensed users” and admin space permissions map to the matching Confluence groups, not to the whole organization. Anonymous access to a space gives everyone in the organization read access
  • Space permissions of users whose email is hidden are kept
  • A page moved without a new version gets its new parent and access

Known limits

  • An attachment deleted without a page edit stays until the page changes or a full sync runs, because Confluence search doesn’t return deleted content. Deleted comments behave the same way
  • A page restricted to a group created during a sync gets that group’s access when the page next changes
  • Atlassian returns at most 10,000 users from its user list. Users past that limit are not synced, and the sync notice says so

FAQ

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.
Example: Use Confluence Connector to search and retrieve documentation. Use Confluence Toolset to let agents create or update Confluence pages.
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.
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.
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.

Ready to Get Started?

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.