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

# Jira

> Connect Jira to Rootly to create and update issues from incidents, and sync Jira changes back into Rootly.

Rootly's Jira integration keeps incidents and Jira issues in sync. When an incident is declared, a Jira issue is automatically created. Updates flow both ways: incident changes update Jira, and Jira changes can update incidents.

<CardGroup cols={2}>
  <Card title="Smart Defaults" icon="bolt">
    Auto-create Jira issues at incident start without building workflows
  </Card>

  <Card title="Custom Workflows" icon="diagram-project">
    Advanced automation with triggers, conditions, and multiple actions
  </Card>

  <Card title="Field Mapping" icon="table-columns">
    Map incident data to Jira native and custom fields
  </Card>

  <Card title="Action Items → Subtasks" icon="list-tree">
    Follow-up tasks become Jira subtasks linked to the parent issue
  </Card>
</CardGroup>

***

## How It Works

<Steps>
  <Step title="Connect Jira">
    Authenticate via OAuth and configure webhooks for bidirectional sync.
  </Step>

  <Step title="Configure Automation">
    Use Smart Defaults for instant setup, or build custom workflows for conditional logic.
  </Step>

  <Step title="Incident Declared">
    When an incident is created, Rootly automatically creates a Jira issue.
  </Step>

  <Step title="Updates Flow Both Ways">
    Changes to incidents update Jira. Jira events can trigger incident updates.
  </Step>
</Steps>

***

## Before You Begin

<Warning>
  **Before you start, you'll need:**

  * A Rootly account with **Admin** or **Owner** permissions
  * A **Jira Cloud** account with admin rights to your instance
</Warning>

### Required Jira Permissions

The Jira account you use to install must have these permissions:

| Permission            | Description                                   |
| --------------------- | --------------------------------------------- |
| **Assign issues**     | Ability to assign issues to users             |
| **Close issues**      | Ability to close issues                       |
| **Create issues**     | Ability to create new issues                  |
| **Delete issues**     | Ability to delete issues                      |
| **Edit issues**       | Ability to edit existing issues               |
| **Link issues**       | Ability to link issues to one another         |
| **Transition issues** | Ability to transition issues between statuses |

