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

# Confluence

> Index selected Confluence Cloud spaces so their pages are searchable in Knowledgebase.

The Confluence integration indexes selected Confluence Cloud spaces into [Knowledgebase](/knowledgebase). Once connected, Keldyn reads those spaces on a schedule and turns pages (and supported attachments) into searchable, cited passages — with a link back to the page in Confluence.

This is a **knowledge** connector. It does not collect [control evidence](/evidence-and-audits).

<Note>
  Knowledge integrations are managed by **Keldyn admins**. Connecting
  Confluence does not appear for other roles.
</Note>

## What it's used for

Keldyn uses Confluence as a source of organisational wiki pages: policies, runbooks, design records, and the pages your team already treats as canonical. After the first sync, those pages appear under **Confluence** in the Knowledgebase index browser.

Choose spaces that are already meant to be shared with compliance and security reviewers. The spaces — not the Atlassian account — are what limit what Keldyn reads.

## Before you begin

<Steps>
  <Step title="Use Confluence Cloud">
    This integration connects **Confluence Cloud** through Atlassian OAuth. It
    does not connect Confluence Data Center or Server.
  </Step>

  <Step title="Use an account that can open the spaces">
    You connect with your own Atlassian account. Keldyn only ever reads spaces
    and pages that account can already view.
  </Step>

  <Step title="Pick the spaces to include">
    Decide which space keys to index (for example `SEC` or `ENG`). Without at
    least one space selected, Keldyn indexes **nothing** — it will not fall
    back to the whole site.
  </Step>

  <Step title="Keldyn only ever reads">
    The connection requests read-only Confluence scopes. Keldyn never creates,
    edits, or deletes pages.
  </Step>
</Steps>

## Set up the integration

<Steps>
  <Step title="Open Integrations">
    In the Keldyn web app, go to **Integrations**, filter to **Knowledge**, and
    select **Confluence**.
  </Step>

  <Step title="Choose the spaces to index">
    Select one or more Confluence spaces. This is recorded before you grant
    access, so you state what you are exposing before Atlassian asks for
    consent.
  </Step>

  <Step title="Connect">
    Select **Connect** and complete the Atlassian consent screen. Review the
    requested read-only access and approve it. If the account can access more
    than one Confluence site, Keldyn uses the first site Atlassian returns for
    that grant.
  </Step>

  <Step title="Run the first sync">
    After Atlassian returns you to Keldyn, wait for the first backfill or
    select **Sync now**. Open [Knowledgebase](/knowledgebase) and search for a
    phrase that appears only in a selected space to confirm the pages landed.
  </Step>
</Steps>

<Tip>
  Pages appear in the index browser under
  `Confluence/{space}/{parent pages}/…`. Child pages are their own documents.
  Headings on a page become separately retrievable sections, so a question
  about one heading does not have to retrieve the whole page.
</Tip>

## What Keldyn indexes

| Indexed                                                   | Skipped                                  |
| --------------------------------------------------------- | ---------------------------------------- |
| Confluence pages in the selected spaces (macros expanded) | Spaces you did not select                |
| Word (`.docx`), PDF, markdown, and plain-text attachments | Images and other unsupported attachments |
| Nested pages under a selected space                       | Attachments larger than 25 MB            |

An attachment is indexed as **its own document**, filed under its host page. A long attached policy is cited as itself, not as the one-line page it was attached to.

## What data Keldyn collects and why

Keldyn requests **read-only** access and never writes to Confluence. It collects only the data needed to search and cite the spaces you selected.

| Data collected            | What it contains                                                | Why Keldyn collects it                                                         | Refresh                              |
| ------------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------ | ------------------------------------ |
| **Page body**             | The rendered text of each page, converted to markdown           | So Knowledgebase can retrieve and cite the wording                             | Every 5 minutes (changed pages only) |
| **Page metadata**         | Title, ancestor path, last-updated time, and the Confluence URL | To browse the index, rank by freshness, and link a citation back to Confluence | With each sync                       |
| **Supported attachments** | The text of Word, PDF, and text attachments                     | So attached policies are searchable as themselves                              | With each sync                       |
| **Site identity**         | Cloud site URL and name                                         | To address the API and build working page links                                | At connect time                      |

### Permissions and scopes

Keldyn requests these Atlassian scopes. All are read-only.

| Scope                             | Purpose                                         |
| --------------------------------- | ----------------------------------------------- |
| `read:page:confluence`            | Read page titles and bodies                     |
| `read:space:confluence`           | List the spaces you selected                    |
| `read:attachment:confluence`      | Read supported attachments                      |
| `read:content-details:confluence` | Read page metadata used for paths and freshness |
| `offline_access`                  | Refresh the connection after the first hour     |

The granted scopes cover the Confluence site. The **spaces you select** are what stop Keldyn reading the rest of the wiki.

<Note>
  Atlassian rotates refresh tokens. Keldyn stores the replacement as soon as it
  is issued. Restoring an old database backup over a live connection can
  invalidate the stored token — if that happens, reconnect.
</Note>

## Who can read indexed pages

Anyone on the team who can open Knowledgebase can read every indexed page from the selected spaces, including pages that were restricted to a few people in Confluence. Space and page restrictions do not carry over. See [Knowledgebase privacy](/knowledgebase-privacy).

If a page should not be searchable, keep its space off the allowlist, or use **Remove from index** in the Knowledgebase browser. Removing it from the index does not delete it from Confluence.

## Keeping the index current

Keldyn checks the selected spaces about every **five minutes** and re-converts pages that changed since the last successful sync. You can also trigger an immediate pull with **Sync now**.

* Editing a page in Confluence updates its passages on the next sync.
* Deleting a page, or losing access to a selected space, unpublishes those documents. They stop appearing in search; an existing citation still resolves.
* Reconnecting forces a full re-read of every selected space.

<Note>
  Disconnecting Confluence unpublishes only the Confluence documents. Drive,
  Notion, Otter, and Library documents are left alone. Nothing is deleted in
  Confluence.
</Note>

## Troubleshooting

A search that should have hit a Confluence page usually means one of the following:

* **No spaces selected** — the connector is connected but indexes nothing until you choose at least one space.
* **Wrong site** — the Atlassian account has several sites, and Keldyn bound the first one returned. Reconnect from the account that owns the site you want.
* **Page restricted from the connecting account** — Keldyn cannot read a page that account cannot open.
* **Reauth required** — the grant was revoked or the refresh token was lost. Select **Reconnect** and complete Atlassian consent again.

## Next steps

<CardGroup cols={2}>
  <Card title="Knowledgebase" icon="book-search" href="/knowledgebase" arrow={true}>
    Search cited passages and browse the index after the first sync.
  </Card>

  <Card title="Notion" icon="notebook-text" href="/integrations/notion" arrow={true}>
    Index Notion pages shared with Keldyn.
  </Card>
</CardGroup>
