Rootly Workflows
Overview
Rootly workflows automate repetitive incident response tasks. Each workflow consists of a trigger (what starts it), conditions (when it should run), and actions (what it does). Workflows can create Slack channels, page on-call, update status pages, create Jira tickets, send notifications, and more -- all automatically when incidents match specific criteria.
Anti-triggers
"Workflow" means automation inside Rootly, fired by incident events.
Several neighbouring things share the word.
- Claude Code automation — subagents under
agents/*.md and slash
commands under commands/*.md are plugin authoring concerns, not
Rootly resources. Nothing in this skill configures Claude.
- PSA workflow rules — ticket routing, board automation, and
notification rules inside a PSA are
connectwise-psa-tickets,
halopsa-tickets, or autotask-tickets.
- PagerDuty's automation — event orchestrations and incident
workflows are a separate product surface; use
pagerduty-incidents
and pagerduty-alerts.
- RMM scripts and scheduled jobs — running a script on an endpoint is
datto-rmm-jobs, not a Rootly action.
- What a workflow did on a specific incident — execution history is
read from the incident; use
rootly-incidents.
Key Concepts
Workflow Components
- Trigger -- The event that starts the workflow (incident created, severity changed, status updated)
- Conditions -- Filters that determine if the workflow runs (severity >= SEV1, specific service, production environment)
- Actions -- What the workflow does when triggered (create channel, page team, post update)
Trigger Types
| Trigger |
Description |
incident_created |
Fires when a new incident is declared |
incident_updated |
Fires when incident fields change |
severity_changed |
Fires when severity is escalated or de-escalated |
status_changed |
Fires when status transitions (started -> mitigated -> resolved) |
role_assigned |
Fires when a role is assigned |
postmortem_created |
Fires when a postmortem is created |
action_item_created |
Fires when an action item is added |
alert_received |
Fires when an alert is received from monitoring |
Action Types
| Action |
Description |
create_slack_channel |
Create a dedicated incident Slack channel |
invite_to_slack_channel |
Add responders to the incident channel |
send_slack_message |
Post a message to a channel |
page_on_call |
Page the on-call responder via PagerDuty/Opsgenie |
create_jira_ticket |
Create a tracking ticket in Jira |
update_status_page |
Post to Statuspage or similar |
send_email |
Send email notification |
create_zoom_meeting |
Start a video bridge for the incident |
run_webhook |
Call a custom webhook |
assign_role |
Auto-assign an incident role |
update_incident |
Modify incident fields |
Condition Types
| Condition |
Description |
severity_is |
Match specific severity level |
severity_gte |
Severity is at or above threshold |
service_is |
Match specific service |
environment_is |
Match specific environment |
team_is |
Match specific team |
label_contains |
Match incident labels |
API Patterns
List Workflows
rootly_list_workflows
Parameters:
enabled -- Filter by enabled/disabled status
Example response:
{
"data": [
{
"id": "wf-001",
"type": "workflows",
"attributes": {
"name": "SEV0 Auto-Response",
"description": "Create war room and page on-call for critical incidents",
"enabled": true,
"trigger": "incident_created",
"conditions": [
{ "field": "severity", "operator": "eq", "value": "sev0" }
],
"actions": [
{ "type": "create_slack_channel" },
{ "type": "page_on_call", "target": "platform-team" },
{ "type": "create_zoom_meeting" }
],
"last_triggered_at": "2026-03-25T08:00:00Z",
"trigger_count": 12
}
}
]
}
Get Workflow Details
rootly_get_workflow
Parameters:
workflow_id -- The workflow ID
Create Workflow
rootly_create_workflow
Parameters:
name -- Workflow name (required)
description -- What the workflow does
trigger -- Trigger event type
conditions -- Array of condition objects
actions -- Array of action objects
enabled -- Whether to enable immediately
Update Workflow
rootly_update_workflow
Parameters:
workflow_id -- The workflow ID
name -- Updated name
conditions -- Updated conditions
actions -- Updated actions
Enable/Disable Workflow
rootly_enable_workflow
rootly_disable_workflow
Parameters:
workflow_id -- The workflow ID
Common Workflows
Review Automation Coverage
- Call
rootly_list_workflows to get all workflows
- Map workflows to trigger types and services
- Identify critical services without automated response
- Check for disabled workflows that should be active
- Verify action targets (Slack channels, on-call schedules) are current
Create SEV0 Auto-Response Workflow
- Create workflow with trigger
incident_created
- Add condition: severity equals SEV0
- Add actions: create Slack channel, page on-call, create Zoom meeting
- Add action: update status page with "investigating" status
- Enable the workflow
Audit Workflow Effectiveness
- List all workflows with trigger counts
- Identify workflows that never fire (stale or misconfigured)
- Identify high-frequency workflows (potential noise)
- Review action success rates
- Optimize conditions to reduce false triggers
Error Handling
Workflow Not Found
Cause: Invalid workflow ID or workflow deleted
Solution: List workflows to verify the correct ID
Invalid Trigger Type
Cause: Trigger type doesn't match valid options
Solution: Use one of the documented trigger types
Action Failed
Cause: External integration (Slack, Jira, PagerDuty) returned an error
Solution: Check integration credentials and permissions; review workflow logs
Best Practices
- Always test workflows with a non-production incident before enabling
- Use specific conditions to avoid workflows firing on every incident
- Name workflows descriptively (e.g., "SEV0 Production - Page Platform Team")
- Monitor workflow trigger counts to detect misconfiguration
- Disable rather than delete workflows you might need again
- Document the purpose of each workflow in the description field
- Chain workflows carefully to avoid circular triggers
Related Skills
1---2name: rootly-workflows3description: Rootly's incident-response automation model: the trigger / condition / action structure, the full catalog of trigger, action, and condition types, workflow CRUD and enable/disable, and the failure modes behind stale, over-firing, or circularly chained workflows.4---56# Rootly Workflows78## Overview910Rootly workflows automate repetitive incident response tasks. Each workflow consists of a trigger (what starts it), conditions (when it should run), and actions (what it does). Workflows can create Slack channels, page on-call, update status pages, create Jira tickets, send notifications, and more -- all automatically when incidents match specific criteria.1112## Anti-triggers1314"Workflow" means automation *inside Rootly, fired by incident events*.15Several neighbouring things share the word.1617- **Claude Code automation** — subagents under `agents/*.md` and slash18 commands under `commands/*.md` are plugin authoring concerns, not19 Rootly resources. Nothing in this skill configures Claude.20- **PSA workflow rules** — ticket routing, board automation, and21 notification rules inside a PSA are `connectwise-psa-tickets`,22 `halopsa-tickets`, or `autotask-tickets`.23- **PagerDuty's automation** — event orchestrations and incident24 workflows are a separate product surface; use `pagerduty-incidents`25 and `pagerduty-alerts`.26- **RMM scripts and scheduled jobs** — running a script on an endpoint is27 `datto-rmm-jobs`, not a Rootly action.28- **What a workflow did on a specific incident** — execution history is29 read from the incident; use `rootly-incidents`.3031## Key Concepts3233### Workflow Components3435- **Trigger** -- The event that starts the workflow (incident created, severity changed, status updated)36- **Conditions** -- Filters that determine if the workflow runs (severity >= SEV1, specific service, production environment)37- **Actions** -- What the workflow does when triggered (create channel, page team, post update)3839### Trigger Types4041| Trigger | Description |42|---------|-------------|43| `incident_created` | Fires when a new incident is declared |44| `incident_updated` | Fires when incident fields change |45| `severity_changed` | Fires when severity is escalated or de-escalated |46| `status_changed` | Fires when status transitions (started -> mitigated -> resolved) |47| `role_assigned` | Fires when a role is assigned |48| `postmortem_created` | Fires when a postmortem is created |49| `action_item_created` | Fires when an action item is added |50| `alert_received` | Fires when an alert is received from monitoring |5152### Action Types5354| Action | Description |55|--------|-------------|56| `create_slack_channel` | Create a dedicated incident Slack channel |57| `invite_to_slack_channel` | Add responders to the incident channel |58| `send_slack_message` | Post a message to a channel |59| `page_on_call` | Page the on-call responder via PagerDuty/Opsgenie |60| `create_jira_ticket` | Create a tracking ticket in Jira |61| `update_status_page` | Post to Statuspage or similar |62| `send_email` | Send email notification |63| `create_zoom_meeting` | Start a video bridge for the incident |64| `run_webhook` | Call a custom webhook |65| `assign_role` | Auto-assign an incident role |66| `update_incident` | Modify incident fields |6768### Condition Types6970| Condition | Description |71|-----------|-------------|72| `severity_is` | Match specific severity level |73| `severity_gte` | Severity is at or above threshold |74| `service_is` | Match specific service |75| `environment_is` | Match specific environment |76| `team_is` | Match specific team |77| `label_contains` | Match incident labels |7879## API Patterns8081### List Workflows8283```84rootly_list_workflows85```8687Parameters:88- `enabled` -- Filter by enabled/disabled status8990**Example response:**9192```json93{94 "data": [95 {96 "id": "wf-001",97 "type": "workflows",98 "attributes": {99 "name": "SEV0 Auto-Response",100 "description": "Create war room and page on-call for critical incidents",101 "enabled": true,102 "trigger": "incident_created",103 "conditions": [104 { "field": "severity", "operator": "eq", "value": "sev0" }105 ],106 "actions": [107 { "type": "create_slack_channel" },108 { "type": "page_on_call", "target": "platform-team" },109 { "type": "create_zoom_meeting" }110 ],111 "last_triggered_at": "2026-03-25T08:00:00Z",112 "trigger_count": 12113 }114 }115 ]116}117```118119### Get Workflow Details120121```122rootly_get_workflow123```124125Parameters:126- `workflow_id` -- The workflow ID127128### Create Workflow129130```131rootly_create_workflow132```133134Parameters:135- `name` -- Workflow name (required)136- `description` -- What the workflow does137- `trigger` -- Trigger event type138- `conditions` -- Array of condition objects139- `actions` -- Array of action objects140- `enabled` -- Whether to enable immediately141142### Update Workflow143144```145rootly_update_workflow146```147148Parameters:149- `workflow_id` -- The workflow ID150- `name` -- Updated name151- `conditions` -- Updated conditions152- `actions` -- Updated actions153154### Enable/Disable Workflow155156```157rootly_enable_workflow158rootly_disable_workflow159```160161Parameters:162- `workflow_id` -- The workflow ID163164## Common Workflows165166### Review Automation Coverage1671681. Call `rootly_list_workflows` to get all workflows1692. Map workflows to trigger types and services1703. Identify critical services without automated response1714. Check for disabled workflows that should be active1725. Verify action targets (Slack channels, on-call schedules) are current173174### Create SEV0 Auto-Response Workflow1751761. Create workflow with trigger `incident_created`1772. Add condition: severity equals SEV01783. Add actions: create Slack channel, page on-call, create Zoom meeting1794. Add action: update status page with "investigating" status1805. Enable the workflow181182### Audit Workflow Effectiveness1831841. List all workflows with trigger counts1852. Identify workflows that never fire (stale or misconfigured)1863. Identify high-frequency workflows (potential noise)1874. Review action success rates1885. Optimize conditions to reduce false triggers189190## Error Handling191192### Workflow Not Found193194**Cause:** Invalid workflow ID or workflow deleted195**Solution:** List workflows to verify the correct ID196197### Invalid Trigger Type198199**Cause:** Trigger type doesn't match valid options200**Solution:** Use one of the documented trigger types201202### Action Failed203204**Cause:** External integration (Slack, Jira, PagerDuty) returned an error205**Solution:** Check integration credentials and permissions; review workflow logs206207## Best Practices208209- Always test workflows with a non-production incident before enabling210- Use specific conditions to avoid workflows firing on every incident211- Name workflows descriptively (e.g., "SEV0 Production - Page Platform Team")212- Monitor workflow trigger counts to detect misconfiguration213- Disable rather than delete workflows you might need again214- Document the purpose of each workflow in the description field215- Chain workflows carefully to avoid circular triggers216217## Related Skills218219- [api-patterns](../api-patterns/SKILL.md) - Pagination and error handling220- [incidents](../incidents/SKILL.md) - Incidents that trigger workflows221- [services](../services/SKILL.md) - Service-based workflow conditions222- [alerts](../alerts/SKILL.md) - Alert-triggered workflows223- [postmortems](../postmortems/SKILL.md) - Postmortem-triggered workflows