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

# Confluence

> Connect Confluence to Rootly to automatically create and update incident retrospective pages from templates.

Rootly's Confluence integration automates the creation of retrospective pages after incidents. When an incident resolves or a retrospective is started, Rootly creates a new Confluence page in your specified space and populates it with incident data — including the timeline, affected services, teams involved, and follow-up action items.

Both **Confluence Cloud** (OAuth) and **Confluence Server / Data Center** (Basic auth or Personal Access Token) are supported.

<Frame>
  <iframe src="https://www.loom.com/embed/ff6013ecd3c94469a1f3a29813bcc391?sid=b205beab-6849-4f31-b8d8-3b2b0237122d" frameborder="0" allowfullscreen width="100%" height="400px" />
</Frame>

## Features

<CardGroup cols={2}>
  <Card title="Automated Page Creation" icon="file-lines">
    Create Confluence pages automatically when incidents resolve or retrospectives begin.
  </Card>

  <Card title="Page Updates" icon="pen-to-square">
    Update existing Confluence pages with new incident data as the incident progresses.
  </Card>

  <Card title="Dynamic Content" icon="code">
    Populate pages with incident data using Liquid variables — timeline, services, teams, and action items.
  </Card>

  <Card title="Template Support" icon="table-columns">
    Use Rootly's built-in retrospective templates or your own templates built directly in Confluence.
  </Card>
</CardGroup>

## Template Options

You have two approaches for retrospective content:

* **Rootly templates** — Use pre-built retrospective templates defined in Rootly. These automatically include timeline visualization and follow-up action item tracking with no additional setup.
* **Confluence templates** — Build fully custom templates directly in Confluence using Liquid variables for dynamic content. Rootly fetches templates from your Confluence space via the API and applies them when creating pages.

<Info>
  If a Confluence template is selected in the workflow action, it overrides both the Custom Retrospective Template and the Rootly Retrospective Template fields.
</Info>

## Before You Begin

<Warning>
  Rootly recommends performing the installation with a **service account** to ensure the integration does not break if the installing user leaves the company. Ensure you are logged in as an **Admin** in Rootly.
</Warning>

Rootly supports two Confluence deployment types:

| Type                                | Authentication                            |
| ----------------------------------- | ----------------------------------------- |
| **Confluence Cloud**                | OAuth 2.0 (recommended)                   |
| **Confluence Server / Data Center** | Basic auth or Personal Access Token (PAT) |

## Installation

Choose the path that matches your deployment.

### Confluence Cloud

<Steps>
  <Step title="Open Rootly Integrations">
    Navigate to **Configuration → Integrations** in your Rootly dashboard.

    <Frame>
      <img alt="Rootly sidebar showing Configuration and Integrations menu" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/installation/image-1.1.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=ac957a0507ca3b132f03a10747300d57" width="331" height="509" data-path="images/integrations/confluence/installation/image-1.1.png" />
    </Frame>
  </Step>

  <Step title="Find and set up Confluence">
    Search for **Confluence** and click **Setup**.

    <Frame>
      <img alt="Integrations page with Confluence search result" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/installation/image-2.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=9740e580eff96ece569f11c2e73e32a0" width="724" height="415" data-path="images/integrations/confluence/installation/image-2.png" />
    </Frame>
  </Step>

  <Step title="Authorize in Confluence">
    You will be redirected to Confluence to grant Rootly permission. Rootly requests the following OAuth scopes:

    * `read:user:confluence` — Read your user profile
    * `read:content-details:confluence` — Read page content
    * `write:content:confluence` — Create and update pages
    * `read:template:confluence` — Read Confluence templates
    * `read:space:confluence` — Read spaces
    * `write:page:confluence` — Create pages

    <Frame>
      <img alt="Confluence OAuth authorization page" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/installation/image-3.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=b191d64ae72b297b0c9be2519615fa40" width="495" height="589" data-path="images/integrations/confluence/installation/image-3.png" />
    </Frame>
  </Step>

  <Step title="Accept permissions">
    Click **Accept** to authorize Rootly.

    <Frame>
      <img alt="Confluence permissions acceptance screen" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/installation/image-4.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=dd15a8422f73d2aa113001bde703dbd7" width="414" height="173" data-path="images/integrations/confluence/installation/image-4.png" />
    </Frame>
  </Step>

  <Step title="Confirm connection">
    You will be redirected back to Rootly with a confirmation message. The integration status will show **Connected**.

    <Frame>
      <img alt="Rootly confirmation showing Confluence connected successfully" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/installation/image-5.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=596e88dc736ef85d5d63b38cd0e29a11" width="977" height="504" data-path="images/integrations/confluence/installation/image-5.png" />
    </Frame>
  </Step>
