
Team workspace and documentation platform
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
Configuration Guide
The Confluence connector supports two authentication methods. Both sync the same data — pick whichever fits your rollout.Prerequisite: Email Visibility
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
- Click your profile picture in the top right → select Account Settings.

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

Choose an authentication method
- OAuth 2.0
- API Token
Step 1: Access the Atlassian Developer Console
- Go to developer.atlassian.com/console/myapps/ and sign in with your Atlassian account (must have admin access to your Confluence workspace).
- You’ll see the My apps page where you create and manage OAuth 2.0 integrations.

Step 2: Create a new OAuth 2.0 integration
- Click Create in the top-right corner.
- Select OAuth 2.0 integration from the dropdown.
- 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.
- Name: Enter a meaningful name (e.g.,
- Click Create.

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

Step 4: Configure OAuth 2.0 authorization
- In the left sidebar, click Authorization.
- Find OAuth 2.0 (3LO) in the authorization types list.
- Click Add to enable OAuth 2.0 authorization for your app.

- 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.

- Paste the copied URL into the Callback URL field in Atlassian Developer Console.
- Click Save changes.

Step 5: Add API permissions
- In the left sidebar, click Permissions.
- You’ll see a list of available Atlassian APIs.
- Add scopes for both User identity API and Confluence API.


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.

Step 6: Copy Client ID and Client Secret
- In the left sidebar, click Settings.
- Scroll to the Authentication details section.
- Copy:
- Client ID — used as Client ID in PipesHub.
- Secret — used as Client Secret in PipesHub. Copy it immediately.

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.- Confirm the Redirect URL matches the Callback URL you saved in Atlassian in Step 4.
- If your admin has pre-registered an OAuth app, pick it from the OAuth app dropdown. Otherwise leave it blank and enter credentials manually.
- Enter:
- Client ID — from Step 6
- Client Secret — from Step 6
- Grant Jira user access — select Yes or No (see note below).
- Click Next to move to the Authorize tab.

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.
- Click Authenticate to start the OAuth flow. A popup opens to Atlassian’s authorization page.
- Select your Confluence site from the dropdown.

- Review the permissions requested by the connector and click Accept.

- The popup closes and returns you to PipesHub. The connector tile shows an Authenticated badge with a Reauthenticate option.
- 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:- Sync Strategy —
ScheduledorManual. - Sync Interval — how often to sync (default: 60 minutes).

- 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.

-
Space Keys — filter by Confluence spaces.
- Operator:
In(include only) orNot 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— theSPACEKEYis what you need.
- Operator:
-
Page IDs — filter specific pages (includes all child pages automatically).
- Operator:
InorNot 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.
- Operator:
-
Blogpost IDs — filter specific blog posts.
- Operator:
InorNot In - Finding blogpost IDs: the number after
/blog/YYYY/MM/DD/in the URL.
- Operator:
-
Modified Date — filter by last modification date. Operators:
Is After,Is Before,Is Between. - Created Date — filter by creation date. Same operators.
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.- 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)
- Sync only Engineering space: Space Keys → Operator
In, ValueENG - Exclude archived spaces: Space Keys → Operator
Not In, ValueARCHIVE, OLD - Sync specific documentation tree: Page IDs → Operator
In, Value88375321 - Recent content only: Modified Date → Operator
Is After, Date2024-06-01 - Index pages but not attachments: disable the Index Page Attachments toggle

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
Useful Links
- Atlassian Developer Console: developer.atlassian.com/console/myapps/
- Atlassian API tokens: 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/
- Confluence API scopes reference: developer.atlassian.com/cloud/confluence/scopes/
Troubleshooting
Troubleshooting
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
- Ensure the Redirect URL in PipesHub exactly matches the Callback URL in Atlassian
- Check for trailing slashes, protocol differences (
httpvshttps), or casing - Update both configurations to use the same URL
- 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)
- Must include the protocol:
https:// - Must match the actual Confluence Cloud site (usually
*.atlassian.net) - A trailing slash or a trailing
/wikiis fine:https://acme.atlassian.net/wikiworks the same ashttps://acme.atlassian.net - Do not include longer paths like
/wiki/spaces/...
- 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
- 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
- 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-Afterheader 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
429with aRetry-Afterheader
- 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
- 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
- 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
- Verify the authenticating user has read access to the content
- Check space permissions in Confluence
- Review page restrictions that may limit access
Data Sync Behavior
Synchronization Process
Synchronization Process
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 Afterdate 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
Which authentication method should I choose?
Which authentication method should I choose?
What's the difference between Confluence Connector and Confluence Toolset?
What's the difference between Confluence Connector and Confluence Toolset?
Queries not returning results. What could be wrong?
Queries not returning results. What could be wrong?
-
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.
-
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.
-
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.
Is it possible to index only specific Confluence spaces?
Is it possible to index only specific Confluence spaces?
Is it possible to index only specific pages within a Confluence space?
Is it possible to index only specific pages within a Confluence space?
- Create a dedicated connector instance — Create a Confluence connector instance for the space that contains the pages you want to index.
- Select Manual Indexing — When configuring the connector, choose the Manual Indexing option. This gives you granular control over which content gets indexed.
- Select the Confluence space — Use the filters to select the specific Confluence space that contains the pages you want to index.
- 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.