<Info>
  Learn more about Jira permissions in [Atlassian's documentation](https://confluence.atlassian.com/adminjiraserver073/managing-project-permissions-861253293.html).
</Info>

### Required OAuth Scopes

Rootly requests these OAuth scopes during installation:

<Accordion title="View all 28 OAuth scopes">
  **Read permissions:**

  * `read:application-role:jira`
  * `read:avatar:jira`
  * `read:field-configuration:jira`
  * `read:group:jira`
  * `read:issue:jira`
  * `read:issue-status:jira`
  * `read:issue-meta:jira`
  * `read:issue-security-level:jira`
  * `read:issue-type:jira`
  * `read:issue-type-hierarchy:jira`
  * `read:issue.changelog:jira`
  * `read:issue.transition:jira`
  * `read:issue.vote:jira`
  * `read:priority:jira`
  * `read:project:jira`
  * `read:project-category:jira`
  * `read:project-version:jira`
  * `read:project.component:jira`
  * `read:project.property:jira`
  * `read:status:jira`
  * `read:user:jira`
  * `read:user.property:jira`

  **Write permissions:**

  * `write:attachment:jira`
  * `write:comment:jira`
  * `write:comment.property:jira`
  * `write:issue:jira`
  * `write:issue.property:jira`
</Accordion>

## Installation

Setting up the Jira integration involves two parts: connecting your Jira account via OAuth and configuring a webhook so Jira can send events back to Rootly. Both are required for full bidirectional sync.

The OAuth flow connects your Jira Cloud instance to Rootly. You'll be redirected to Jira to authorize the connection, then returned to Rootly automatically.

<Steps>
  <Step title="Go to Configuration → Integrations">
    In the Rootly sidebar, click **Configuration → Integrations**.

    <img alt="Rootly integrations menu" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-1.1.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=4176f801094bfb17ca6990299623aa42" width="331" height="509" data-path="images/integrations/jira/installation/image-1.1.png" />
  </Step>

  <Step title="Find Jira Cloud and click Setup">
    Search for **Jira Cloud** and click **Setup**.

    <img alt="Jira Cloud integration setup" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-2.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=87d900afdf83a27261cddf561f4bc4c2" width="653" height="407" data-path="images/integrations/jira/installation/image-2.png" />
  </Step>

  <Step title="Authorize in Jira">
    You'll be redirected to Jira. Verify you're installing on the correct instance, then click **Accept**.

    <img alt="Jira OAuth authorization" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-3.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=377a6e541219a53b89b4d43d38d77b6a" width="498" height="581" data-path="images/integrations/jira/installation/image-3.png" />

    <img alt="Jira permissions acceptance" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-4.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=3c590f76f95d581ab8469f3abacea542" width="415" height="164" data-path="images/integrations/jira/installation/image-4.png" />
  </Step>

  <Step title="Installation complete">
    You'll be redirected back to Rootly with a success message confirming the connection.

    <img alt="Jira installation success" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-5.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=953b8b5af5b5ec3fd4d338f63262fcd8" width="915" height="497" data-path="images/integrations/jira/installation/image-5.png" />
  </Step>
</Steps>

<Check>Your Jira Cloud instance is now connected to Rootly.</Check>

### Installing Additional Instances

If your organization uses multiple Jira Cloud instances, you can connect them separately.

<Note>
  A Jira Cloud **instance** is not the same as a Jira **project**. An instance is a separate domain (for example, `company.atlassian.net`). You can have multiple projects within one instance — most organizations have a single instance with multiple projects.
</Note>

To add another instance:

1. Go to **Integrations** and search for **Jira Cloud**
2. Click **Set up another instance**
3. Follow the same authorization flow

<Warning>
  Make sure you're logged into the correct Jira instance in your browser before starting the authorization flow.
</Warning>

### Setting Up the Jira Webhook

To enable **Jira → Rootly sync**, you must configure a webhook in Jira. This allows Rootly to receive events when Jira issues are created or updated. Without this step, changes in Jira won't reflect back in Rootly.

<Steps>
  <Step title="Open Jira Webhooks">
    In Jira, navigate to **Settings → System → WebHooks**.

    <img alt="Jira system settings" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-6.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=7ffabcbd65e80c8e1ebbf5d43b25cc6f" width="528" height="487" data-path="images/integrations/jira/installation/image-6.png" />

    <img alt="Jira webhooks menu" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-7.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=ce0173ed7065c57dbec002fc67dd9524" width="225" height="528" data-path="images/integrations/jira/installation/image-7.png" />
  </Step>

  <Step title="Create a new webhook">
    Click **Create a WebHook**.

    <img alt="Create webhook button" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-8.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=be5194fe910d976b5d3cba921389269f" width="1107" height="258" data-path="images/integrations/jira/installation/image-8.png" />
  </Step>

  <Step title="Configure the webhook">
    Give it a descriptive name (for example, "Rootly Webhook Listener") and ensure the status is set to **Enabled**.

    <img alt="Webhook name and status" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-9.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=a2197d48dbd92d3219a4d3aaa640a68f" width="545" height="152" data-path="images/integrations/jira/installation/image-9.png" />
  </Step>

  <Step title="Add the Rootly webhook URL">
    In Rootly, go to **Integrations → Jira → Configure** and copy the webhook URL. Paste it into the **URL** field in Jira.

    <img alt="Rootly webhook URL" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-10.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=807818f3eb7a106967c086bc51e15756" width="903" height="185" data-path="images/integrations/jira/installation/image-10.png" />

    <img alt="Webhook URL field in Jira" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-11.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=b4dd95956d31489adac9480d833b33df" width="563" height="202" data-path="images/integrations/jira/installation/image-11.png" />
  </Step>

  <Step title="Filter by project (optional)">
    To limit which projects send events to Rootly, add a JQL filter under **Issue related events**. Leave this blank to receive events from all projects.

    <img alt="JQL filter for projects" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-12.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=7d8a6682f77fe2970603fcb95763591c" width="778" height="198" data-path="images/integrations/jira/installation/image-12.png" />
  </Step>

  <Step title="Select events">
    Choose the Jira events you want Rootly to receive — at minimum, select **issue created** and **issue updated**.

    <img alt="Webhook event selection" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-13.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=9ee984084b17612956e727cb612a11a6" width="775" height="207" data-path="images/integrations/jira/installation/image-13.png" />
  </Step>

  <Step title="Keep request body enabled">
    Ensure **Exclude body** is **not** checked. Jira may enable this by default, but Rootly requires the full event payload to process events correctly.

    <img alt="Exclude body checkbox" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-14.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=64776d0c5267ea3e41282159cfe8cecf" width="634" height="70" data-path="images/integrations/jira/installation/image-14.png" />
  </Step>

  <Step title="Save the webhook">
    Click **Create** to save your webhook configuration.

    <img alt="Save webhook" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-15.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=32b06c0f82ceef7caf16c2fd4f273ce8" width="526" height="164" data-path="images/integrations/jira/installation/image-15.png" />

    <img alt="Webhook created confirmation" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/installation/image-16.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=5aca2f278a4ed7f4a9e4562ea4e33790" width="773" height="59" data-path="images/integrations/jira/installation/image-16.png" />
  </Step>
</Steps>

<Check>Your Jira webhook is now configured for bidirectional sync.</Check>

## Verify Installation

Once connected, confirm the integration is working end-to-end:

1. **Check integration status** — The Jira tile in Rootly should show **Connected**.
2. **Test Rootly → Jira** — Create a test incident and verify that a Jira issue is created in the expected project.
3. **Test Jira → Rootly** — Create or update a Jira issue, then check the [Alerts page](https://rootly.com/account/alerts) in Rootly to confirm the event arrived.

<Tip>
  If events appear on the Alerts page, your webhook is configured correctly.
</Tip>

## Workflows

<CardGroup cols={2}>
  <Card title="Smart Defaults" icon="bolt">
    **Setup fast and effortless**

    Automatically create and manage Jira issues at incident start using pre-configured settings
  </Card>

  <Card title="Custom Workflow" icon="bars-staggered">
    Use workflows for conditional or advanced Jira issue automation
  </Card>
</CardGroup>

***

### Smart Defaults

Smart Defaults let you automatically generate a Jira issue whenever an incident begins — without building a workflow. New Rootly accounts have Smart Defaults enabled automatically. Existing accounts have it off by default to avoid conflicting with existing workflows.

To configure Smart Defaults, go to **Integrations → Jira → Configure**.

<AccordionGroup>
  <Accordion title="Webhook" icon="webhook">
    Configure webhooks in your Jira Admin using this endpoint to allow updates made in Jira to reflect back in Rootly.

    <Note>
      See [Setting Up Jira Webhook](/integrations/jira/jira#setting-up-the-jira-webhook) for detailed steps.
    </Note>

    <img alt="Jira webhook URL configuration in Rootly" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-1.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=189ace69ce7897a73bb49812d3628dd2" width="901" height="183" data-path="images/integrations/jira/workflows/image-1.png" />
  </Accordion>

  <Accordion title="Jira Ticket for Incidents" icon="ticket">
    This section controls how Jira tickets are created from Rootly incidents.

    <img alt="Jira ticket configuration panel for incidents" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-2.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=8bd61f19c9376e52ab3984e3efba7cdd" width="1116" height="438" data-path="images/integrations/jira/workflows/image-2.png" />

    <ParamField body="Create Jira ticket for all new incidents" type="toggle">
      Automatically create a Jira ticket in the specified project as soon as an incident is declared in Rootly.
    </ParamField>

    <ParamField body="Project Key" type="select">
      The Jira project where tickets will be created. If you need to route tickets to different projects based on conditions, disable this and use custom workflows instead.
    </ParamField>

    <ParamField body="Issue Type" type="select">
      The type of Jira issue to create. Options are pulled from the project specified in Project Key.
    </ParamField>

    <ParamField body="Issue Status" type="select">
      The initial status of the new ticket. Options are pulled from the selected project and issue type.
    </ParamField>

    <ParamField body="Title / Summary" type="string">
      The Summary field of the Jira ticket. Defaults to `{{ incident.title }}`. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Description" type="string">
      The Description field of the Jira ticket. Defaults to `{{ incident.summary }}`. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Default Assignee" type="string">
      Assign the Jira ticket to a user by email address. If blank, the ticket is assigned to the incident creator. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Auto-bookmark Jira ticket in Slack" type="toggle">
      Automatically create a bookmark to the Jira ticket in the incident's Slack channel for quick access.
    </ParamField>

    <ParamField body="Update Jira ticket when incident is updated" type="toggle">
      Automatically update the matching Jira ticket whenever the incident is updated. This is one-way: changes flow from Rootly to Jira only.
    </ParamField>
  </Accordion>

  <Accordion title="Jira Ticket for Action Items" icon="list-check">
    This section controls how Jira subtasks are created from Rootly action items.

    <img alt="Jira subtask configuration for action items" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-3.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=0847b6b1025ef38d6bd861b04f78742f" width="986" height="406" data-path="images/integrations/jira/workflows/image-3.png" />

    <ParamField body="Create Jira subtask ticket for action items" type="toggle">
      Automatically create a Jira subtask under the parent Jira ticket every time a new action item is created in Rootly.
    </ParamField>

    <ParamField body="Subtask Type" type="select">
      Leave this field **blank**. Jira subtasks can only be one type. This field will be expanded in a future release.
    </ParamField>

    <ParamField body="Subtask Status" type="select">
      The initial status of the new subtask. Options are pulled from the project specified in Project Key.
    </ParamField>

    <ParamField body="Update Jira subtask ticket for action items" type="toggle">
      Automatically update the matching Jira subtask whenever an action item is updated. This is one-way: changes flow from Rootly to Jira only.
    </ParamField>

    <ParamField body="Match action item priority" type="toggle">
      Automatically set the Jira subtask priority to match the action item priority in Rootly.
    </ParamField>
  </Accordion>
</AccordionGroup>

<Note>
  Use Smart Defaults when you want instant, built-in Jira issue automation without touching workflows. Build a workflow when you need conditions, custom triggers, multiple actions, or more advanced issue routing.
</Note>

***

### Custom Workflows

Custom workflows give you full control over when and how Jira issues are created or updated. You can filter by severity, service, environment, and more — or chain multiple Jira actions together in a single workflow.

<Steps>
  <Step title="Create a new workflow">
    Open **Rootly → Workflows → Create Workflow** and choose the workflow type that matches your use case.

    <img alt="Rootly workflows page" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-4.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=c841181b889b4efdd3b06ea860a0d38a" width="877" height="171" data-path="images/integrations/jira/workflows/image-4.png" />

    <img alt="Create workflow button" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-5.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=d0e6f4359b0ab097c7d5dc22c0c526d6" width="1165" height="578" data-path="images/integrations/jira/workflows/image-5.png" />

    <img alt="Workflow type selection showing Incident, Retrospective, and Pulse options" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-6.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=37a7874305a90ada8414f576346c08ac" width="1365" height="630" data-path="images/integrations/jira/workflows/image-6.png" />
  </Step>

  <Step title="Configure triggers">
    Triggers define when the workflow runs. Choose the event that should create or update a Jira issue.

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

    | Trigger                         | What it does                                             |
    | ------------------------------- | -------------------------------------------------------- |
    | **Incident Created**            | Creates a Jira issue as soon as a new incident is opened |
    | **Incident Updated**            | Fires when fields like severity or status change         |
    | **Incident Status Changed**     | Triggers when the incident moves to a specific status    |
    | **Incident Commander Assigned** | Fires once someone takes ownership                       |
    | **Manual Trigger**              | Run manually from the UI when needed                     |

    <Tip>
      Choose the trigger that fires only when you actually need a Jira issue. Avoid creating issues earlier than necessary.
    </Tip>
  </Step>

  <Step title="Add conditions">
    Conditions let you control when the workflow should run after it's been triggered. This keeps your Jira project clean by limiting automation to the incidents that matter.

    <img alt="Workflow conditions panel showing filter options" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-condition.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=10f8770a804c0232142919caf4a13f29" width="626" height="334" data-path="images/integrations/jira/workflows/image-condition.png" />

    Common condition setups:

    * **Severity-based** — Only create Jira issues for SEV-1 or SEV-2 incidents
    * **Team or service filters** — Only fire for incidents impacting specific teams or services
    * **Incident type** — Ensure the workflow only runs when the Kind is set to Incident
    * **Environment** — Trigger only for customer-facing or production-impacting incidents

    <Tip>
      Use conditions to avoid unnecessary Jira issues and keep the workflow focused.
    </Tip>
  </Step>

  <Step title="Add a Jira action">
    Actions are the steps that run when the workflow fires. Click **Add Action**, then search for **Jira** to see the available actions.

    <img alt="Add action button in workflow editor" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-7.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=98fb9b72cfdbcc16bd6a81e6a018b013" width="677" height="221" data-path="images/integrations/jira/workflows/image-7.png" />

    <img alt="Jira action search in action picker" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-8.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=13174bfb5d75fbcf710ea56c1d11d984" width="895" height="376" data-path="images/integrations/jira/workflows/image-8.png" />

    #### Create Jira Issue

    Creates a new Jira issue for an incident or retrospective.

    <img alt="Create Jira Issue action configuration" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-9.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=f4d6dfbd916a3a7977b411112d078624" width="672" height="606" data-path="images/integrations/jira/workflows/image-9.png" />

    <ParamField body="Name" type="string">
      Optional label for this action. Does not affect behavior.
    </ParamField>

    <ParamField body="Project Key" type="select">
      The Jira project where the issue will be created.
    </ParamField>

    <ParamField body="Issue Type" type="select">
      The type of Jira issue to create (for example, Bug, Task, Story). Options are pulled from the selected project.
    </ParamField>

    <ParamField body="Summary / Title" type="string">
      Title of the Jira issue. Supports Liquid syntax (for example, `{{ incident.title }}`).
    </ParamField>

    <ParamField body="Description" type="string">
      Detailed description. Supports Liquid syntax (for example, `{{ incident.summary }}`).
    </ParamField>

    <ParamField body="Priority" type="select">
      Priority of the Jira issue (for example, High, Medium, Low).
    </ParamField>

    <ParamField body="Status" type="select">
      Initial status of the issue. Options are pulled from the selected project and issue type.
    </ParamField>

    <ParamField body="Labels" type="array">
      Jira labels to categorize the issue. Supports multiple values.
    </ParamField>

    <ParamField body="Due Date" type="string">
      Optional due date. Supports Liquid syntax or fixed dates.
    </ParamField>

    <ParamField body="Reporter (email address)" type="string">
      The reporter for the Jira issue. Defaults to the incident creator. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Assignee (email address)" type="string">
      The assignee for the Jira issue. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Skip on Failure" type="toggle">
      Prevents the workflow from stopping if this action fails.
    </ParamField>

    <ParamField body="Enabled" type="toggle">
      Toggle this action on or off, useful when testing.
    </ParamField>

    <Info>
      Use Rootly's [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer) to test variables before using them in your workflow.
    </Info>

    #### Update Jira Issue

    Updates an existing Jira issue. You must reference the issue using `{{ incident.jira_issue_id }}` in the **Jira Issue to Update** field.

    <Warning>
      This action only works if a Jira issue has already been created and linked to the incident.
    </Warning>

    <Info>
      The Update Jira Issue action also works inside [Action Item Workflows](/workflows/action-item-workflows). When paired with the `Action Item Updated` trigger, it's the canonical way to enrich Jira tickets created via **Export to ticketing** with incident context (Rootly URL, severity, services, etc.) — see [Linking Exported Tasks Back to the Incident](/incidents/action-items/adding-action-items-via-web-ui#linking-exported-tasks-back-to-the-incident). In an action item workflow, use `{{ action_item.jira_issue_id }}` instead of the incident-side variable.
    </Info>

    #### Create Jira Subtask

    Creates a subtask under an existing Jira issue. Reference the parent issue using `{{ incident.jira_issue_id }}` in the **Parent Jira Issue** field. The **Project Key** must match the one used to create the parent issue.

    <Note>
      This action is intended for action items or sub-incidents.
    </Note>
  </Step>

  <Step title="Name and save the workflow">
    Give your workflow a descriptive name (for example, "Create Jira Issue on SEV-1 Incident"), then click **Create Workflow**.
  </Step>
</Steps>

***

### Action Reference

<AccordionGroup>
  <Accordion title="Create Jira Issue" icon="plus">
    Creates a new ticket in a Jira project. You must select the **Project Key** and **Issue Type** for the ticket to be created correctly.

    This action can be used for both incidents and action items. For action items, using **Create Jira Subtask** is recommended if your team uses subtasks — but if not, this action works as well.

    <Frame>
      <img alt="Create Jira Issue action" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/jira/rootly-to-jira-sync/images-1.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=e8f168f938ab07f9f846e524c22f9634" width="917" height="1358" data-path="images/integrations/jira/rootly-to-jira-sync/images-1.webp" />
    </Frame>

    <ParamField body="Project Key" type="select">
      The Jira project where the issue will be created.
    </ParamField>

    <ParamField body="Issue Type" type="select">
      The type of Jira issue to create. Options are pulled from the selected project.
    </ParamField>

    <ParamField body="Summary / Title" type="string">
      The title of the Jira issue. Supports Liquid syntax (for example, `{{ incident.title }}`).
    </ParamField>

    <ParamField body="Description" type="string">
      The description of the Jira issue. Supports Liquid syntax (for example, `{{ incident.summary }}`).
    </ParamField>

    <ParamField body="Assignee (email address)" type="string">
      Assign the Jira issue to a user by email. Supports Liquid syntax.
    </ParamField>
  </Accordion>

  <Accordion title="Update Jira Issue" icon="pen-to-square">
    Updates an existing ticket in Jira. You must reference the issue in the **Jira Issue to Update** field using `{{ incident.jira_issue_id }}`.

    <Frame>
      <img alt="Update Jira Issue action" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/jira/rootly-to-jira-sync/images-2.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=29ecad431fbd6eef77761bf864b24444" width="922" height="1376" data-path="images/integrations/jira/rootly-to-jira-sync/images-2.webp" />
    </Frame>

    <Warning>
      This action only works if a Jira issue has already been created and linked to the incident.
    </Warning>

    <ParamField body="Jira Issue to Update" type="string">
      Reference to the existing Jira issue. Use `{{ incident.jira_issue_id }}` to dynamically target the issue linked to the current incident.
    </ParamField>

    <ParamField body="Summary / Title" type="string">
      Updated title of the Jira issue. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Description" type="string">
      Updated description. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Status" type="select">
      Transition the issue to a new status. Options are pulled from the selected project and issue type.
    </ParamField>

    <ParamField body="Assignee (email address)" type="string">
      Reassign the Jira issue to a different user. Supports Liquid syntax.
    </ParamField>
  </Accordion>

  <Accordion title="Create Jira Subtask" icon="list-tree">
    Creates a subtask under an existing Jira issue. Intended for **action items** or **sub-incidents**. The **Project Key** must match the one used when creating the parent issue.

    <Frame>
      <img alt="Create Jira Subtask action" src="https://mintcdn.com/rootly/DEGWl8qg20zbzmSF/images/integrations/jira/rootly-to-jira-sync/images-3.webp?fit=max&auto=format&n=DEGWl8qg20zbzmSF&q=85&s=8dc61a8c2844653ca24a6f218385cdf7" width="918" height="1397" data-path="images/integrations/jira/rootly-to-jira-sync/images-3.webp" />
    </Frame>

    <ParamField body="Parent Jira Issue" type="string">
      Reference to the parent Jira issue. Use `{{ incident.jira_issue_id }}` to link the subtask to the current incident's issue.
    </ParamField>

    <ParamField body="Project Key" type="select">
      Must match the project used to create the parent issue.
    </ParamField>

    <ParamField body="Summary / Title" type="string">
      Title of the subtask. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Description" type="string">
      Description of the subtask. Supports Liquid syntax.
    </ParamField>

    <ParamField body="Assignee (email address)" type="string">
      Assign the subtask to a user by email. Supports Liquid syntax.
    </ParamField>
  </Accordion>
</AccordionGroup>

***

### Jira Native Field Mapping

Some Jira fields behave differently than standard custom fields. This section explains how to correctly map Rootly fields to Jira's **native** fields.

<Warning>
  These mappings go in the **Custom Fields Mapping** section of the Jira action, not the API Payload section.
</Warning>

<AccordionGroup>
  <Accordion title="Labels (Native Jira Field)">
    Jira's native Labels field uses a different syntax than custom label-type fields.

    **Map Rootly services to Jira Labels:**

    ```json theme={null}
    "customfield_12345": {{ incident.service_slugs | join: ","}}
    ```

    **Map a Rootly custom multi-select to Jira Labels:**

    ```json theme={null}
    "customfield_10033": {{ incident.custom_fields | find: 'custom_field.slug', 'your_custom_field_slug' | get: 'selected_options' | map: 'value' | join: "," }}
    ```

    <Note>
      Replace `customfield_12345` with your actual Jira field ID. Find field IDs in **Jira Settings → Issues → Custom Fields**.
    </Note>
  </Accordion>

  <Accordion title="Team (Native Jira Field)">
    Jira's native Team field is stored as a custom field but only allows a single team selection.

    **Map a static Jira Team ID:**

    ```json theme={null}
    "customfield_10001": "<jira_team_id>"
    ```

    **Map Rootly's first team dynamically:**

    ```json theme={null}
    "customfield_10001": "{{ incident.raw_groups[0] | get: 'description' }}"
    ```

    <Info>
      This example assumes you store the corresponding Jira Team ID in the Rootly team's description field. Adjust based on how your teams are configured.
    </Info>
  </Accordion>
</AccordionGroup>

***

### Custom Fields Mapping

The **Custom Fields Mapping** section lets you map Rootly incident data to Jira custom fields dynamically.

<img alt="Advanced tab for custom field mapping in Jira action" src="https://mintcdn.com/rootly/AeBVvOHy0V3r_SuA/images/integrations/jira/workflows/image-10.png?fit=max&auto=format&n=AeBVvOHy0V3r_SuA&q=85&s=dd7245df4a153f62d209002a80c4dcdf" width="716" height="580" data-path="images/integrations/jira/workflows/image-10.png" />

#### What You Need

| Item                | Where to Find It                                                                                    |
| ------------------- | --------------------------------------------------------------------------------------------------- |
| **Jira Field ID**   | Jira Settings → Issues → Custom Fields → Click field → ID in URL (for example, `customfield_12345`) |
| **Field Type**      | Same location, check the field type (text, select, multi-select, etc.)                              |
| **Rootly Property** | Use the [Liquid Variable Explorer](https://rootly.com/account/help/liquid-explorer)                 |

<Info>
  For detailed instructions on finding Jira field IDs, see [Atlassian's documentation](https://confluence.atlassian.com/jirakb/how-to-find-id-for-custom-field-s-744522503.html).
</Info>

#### Field Type Mappings

<AccordionGroup>
  <Accordion title="Text and Paragraph Fields">
    ```json theme={null}
    // Rootly native field → Jira text
    "customfield_12345": "{{ incident.functionalities }}"

    // Rootly custom field → Jira text
    "customfield_12345": "{{ incident.custom_fields | find: 'custom_field.slug', 'your-slug' | get: 'selected_options' | map: 'value' }}"
    ```
  </Accordion>

  <Accordion title="Single Select Fields">
    Note the `{ "value": ... }` wrapper required by Jira:

    ```json theme={null}
    // Rootly team name → Jira single select
    "customfield_12345": { "value": "{{ incident.raw_groups | first | get: 'name' }}" }

    // Rootly custom field → Jira single select
    "customfield_12345": { "value": "{{ incident.custom_fields | find: 'custom_field.slug', 'your_slug' | get: 'selected_options' | map: 'value' }}" }
    ```
  </Accordion>

  <Accordion title="Multi-Select Fields">
    **Simple approach (Rootly custom multi-select):**

    ```json theme={null}
    "customfield_12345": {{ incident.custom_fields | find: 'custom_field.slug', 'your_slug' | get: 'selected_options' | to_values }}
    ```

    **Manual array building (Rootly native fields):**

    ```liquid theme={null}
    {% assign functions = incident.functionalities %}
    {% assign array = "" %}
    {% for function in functions %}
    {% assign item = '{"value":"' | append: function | append: '"}' %}
    {% assign array = array | append: item | append: "," %}
    {% endfor %}
    {% capture final_array %}[{{ array | remove_last: ',' }}]{% endcapture %}
    "customfield_12345": {{ final_array }}
    ```
  </Accordion>

  <Accordion title="Labels Fields (Custom)">
    For Jira custom fields of type "Labels" (different from the native Labels field):

    ```json theme={null}
    // Rootly services → Jira custom labels
    "customfield_12345": {{ incident.service_slugs | to_json }}

    // Rootly custom multi-select → Jira custom labels
    "customfield_10033": {{ incident.custom_fields | find: 'custom_field.slug', 'your_slug' | get: 'selected_options' | map: 'value' | to_json }}
    ```
  </Accordion>

  <Accordion title="Number Fields">
    ```json theme={null}
    "customfield_26117": {{ incident.custom_fields | find: 'custom_field.slug', 'your_slug' | get: 'selected_options.value' }}
    ```
  </Accordion>

  <Accordion title="Date/Time Fields">
    Must use ISO 8601 format:

    ```json theme={null}
    // Rootly incident start time → Jira datetime
    "customfield_10030": "{{ incident.started_at | date: '%FT%T%:z' }}"

    // Rootly custom datetime → Jira datetime
    "customfield_26218": "{{ incident.custom_fields | find: 'custom_field.slug', 'your_slug' | get: 'selected_options.value' | date: '%Y-%m-%dT%H:%M:%S.%d%z' }}"
    ```
  </Accordion>

  <Accordion title="User Fields">
    **Single user:**

    ```json theme={null}
    {% assign jira_email = incident.roles | find: 'incident_role.slug', 'incident-commander' | get: 'user.email' %}
    "customfield_20825": { "id": "{{ team.jira_users | where: 'email', jira_email | first | get: 'account_id' }}" }
    ```

    **Multiple users:**

    ```json theme={null}
    {% assign jira_email = incident.roles | find: 'incident_role.slug', 'incident-commander' | get: 'user.email' %}
    "customfield_20825": [{ "id": "{{ team.jira_users | where: 'email', jira_email | first | get: 'account_id' }}" }]
    ```
  </Accordion>
</AccordionGroup>

#### How to Test Your Mapping

1. Create a test incident in Rootly
2. Run your workflow manually
3. Check the Jira issue to verify fields are populated correctly
4. If errors occur, go to **Workflows → Your Workflow → ... → View Runs** to see the error details

***

### API Payload

The **API Payload** section provides direct access to Jira's REST API for advanced field updates not available through Custom Fields Mapping.

<Info>
  API Payload uses Jira's [update issue REST API](https://developer.atlassian.com/server/jira/platform/updating-an-issue-via-the-jira-rest-apis-6848604/). Fields use verb-based operations: `set`, `add`, and `remove`.
</Info>

#### When to Use API Payload

| Use Case                 | Use API Payload                     |
| ------------------------ | ----------------------------------- |
| Set priority dynamically | Yes                                 |
| Add comments             | Yes (Update Jira Issue action only) |
| Link issues together     | Yes                                 |
| Set native Labels field  | Yes                                 |
| Set Components field     | Yes                                 |
| Map custom fields        | No, use Custom Fields Mapping       |

#### API Payload Examples

<AccordionGroup>
  <Accordion title="Set Priority Based on Severity">
    ```liquid theme={null}
    {% if incident.severity_slug == 'sev0' %}
      { "priority": [ { "set": { "name" : "High" } } ] }
    {% elsif incident.severity_slug == 'sev1' %}
      { "priority": [ { "set": { "name" : "Medium" } } ] }
    {% elsif incident.severity_slug == 'sev2' %}
      { "priority": [ { "set": { "name" : "Low" } } ] }
    {% endif %}
    ```
  </Accordion>

  <Accordion title="Add Comments">
    Add a comment to an existing Jira issue. Only works with the **Update Jira Issue** action.

    ```json theme={null}
    {
      "comment": [
        {
          "add": {
            "body": "Incident {{ incident.title }} has been updated. Current status: {{ incident.status }}"
          }
        }
      ]
    }
    ```

    <Warning>
      Comments can only be added to existing issues. Use this with the Update Jira Issue action, not Create.
    </Warning>
  </Accordion>

  <Accordion title="Link Issues Together">
    **"Relates to" link:**

    ```json theme={null}
    {
      "issuelinks": [
        {
          "add": {
            "type": { "name": "Relates", "outward": "relates to" },
            "outwardIssue": { "id": "{{ incident.jira_issue_id }}" }
          }
        }
      ]
    }
    ```

    **Custom "Action item for" link:**

    ```json theme={null}
    {
      "issuelinks": [
        {
          "add": {
            "type": { "name": "Action", "outward": "action item for" },
            "outwardIssue": { "id": "{{ incident.jira_issue_id }}" }
          }
        }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Set Native Labels Field">
    ```json theme={null}
    {
      "labels": [{ "set": ["incident", "production", "{{ incident.severity }}"] }]
    }
    ```
  </Accordion>

  <Accordion title="Set Components Field">
    ```liquid theme={null}
    {% assign components = incident.services %}
    {
      "components": [
        {
          "set": [
          {% for component in components %}
            { "name": "{{ component }}" }{% unless forloop.last %},{% endunless %}
          {% endfor %}
          ]
        }
      ]
    }
    ```

    <Warning>
      Component names must match exactly between Rootly and Jira. If a component doesn't exist in Jira, the update will fail.
    </Warning>
  </Accordion>
</AccordionGroup>

#### API Payload Verbs

| Verb     | Description               | Example                                          |
| -------- | ------------------------- | ------------------------------------------------ |
| `set`    | Replace the current value | `{ "labels": [{ "set": ["label1"] }] }`          |
| `add`    | Add to current values     | `{ "comment": [{ "add": { "body": "text" } }] }` |
| `remove` | Remove specific values    | `{ "labels": [{ "remove": "old-label" }] }`      |

***

### Best Practices

* **Name workflows clearly.** Use names like `Create Bug on High-Priority Incident` or `Update Jira Issue on Resolution` so the intent is obvious.
* **Keep logic simple.** Avoid overly complex conditions or chained automations — simpler workflows are easier to debug.
* **Test in a sandbox project.** Before applying to production, trigger test incidents to verify issues are created and updated as expected.

## Syncing Jira Changes Back to Rootly

1. Jira sends events to Rootly via webhook
2. Events appear as alerts on Rootly's **[Alerts page](https://rootly.com/account/alerts)**
3. Alert workflows process these events and create or update incidents

***

### Create an Alert Workflow

<Steps>
  <Step title="Create a new workflow">
    Go to **Workflows → Create Workflow** and select **Alert** as the workflow type.
  </Step>

  <Step title="Set the trigger">
    Select **Alert Created** as the trigger. This fires whenever a new alert arrives in Rootly — including events from Jira.
  </Step>

  <Step title="Add conditions">
    Filter to only process Jira alerts so the workflow doesn't fire on unrelated alert sources. You can filter by source and by label:

    * Set **Source** equals `Jira`
    * Use label filters to narrow by event type or project:
      * `event:jira:issue_created` — responds to new Jira issues
      * `event:jira:issue_updated` — responds to Jira issue updates
      * `project_key:YOUR_PROJECT` — (optional) limits to a specific Jira project

    For more targeted filtering, use the **Payload** condition with JSON path syntax (for example, `$.issue.fields.issuetype.name`). You can preview your syntax using the [JSON Path Explorer](https://rootly.com/account/help/json-path-explorer).

    <Note>
      Only a single payload field can be filtered at a time. Use label conditions as much as possible before falling back to payload filtering.
    </Note>
  </Step>

  <Step title="Add an action">
    Choose **Create Incident** or **Update Incident** from the action picker depending on whether you want to open a new incident or update an existing one.
  </Step>
</Steps>

***

### Sync Actions

<Tabs>
  <Tab title="Create Incident">
    Creates a new Rootly incident from a Jira alert.

    Use `{{ alert.data.* }}` to reference Jira fields when populating incident properties:

    | Incident Field | Jira Source                                 |
    | -------------- | ------------------------------------------- |
    | Title          | `{{ alert.data.issue.fields.summary }}`     |
    | Summary        | `{{ alert.data.issue.fields.description }}` |

    **Link back to Jira** — Add this to Custom Field Mapping so Rootly knows which Jira issue this incident came from. This mapping is required if you later want to update the incident when the Jira issue changes.

    ```json theme={null}
    {
      "jira_issue_id": "{{ alert.data.issue.id }}",
      "jira_issue_url": "https://your-instance.atlassian.net/browse/{{ alert.data.issue.key }}"
    }
    ```
  </Tab>

  <Tab title="Update Incident">
    Updates an existing Rootly incident based on a Jira update. Rootly needs to know which incident corresponds to the incoming Jira event — configure these fields to match them:

    | Field              | Value                       |
    | ------------------ | --------------------------- |
    | Attribute to Match | `jira_issue_id`             |
    | Attribute Value    | `{{ alert.data.issue.id }}` |
  </Tab>
</Tabs>

***

### Field Mapping Examples

Use Custom Field Mapping to dynamically set incident properties from Jira data.

<AccordionGroup>
  <Accordion title="Set Severity from Jira Priority">
    Maps Jira priority levels to Rootly severity IDs. Adjust the priority names to match your Jira configuration.

    ```json theme={null}
    {
      {% if alert.data.issue.fields.priority.name == 'Highest' %}
        "severity_id": "SEV0"
      {% elsif alert.data.issue.fields.priority.name == 'High' %}
        "severity_id": "SEV1"
      {% elsif alert.data.issue.fields.priority.name == 'Medium' %}
        "severity_id": "SEV2"
      {% else %}
        "severity_id": "SEV3"
      {% endif %}
    }
    ```
  </Accordion>

  <Accordion title="Set Status from Jira Status">
    Maps Jira workflow statuses to Rootly incident statuses. Replace the Jira status names with your actual values.

    ```json theme={null}
    {
      {% if alert.data.issue.fields.status.name == 'To Do' %}
        "status": "in_triage"
      {% elsif alert.data.issue.fields.status.name == 'In Progress' %}
        "status": "active"
      {% elsif alert.data.issue.fields.status.name == 'Done' %}
        "status": "resolved"
      {% else %}
        "status": "cancelled"
      {% endif %}
    }
    ```

    <Info>
      Valid Rootly statuses: `in_triage`, `active`, `resolved`, `closed`, `cancelled`
    </Info>
  </Accordion>

  <Accordion title="Set Custom Field (Hardcoded)">
    Sets a Rootly custom field to a fixed value. Replace `form_field_id` with your actual field ID.

    ```json theme={null}
    {
      "form_field_selections_attributes": [{
        "form_field_id": "YOUR_FIELD_ID",
        "value": "Production"
      }]
    }
    ```
  </Accordion>

  <Accordion title="Set Custom Field (From Jira)">
    Pulls a value from a Jira custom field and sets it on the Rootly incident. Inspect the alert payload to find the correct field path.

    ```json theme={null}
    {
      "form_field_selections_attributes": [{
        "form_field_id": "YOUR_FIELD_ID",
        "value": "{{ alert.data.issue.fields.customfield_10001 }}"
      }]
    }
    ```

    <Tip>
      Find the correct JSON path by inspecting alert payloads on the **Alerts** page in Rootly.
    </Tip>
  </Accordion>

  <Accordion title="Set Multi-Select Custom Field">
    For single or multi-select Rootly custom fields, use `selected_option_ids` instead of `value`.

    ```json theme={null}
    {
      "form_field_selections_attributes": [{
        "form_field_id": "YOUR_FIELD_ID",
        "selected_option_ids": ["option_id_1", "option_id_2"]
      }]
    }
    ```
  </Accordion>
</AccordionGroup>

***

## Troubleshooting

<AccordionGroup>
  <Accordion title="Jira integration not appearing after OAuth" icon="circle-xmark">
    **Issue:** After completing OAuth, Jira doesn't show under Connected Apps.

    **Solutions:**

    * Ensure you completed the full OAuth consent flow without navigating away
    * Confirm your Jira user has **admin** or **manage apps** permissions
    * Log out of other Jira accounts and retry authorization
    * Revoke the app in Jira (**Settings → Apps → Manage Apps**) and reconnect
  </Accordion>

  <Accordion title="Rootly cannot access Jira projects" icon="circle-xmark">
    **Issue:** Jira connects but no projects appear in Rootly.

    **Solutions:**

    * Verify your Jira account has **Browse Projects** permission
    * Check project-level permissions for **Create Issues**, **Edit Issues**, and **Add Comments**
    * Re-authenticate to refresh your permission scopes
  </Accordion>

  <Accordion title="Issue creation fails" icon="circle-xmark">
    **Issue:** Integration connects but Rootly can't create issues in Jira.

    **Solutions:**

    * Verify your Jira user has: Create Issues, Edit Issues, Assign Issues, Add Comments
    * Check for required custom fields in Jira that aren't being populated by Rootly
    * Confirm the issue type exists in the selected project
    * Review Jira workflow validators that may block external issue creation
  </Accordion>

  <Accordion title="Webhook events not appearing in Rootly" icon="circle-xmark">
    **Issue:** Jira events don't show on Rootly's Alerts page.

    **Solutions:**

    * Verify the webhook URL in Jira matches the one from Rootly
    * Ensure **Exclude body** is NOT checked in the Jira webhook settings
    * Confirm the webhook status is **Enabled**
    * Check that your JQL filter (if used) includes the project you're testing with
  </Accordion>
</AccordionGroup>

### Debugging Workflows

To view error details, locate the workflow in Rootly, then select **... → View Runs → View**.

| Error                                              | Cause                                                         | Fix                                                       |
| -------------------------------------------------- | ------------------------------------------------------------- | --------------------------------------------------------- |
| `issue_id cannot be null.`                         | The Jira issue you're trying to update doesn't exist yet      | Ensure the Create action runs before the Update action    |
| `"customfield_12345": "Custom Field is required."` | A required Jira custom field isn't being populated            | Add a mapping for the field, or make it optional in Jira  |
| `unexpected token at '{ "customfield_10032": }'`   | Custom mapping syntax is invalid                              | Fix your JSON syntax                                      |
| `Specify a valid project ID or key`                | The selected Project Key isn't available in the Jira instance | Reselect the Jira instance, then reselect the Project Key |
| `The issue type selected is invalid.`              | The selected issue type doesn't exist in the project          | Reselect the Project Key, then reselect the Issue Type    |

***

### Debugging Sync

| Error                            | Cause                              | Fix                                              |
| -------------------------------- | ---------------------------------- | ------------------------------------------------ |
| `unknown attribute for Incident` | Invalid field name or wrong syntax | Verify the field is enabled for workflow updates |
| `unexpected token`               | Invalid JSON in custom mapping     | Check your JSON syntax                           |

<Tip>
  View error details: **Workflows → Your Workflow → ... → View Runs → View**
</Tip>

## Uninstall

To remove the Jira integration:

1. Go to **Configuration → Integrations** and find **Jira**
2. Click **Connected** to reveal the disconnect option
3. Click **Disconnect**

<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 Connected to reveal the Disconnect option" width="319" height="188" data-path="images/integrations/common/uninstall-connected.png" />
</Frame>

<Warning>
  Disconnecting Rootly does **not** remove the webhook from Jira. To stop Jira from sending events, you must also delete the webhook in Jira under **Settings → System → WebHooks**.
</Warning>
