Confluence Server Connector

Genly connects to pages, blog posts, attachments, comments, spaces, labels, likes, and related metadata in Confluence Server. It parses and indexes pages, blog posts, and attachments while inheriting source-system permissions during search.

Currently supported
Confluence Server 6.5
Sync mechanism
Full crawl + webhook incremental
Access boundary
Inherited source permissions
Data location
Customer private environment

1. Key capabilities

  • Genly crawls Confluence pages (including parent/child hierarchy), blog posts, labels, attachments, comments, and related data.
  • Genly respects all user access permissions so users only see search results for documents they are allowed to access. When a user clicks a search result, they are redirected to the Confluence web application, which enforces permissions.
  • The connector uses a hybrid sync model of "full crawl + webhook incremental listening + permission compensation scans." For changes to pages, blogs, attachments, labels, likes, content permissions, space permissions, and user/group relationships, the system can collect and process updates near-real-time after events fire. Content changes continue through parsing and indexing, and search visibility depends on parse, ingest, and index task completion. New or edited comments sync as interaction data attached to pages or blogs and appear in content details, but comment bodies are not independently full-text indexed. Content deleted before it was ever synced cannot be re-fetched from Confluence and can only be cleaned up from historical snapshots.
  • All data is stored in the customer's private environment, ensuring no data leaves the customer environment.
  • Genly uses Atlassian's standard Confluence REST API to retrieve all data.
  • Confluence 6.5 has no native webhook capability. To enable near-real-time sync, Genly provides a proprietary Confluence plugin that listens to Confluence events to deliver webhook functionality.

2. Supported versions

  • Supports Confluence Server 6.5. Contact your Confluence administrator for version information.
  • Genly plans to support Confluence Data Center/Cloud.

3. Crawl and index scope

The Genly Confluence connector crawls three categories of data—content, identity, and activity—to keep indexes fast, comprehensive, and securely manageable.

3.1 Content

  • Crawls pages, blog posts, spaces, attachments, page comments, labels, likes, and related data; indexes pages, blog posts, attachments, and related content.
  • Pages keep their original hierarchy; blog posts are organized by year and month. Both are crawled through standard content list APIs.
  • If the configured connector account can access restricted pages, those pages can be indexed while search results still enforce permissions.

3.2 Activity data and webhooks

Genly handles create, update, delete, move, and permission-change events for fast updates. The tables below list change events supported by the Genly plugin.

3.2.1 Content events

Content webhook events
Event IDConfluence event classDescription
confluence_page_createdPageCreateEventPage created
confluence_page_updatedPageUpdateEventPage updated
confluence_page_trashedPageTrashedEventPage moved to trash
confluence_blogpost_createdBlogPostCreateEventBlog post created
confluence_blogpost_updatedBlogPostUpdateEventBlog post updated
confluence_blogpost_trashedBlogPostTrashedEventBlog post moved to trash
confluence_attachment_createdAttachmentCreateEventAttachment created
confluence_attachment_updatedAttachmentUpdateEventAttachment updated
confluence_attachment_removedAttachmentRemoveEventAttachment removed
confluence_comment_createdCommentCreateEventComment created
confluence_comment_updatedCommentUpdateEventComment updated
confluence_comment_removedCommentRemoveEventComment removed
confluence_like_createdLikeCreatedEventLike added
confluence_like_removedLikeRemovedEventLike removed

3.2.2 Space, label, and permission events

Space, label, and permission webhook events
Event IDConfluence event classDescription
confluence_space_createdSpaceCreateEventSpace created
confluence_space_removedSpaceRemoveEventSpace removed
confluence_label_addedLabelAddEventLabel added
confluence_label_removedLabelRemoveEventLabel removed
confluence_content_permission_changedContentPermissionEventContent permission changed
confluence_space_permission_savedSpacePermissionSaveEventSpace permission saved
confluence_space_permission_removedSpacePermissionRemoveEventSpace permission removed

3.2.3 User, group, and membership events

