Skip to main content
When a Jira issue is created or updated, Rootly can automatically create or update a corresponding incident. This enables bidirectional sync between the two systems — Jira events flow in through the webhook you configured during installation, appear as alerts in Rootly, and are processed by alert workflows.
Webhook Required — You must first set up a webhook in Jira to send events to Rootly before this will work.

How It Works

  1. Jira sends events to Rootly via webhook
  2. Events appear as alerts on Rootly’s Alerts page
  3. Alert workflows process these events and create or update incidents

Create an Alert Workflow

1

Create a new workflow

Go to Workflows → Create Workflow and select Alert as the workflow type.
2

Set the trigger

Select Alert Created as the trigger. This fires whenever a new alert arrives in Rootly — including events from Jira.
3

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 (e.g., $.issue.fields.issuetype.name). You can preview your syntax using the JSON Path Explorer.
Only a single payload field can be filtered at a time. Use label conditions as much as possible before falling back to payload filtering.
4

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.

Actions

Creates a new Rootly incident from a Jira alert.Use {{ alert.data.* }} to reference Jira fields when populating incident properties:
Incident FieldJira 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.
{
  "jira_issue_id": "{{ alert.data.issue.id }}",
  "jira_issue_url": "https://your-instance.atlassian.net/browse/{{ alert.data.issue.key }}"
}

Field Mapping Examples

Use Custom Field Mapping to dynamically set incident properties from Jira data.
Maps Jira priority levels to Rootly severity IDs. Adjust the priority names to match your Jira configuration.
{
  {% 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 %}
}
Maps Jira workflow statuses to Rootly incident statuses. Replace the Jira status names with your actual values.
{
  {% 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 %}
}
Valid Rootly statuses: in_triage, active, resolved, closed, cancelled
Sets a Rootly custom field to a fixed value. Replace form_field_id with your actual field ID.
{
  "form_field_selections_attributes": [{
    "form_field_id": "YOUR_FIELD_ID",
    "value": "Production"
  }]
}
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.
{
  "form_field_selections_attributes": [{
    "form_field_id": "YOUR_FIELD_ID",
    "value": "{{ alert.data.issue.fields.customfield_10001 }}"
  }]
}
Find the correct JSON path by inspecting alert payloads on the Alerts page in Rootly.
For single or multi-select Rootly custom fields, use selected_option_ids instead of value.
{
  "form_field_selections_attributes": [{
    "form_field_id": "YOUR_FIELD_ID",
    "selected_option_ids": ["option_id_1", "option_id_2"]
  }]
}

Debugging

ErrorCauseFix
unknown attribute for IncidentInvalid field name or wrong syntaxVerify the field is enabled for workflow updates
unexpected tokenInvalid JSON in custom mappingCheck your JSON syntax
View error details: Workflows → Your Workflow → … → View Runs → View