</Steps>

### Confluence Server / Data Center

For on-premise deployments, Rootly supports authentication via **Basic auth** or a **Personal Access Token (PAT)**.

1. Navigate to **Configuration → Integrations** and search for **Confluence Server**.
2. Click **Setup** and enter your Confluence Server URL (for example, `https://confluence.yourcompany.com`).
3. Enter your credentials:
   * **Basic auth**: Username and password
   * **PAT**: Generate a token in Confluence under **Profile → Personal Access Tokens** and paste it into the Token field
4. Click **Save** and **Test Connection** to verify.

<Info>
  Personal Access Tokens expire after 90 days by default. Rootly will notify you when a token is approaching expiry. Rotate the token in Confluence and update it in Rootly to avoid workflow failures.
</Info>

### On-Premise Notes

If you run Atlassian Confluence Data Center (on-premise) rather than Confluence Cloud, the setup is the same as [Confluence Cloud](#confluence-cloud), with one difference: you authenticate using **URL + username + password** instead of the Cloud OAuth flow.

If your Confluence server sits in a private network, allowlist Rootly's IP addresses so Rootly can reach your instance:

<Tip>
  * 34.232.217.139
  * 18.213.181.255
</Tip>

## Creating Pages from Workflows

Workflows let you automate Confluence page creation and control exactly what information Rootly publishes during an incident. You can trigger a page creation when an incident resolves, when a retrospective begins, or on any other workflow event — and use Liquid variables to populate pages with live incident data.

<Frame>
  <iframe src="https://www.loom.com/embed/ff6013ecd3c94469a1f3a29813bcc391?sid=b205beab-6849-4f31-b8d8-3b2b0237122d" frameborder="0" allowfullscreen width="100%" height="400px" />
</Frame>

<Info>
  If you do not need advanced trigger or condition logic, skip to [Step 4](#step-4-add-the-create-confluence-page-action) to add the action directly.
</Info>

### Step 1: Create a Workflow

<Steps>
  <Step title="Open workflow creation">
    Navigate to **Workflows** in the Rootly sidebar and click **Create Workflow**.

    <Frame>
      <img alt="Rootly workflows page" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-1.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=5a6c0a10ae83a7f1be937518e039272d" width="892" height="323" data-path="images/integrations/confluence/workflows/image-1.png" />
    </Frame>

    <Frame>
      <img alt="Create workflow button" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-2.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=36c033ae1b0b82cc73b5d336b926c8ab" width="1165" height="578" data-path="images/integrations/confluence/workflows/image-2.png" />
    </Frame>
  </Step>

  <Step title="Choose a workflow type">
    Select the workflow type that matches your use case:

    * **Incident** — trigger actions during active incidents
    * **Retrospective** — trigger actions when a retrospective begins or changes status
    * **Pulse** — trigger actions on a schedule

    <Frame>
      <img alt="Workflow type selection" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-3.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=8d730443f6514d3c589f861059ce6767" width="1365" height="630" data-path="images/integrations/confluence/workflows/image-3.png" />
    </Frame>
  </Step>
</Steps>

### Step 2: Configure Triggers

Triggers define when the workflow runs.

<Frame>
  <img alt="Workflow trigger configuration" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-triggers.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=eb849b2ad17a48171a1de7356dcb0417" width="621" height="305" data-path="images/integrations/confluence/workflows/image-triggers.png" />
</Frame>

| Trigger                          | When it fires                                                      |
| -------------------------------- | ------------------------------------------------------------------ |
| **Incident Created**             | A new incident is opened                                           |
| **Incident Updated**             | A field like severity or status changes                            |
| **Incident Status Changed**      | The incident moves into a specific status                          |
| **Retrospective Status Changed** | The retrospective status changes (for example, Started, Published) |
| **Manual Trigger**               | An operator runs the workflow manually from the UI                 |

<Info>
  For retrospective pages, use **Retrospective Status Changed** with a condition of **Status equals Started** so pages are created when a retrospective kicks off.
</Info>

### Step 3: Add Conditions

Conditions let you refine when the workflow executes after a trigger fires.

<Frame>
  <img alt="Workflow conditions panel" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-condition.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=896e81fbe353f3f278bea33aca508b93" width="626" height="334" data-path="images/integrations/confluence/workflows/image-condition.png" />
</Frame>

Common condition patterns:

* **Severity filter** — only create a page for SEV-1 or SEV-2 incidents
* **Team or service filter** — scope page creation to incidents affecting specific teams or services
* **Incident type** — ensure the workflow only runs when Kind is set to **Incident**
* **Environment** — only generate pages for production or customer-impacting issues

### Step 4: Add the Create Confluence Page Action

<Steps>
  <Step title="Add an action">
    Click **Add Action** and search for **Confluence**.

    <Frame>
      <img alt="Add action dialog with Confluence search" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-4.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=4ec6ded1fc271f772b316cf0db7e39e3" width="677" height="221" data-path="images/integrations/confluence/workflows/image-4.png" />
    </Frame>
  </Step>

  <Step title="Select Create Confluence Page">
    Choose **Create Confluence Page** from the results.

    <Frame>
      <img alt="Create Confluence Page action selected" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-5.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=6bb8fb08cf234f97fda7d373c7ce50c5" width="504" height="348" data-path="images/integrations/confluence/workflows/image-5.png" />
    </Frame>

    <Frame>
      <img alt="Confluence action configuration panel" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-6.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=e954d49aaad3a9a2e8b03b5d2b39b718" width="444" height="510" data-path="images/integrations/confluence/workflows/image-6.png" />
    </Frame>
  </Step>

  <Step title="Configure the action">
    Fill in the fields using the table below.
  </Step>

  <Step title="Save the workflow">
    Click **Add**, enter a workflow name, and click **Create Workflow**.
  </Step>
</Steps>

#### Action Fields

| Field                               | Required | Description                                                                                                            |
| ----------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Space Key**                       | Yes      | The Confluence space where the page will be created. Find this under **Space Settings → Space Details** in Confluence. |
| **Title**                           | Yes      | The page title. Supports Liquid syntax (for example, `{{ incident.title }}`).                                          |
| **Ancestor**                        | No       | Page ID of a parent page. If blank, the page is created at the root of the space.                                      |
| **Confluence Template**             | No       | A template fetched from your Confluence space. Overrides both retrospective template fields.                           |
| **Custom Retrospective Template**   | No       | Define page content directly using Liquid variables. Overrides the Retrospective Template field.                       |
| **Retrospective Template**          | No       | A pre-built template from [Retrospective Templates](https://rootly.com/account/retrospective-steps?tab=documents).     |
| **Mark Retrospective as Published** | No       | Publish the page immediately rather than leaving it as a draft.                                                        |

<Warning>
  If a **Confluence Template** is selected, it overrides both the **Custom Retrospective Template** and **Retrospective Template** fields.
</Warning>

### Update an Existing Confluence Page

In addition to creating pages, Rootly can update pages that already exist. Add an **Update Confluence Page** action and configure the following fields:

| Field                   | Required | Description                                                                                                  |
| ----------------------- | -------- | ------------------------------------------------------------------------------------------------------------ |
| **Page ID**             | Yes      | The ID of the Confluence page to update. Supports Liquid syntax to reference a page created in a prior step. |
| **Title**               | No       | Updated page title. Leave blank to keep the existing title.                                                  |
| **Content**             | No       | Updated page content using Liquid variables.                                                                 |
| **Confluence Template** | No       | Re-apply a Confluence template when updating the page.                                                       |

## Creating a Confluence Template

Rootly fetches page templates directly from your Confluence space via the API. Templates you create in Confluence appear automatically in the **Confluence Template** dropdown within the workflow action.

<Steps>
  <Step title="Open your Confluence space">
    Navigate to the space where you want to create the template and open **Space Settings**.

    <Frame>
      <img alt="Confluence space selection" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-7.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=224176253b4c896f57f4b492c6ea4c3e" width="520" height="317" data-path="images/integrations/confluence/workflows/image-7.png" />
    </Frame>
  </Step>

  <Step title="Access template settings">
    Under **Look and Feel**, select **Templates**.

    <Frame>
      <img alt="Confluence space settings showing Templates option" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-8.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=8fd8ffe012f6c6a96bd3ce7db189044f" width="303" height="398" data-path="images/integrations/confluence/workflows/image-8.png" />
    </Frame>
  </Step>

  <Step title="Create the template">
    Click **Create New Template** and add your content. Liquid syntax is fully supported — use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to test variables.

    <Frame>
      <img alt="Create new template button" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-9.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=0ba538edb1cfa5a9a3617eb483f5837a" width="1030" height="325" data-path="images/integrations/confluence/workflows/image-9.png" />
    </Frame>

    <Frame>
      <img alt="Template editor with Liquid variables" src="https://mintcdn.com/rootly/tW7XU81cMVMyDJRG/images/integrations/confluence/workflows/image-10.png?fit=max&auto=format&n=tW7XU81cMVMyDJRG&q=85&s=5556f9ea8c24b21ced573e895c689364" width="1365" height="631" data-path="images/integrations/confluence/workflows/image-10.png" />
    </Frame>
  </Step>

  <Step title="Save the template">
    Click **Save**. The template will appear in the **Confluence Template** dropdown the next time you configure a Create Confluence Page action.
  </Step>
</Steps>

## Template Examples

Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to test variables before deploying templates in production.

<Tabs>
  <Tab title="Standard Retrospective">
    ```markdown theme={null}
    # Retrospective: {{ incident.title }}

    **Date:** {{ incident.started_at | date: "%Y-%m-%d" }}
    **Severity:** {{ incident.severity }}
    **Status:** {{ incident.status }}

    ## Summary
    {{ incident.summary }}

    ## Timeline
    {{ incident.timeline_table_markdown }}

    ## Services Affected
    {% for service in incident.services %}
    - {{ service }}
    {% endfor %}

    ## Teams Involved
    {% for group in incident.groups %}
    - {{ group.name }}
    {% endfor %}

    ## Follow-Up Items
    {% for action_item in incident.action_items %}
    - {{ action_item.summary }} ({{ action_item.status }})
    {% endfor %}

    ## Lessons Learned
    [To be completed by the team]
    ```
  </Tab>

  <Tab title="Executive Summary">
    ```markdown theme={null}
    # Executive Summary: {{ incident.title }}

    **Date:** {{ incident.started_at | date: "%B %d, %Y" }}
    **Severity:** {{ incident.severity }}
    **Duration:** {{ incident.duration }} minutes

    ## What Happened
    {{ incident.summary }}

    ## Resolution
    {{ incident.resolution_message }}

    ## Key Metrics
    - Services Affected: {{ incident.services | size }}
    - Time to Resolution: {{ incident.duration }} minutes

    ## Next Steps
    {% for action_item in incident.action_items %}
    - {{ action_item.summary }}
    {% endfor %}
    ```
  </Tab>

  <Tab title="Technical RCA">
    ```markdown theme={null}
    # Root Cause Analysis: {{ incident.title }}

    **Started:** {{ incident.started_at | date: "%Y-%m-%d %H:%M %Z" }}
    **Resolved:** {{ incident.resolved_at | date: "%Y-%m-%d %H:%M %Z" }}
    **Duration:** {{ incident.duration }} minutes

    ## Affected Services
    {% for service in incident.services %}
    - {{ service }}
    {% endfor %}

    ## Detailed Timeline
    {{ incident.timeline_table_markdown }}

    ## Root Cause
    [To be completed by engineering team]

    ## Resolution Steps
    {{ incident.resolution_message }}

    ## Preventive Measures
    {% for action_item in incident.action_items %}
    - {{ action_item.summary }} ({{ action_item.status }})
    {% endfor %}
    ```
  </Tab>
</Tabs>

## Troubleshooting

<AccordionGroup>
  <Accordion title="Confluence spaces not appearing during authorization" icon="magnifying-glass">
    Ensure you have **Create** or **Edit** permissions in the Confluence spaces you want Rootly to use. Ask an admin to check **Space Settings → Permissions**. If the issue persists, disconnect and reconnect the integration to refresh permissions.
  </Accordion>

  <Accordion title="Authorization succeeds but integration does not complete" icon="circle-exclamation">
    Check if your organization restricts external apps under **Atlassian Admin → Security → App Access**. Confirm the installing user is not limited to read-only access. Retry the installation in an incognito window to avoid stale credentials.
  </Accordion>

  <Accordion title="Server / Data Center connection fails" icon="server">
    Verify the Confluence Server URL is reachable from Rootly's servers — check any firewall or allowlist rules. Confirm SSL certificates are valid. For PAT authentication, ensure the token has not expired and has the required permissions.
  </Accordion>
</AccordionGroup>

## Frequently Asked Questions

<AccordionGroup>
  <Accordion title="My Confluence template is not appearing in the dropdown" icon="file-lines">
    Rootly fetches templates from your Confluence space via the API. Ensure the template was saved in the correct space and that your Rootly integration has access to that space. Try disconnecting and reconnecting the integration to refresh the template list.
  </Accordion>

  <Accordion title="The workflow ran but no Confluence page was created" icon="bell">
    Check the workflow run log in Rootly for error details. Common causes include an invalid Space Key, a missing or incorrect Ancestor page ID, or a Liquid variable that returned an empty value for the Title field (Title is required). Verify the Space Key matches exactly what appears in **Space Settings → Space Details** in Confluence.
  </Accordion>

  <Accordion title="Liquid variables are rendering as blank on the page" icon="circle-xmark">
    Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to verify that the variable returns a value for your incident. Some variables like `incident.resolved_at` will be empty if the incident has not yet resolved. Add a fallback using Liquid filters (for example, `{{ incident.resolved_at | default: "TBD" }}`).
  </Accordion>

  <Accordion title="Can I create a page in multiple spaces from one workflow?" icon="plus">
    Add multiple **Create Confluence Page** actions to the same workflow, each configured with a different Space Key. Each action runs sequentially and creates an independent page.
  </Accordion>

  <Accordion title="How do I reference a page created earlier in the same workflow?" icon="bolt">
    Use the **Update Confluence Page** action after a **Create Confluence Page** action. Reference the created page ID via Liquid using the output of the prior step.
  </Accordion>
</AccordionGroup>

## Uninstall

To remove the Confluence integration:

1. Go to **Configuration → Integrations** and find **Confluence**
2. Click the **Connected** button to reveal the disconnect option
3. Click **Delete**

<Frame>
  <img src="https://mintcdn.com/rootly/QMD-dNqeYW4BA9dg/images/integrations/common/uninstall-connected.png?fit=max&auto=format&n=QMD-dNqeYW4BA9dg&q=85&s=dbb790e2576c8969bba96bc26c95265f" alt="Click the Connected button to reveal the Disconnect option" width="319" height="188" data-path="images/integrations/common/uninstall-connected.png" />
</Frame>

<Info>
  Disconnecting the integration does not delete existing Confluence pages created by Rootly. Those pages remain in your Confluence space.
</Info>

## Related Resources

* [Workflows](/workflows/workflows)
* [Retrospectives](/retrospectives/retrospectives)
* [Integrations overview](/integrations/overview)