User, group, and membership webhook events
Event IDEvent classDescription
confluence_user_createdUserCreateEvent / UserCreatedEventUser created
confluence_user_removedUserRemoveEventUser removed
confluence_user_deactivatedUserDeactivateEventUser deactivated
confluence_user_reactivatedUserReactivateEventUser reactivated
confluence_user_profile_picture_updatedUserProfilePictureUpdateEventProfile picture updated
confluence_user_renamedDirectoryUserRenamedEventUser renamed
confluence_user_signupUserSignupEventUser signed up
crowd_user_email_changedUserEmailChangedEventCrowd user email changed
crowd_user_editedUserEditedEventCrowd user profile edited
confluence_group_createdGroupCreateEvent / GroupCreatedEventGroup created
confluence_group_removedGroupRemoveEvent / GroupDeletedEventGroup removed
crowd_group_updatedGroupUpdatedEventCrowd group updated
crowd_group_membership_createdGroupMembershipCreatedEventGroup membership added
crowd_group_membership_deletedGroupMembershipDeletedEventGroup membership removed

3.3 Identity data

  • Crawls all Confluence user information, including usernames, account names, and email addresses.
  • When Confluence version limitations cause user records to diverge from the identity provider, the Genly admin console also supports manual person matching.

4. Known limitations

  • Comments and likes are not indexed, but related comments can be found by searching the commented page or blog.
  • Deleted pages, blogs, attachments, spaces, and similar objects cannot be crawled.
  • After permissions are revoked, the connector account may no longer read restricted pages, blogs, or attachments. The system can refresh visibility through permission events, but re-fetching body content or attachments may fail if the account lacks access.
  • For changes that occurred before deletion but were not delivered by webhook or processed while the connector was offline, the system can only detect differences during the next full crawl or from historical snapshots. If an object was deleted before the full crawl, its content can no longer be fetched.
  • After a user, group, or external directory object is deleted, detail APIs may no longer return complete information. Organization sync tries to delete or unlink using usernames, group names, and historical org data from events, but cannot reconstruct full records for objects that no longer exist.

5. Update frequency

Connector data update frequency
Data categoryCrawl frequencyWebhook incremental capabilityNotes
Identity dataEvery 12–24 hoursSupportedIncludes users, groups, and memberships. Webhooks handle user/group create/delete and membership add/remove. Scheduled crawls calibrate external directory drift, missed events, and historical baselines. For frequent org changes or strong permission dependencies, every 12 hours is recommended; once daily is sufficient for typical scenarios.
Content data (pages/blog posts/attachments/comments/likes/labels)Every 24 hours (adjusted by data volume)SupportedIncludes pages, blogs, attachments, comments, likes, and labels. Page, blog, and attachment create/update/delete can be triggered near-real-time via webhooks. Comments, likes, and labels refresh as attached data when parent content is re-fetched. Full crawls discover missed webhooks, backfill metadata, and reconcile deletion state.
Space permissionsNo dedicated full crawl for space permissions aloneSupports triggering space backfillThere is no scheduled full crawl task scoped only to space permissions. Space permission changes trigger permission backfill for content in that space via webhooks, ultimately affecting page/blog-level visibility. Completion time depends on the number of pages, blogs, and attachments in the space and Confluence API response speed.
Content permissionsSnapshot during document full crawl; permission reconciliation queue processed every 1–3 hoursSupportedPage/blog permission changes can trigger single-content refresh via webhooks. Permission reconciliation does not re-enumerate all space or content permissions; it consumes the page-level permission scan queue written during document ingestion and re-fetches permission snapshots for queued content.

In this table, "webhook incremental" means the system starts collecting and processing changes after an event fires—it does not mean users immediately see final search results. Content changes still require file upload, metadata ingestion, parsing, and indexing. Searchable time depends on queue backlog, file size, parse duration, and index service throughput.

6. How crawling works

The crawler follows traditional crawl strategies, using APIs and the approaches below to fetch and update data:

  • Identity crawl:Updates and adds people data, including users, accounts, and email information.
  • Webhook:Messages sent by the application to notify Genly of changes in near-real-time; Genly then starts a crawl or picks up the change on the next crawl.
  • Content crawl:Full crawl of the application's entire defined scope.

7. Required permissions

The user configuring this connector must have administrator permissions. The Confluence account used must have access to the content being synced.

8. Setup

Follow these steps to connect Confluence Server to Genly.

8.1 Create a service account for Genly

  1. Sign in to Confluence as an administrator.
  2. Go to User management.
  3. Create a user with any name, email, and password.
  4. Click Edit groups.
  5. Add the service account to confluence-administrators.

8.2 Create a Confluence data source

  1. In the Genly admin console, create a Confluence data source and enter the server base URL on the setup page—for example, https://confluence.mydomain.com.
  2. Enter the username and password created in step 8.1.
  3. Click Test connection to verify connectivity to the Confluence instance.
  4. Click Save to create the Confluence data source.

8.3 Create a Confluence identity connector

  1. In the Genly admin console, open People & Organization and click Sync from other apps.
  2. Click Add people sync, choose Confluence, and select the Confluence data source instance in the dialog.
  3. Click Create to finish creating the identity connector.

8.4 Install the Confluence plugin and create the Confluence connector

  1. In the Genly admin console, open Connectors and click Add connector.
  2. Choose Confluence, click Next, and select the Confluence data source instance.
  3. On the confirm connection step, click [Plugin] to download the Confluence plugin.
  1. In the Confluence admin console, open the plugin management page, upload, and install the Confluence plugin.
  2. Confirm that Atlassian WebHooks Genly Plugin is installed and enabled.
  3. In the Genly admin console, click Test connection, then Next. Select specific spaces or all spaces in Confluence to sync, check the content types to sync below, and create a flat label taxonomy in Knowledge Labels first if you need label sync.
  4. Click Next to finish creating the Confluence connector.

9. Confluence API endpoints

Confluence REST API endpoints
PurposePathMethod
Verify Confluence connectivity and authentication/rest/api/user/currentGET
List spaces for full crawl enumeration/rest/api/space?start={start}&limit={limit}GET
List pages in a space/rest/api/space/{spaceKey}/content/page?start={start}&limit={limit}&expand=body.storage,body.export_view,version,history,space,ancestorsGET
List blog posts in a space/rest/api/space/{spaceKey}/content/blogpost?start={start}&limit={limit}&expand=body.storage,body.export_view,version,history,space,ancestorsGET
Fetch page/blog details, body, version, history, space, and ancestors/rest/api/content/{id}?expand=body.storage,body.export_view,version,history,space,ancestorsGET
Fetch content restrictions for view and edit permissions/rest/api/content/{id}/restriction/byOperationGET
List content attachments for ingestion and event enrichment/rest/api/content/{id}/child/attachment?start={start}&limit={limit}&expand=version,history,container,metadata,extensionsGET
Download attachment binary content{downloadUrl},通常来自附件 _links.download,例如 /download/attachments/...GET
List content labels/rest/api/content/{id}/label?start={start}&limit={limit}GET
List comments and comment bodies/rest/api/content/{id}/child/comment?start={start}&limit={limit}&expand=body.storage,versionGET
List content likes/rest/likes/1.0/content/{id}/likesGET
Query all users via CQL for org sync and anonymous permission fallback/rest/api/search?cql=type=user&start={start}&limit={limit}GET
Fetch a user for username to userKey mapping/rest/api/user?username={username}GET
Fetch user profile by key or username in org sync flows/rest/api/user?key={userKey} 或 /rest/api/user?username={username}GET
Fetch groups for a user to refresh membership/rest/api/user/memberof?key={userKey} 或 /rest/api/user/memberof?username={username}GET
Fetch mobile profile details such as email and avatar/rest/mobile/1.0/profile/{username}GET
List groups for org sync and user fallback enumeration/rest/api/group?start={start}&limit={limit}GET
List members of a group/rest/api/group/{groupName}/member?start={start}&limit={limit}GET
Fetch space permission sets to expand visibility/rpc/json-rpc/confluenceservice-v2?os_authType=basic,body method 为 getSpacePermissionSetsPOST
List registered webhooks/rest/webhooks/1.0/webhookGET
Register a webhook listener/rest/webhooks/1.0/webhookPOST
Delete a webhook listener/rest/webhooks/1.0/webhook/{id}DELETE