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

# Workflow Actions Reference

> Reference for all 152 Rootly workflow action types, grouped by category: Slack, Google Chat, Jira, on-call, AI, and incident operations.

Workflow actions are the individual steps that execute when a workflow runs. Each action connects to a specific integration or Rootly capability. This page lists every available action grouped by category.

<Info>
  Many text fields support [Liquid templating](/liquid/liquid) for dynamic values drawn from incident, alert, or on-call context. Selector fields (dropdowns, user pickers, etc.) do not accept Liquid.
</Info>

<Note>
  Available actions depend on your enabled integrations and the workflow type (incident, alert, on-call, etc.). Actions for integrations that are not connected will not appear when building a workflow.
</Note>

<Tip>
  The **Key fields** column lists internal field names as they appear in the API and workflow schema. Labels in the UI may differ slightly (for example, `workspace` appears as **Workspace** in the form).
</Tip>

***

## Slack

| Action | Description | Key fields |
| - | - | - |
| **Add Slack Bookmark** | Add a bookmark to the incident Slack channel | `channel`, `name`, `link`, `emoji` |
| **Archive Slack Channel** | Archive the incident Slack channel | `channels`, `name` |
| **Change Slack Channel Privacy** | Change a Slack channel's privacy setting | `channel`, `privacy` |
| **Create Slack Channel** | Create a Slack channel for the incident | `name`, `private`, `workspace` |
| **Create Slack Channel Canvas** | Create a channel canvas from a Markdown and Liquid template. An existing canvas is kept as is | `channel`, `title`, `content` |
| **Invite Rootly On-Call to Slack Channel** | Invite users to the channel based on a Rootly target — on-call from a schedule, escalation policy, service, team, or individual user | `channel`, `escalation_policy`, `service`, `team`, `user`, `schedule` |
| **Invite On-Call to Slack Channel (PagerDuty)** | Invite the PagerDuty on-call user to the channel | `channel`, `escalation_policy`, `schedule`, `service` |
| **Invite On-Call to Slack Channel (Opsgenie)** | Invite the Opsgenie on-call user to the channel | `channel` |
| **Invite On-Call to Slack Channel (VictorOps)** | Invite the VictorOps on-call user to the channel | `channel` |
| **Invite Users to Slack Channel** | Invite specific users or user groups to a channel | `channel`, `slack_users`, `slack_user_groups`, `slack_emails` |
| **Rename Slack Channel** | Rename a Slack channel | `channel`, `title` |
| **Send Slack Blocks** | Send a rich interactive Block Kit message to a Slack channel | `channels`, `blocks`, `attachments`, `broadcast_thread_reply_to_channel` |
| **Send Slack Message** | Send a plain or formatted message to a Slack channel | `channels`, `color`, `actionables`, `broadcast_thread_reply_to_channel` |
| **Send Slack Reminder** | Send a recurring reminder with snooze and pause buttons | `channels`, `message`, `interval` |
| **Update Slack Channel Canvas** | Append to or replace the content of an existing channel canvas | `channel`, `content`, `operation` |
| **Update Slack Channel Topic** | Update the topic of a Slack channel | `channel`, `topic` |

***

## Microsoft Teams

| Action | Description | Key fields |
| - | - | - |
| **Add Microsoft Teams Chat Tab** | Add a tab to a Teams chat | `chat`, `title`, `link` |
| **Add Microsoft Teams Tab** | Add a tab to the incident Teams channel | `channel`, `title`, `link` |
| **Archive Microsoft Teams Channel** | Archive the incident Teams channel | `channels`, `team` |
| **Create Microsoft Teams Channel** | Create a Teams channel for the incident | `name`, `title`, `team` |
| **Create Microsoft Teams Chat** | Create a Teams group or one-on-one chat | `chat_type`, `members`, `topic` |
| **Create Microsoft Teams Meeting** | Create a Teams meeting link | `record_meeting`, `recording_mode`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Invite Users to Microsoft Teams Channel** | Invite users to a private Teams channel | `channel`, `team`, `emails` |
| **Rename Microsoft Teams Channel** | Rename a Teams channel | `channel`, `team`, `title` |
| **Send Microsoft Teams Attachments** | Send a rich attachment message to a Teams channel | `channels`, `attachments` |
| **Send Microsoft Teams Chat Message** | Send a message to a Teams chat | `chats`, `text` |
| **Send Microsoft Teams Message** | Send a message to a Teams channel | `channels`, `text` |

***

## Google Chat

| Action | Description | Key fields |
| - | - | - |
| **Archive Google Chat Spaces** | Delete incident Google Chat spaces | `spaces` |
| **Change Google Chat Space Privacy** | Switch a space between private and discoverable | `space`, `audience` |
| **Create Google Chat Space** | Create a dedicated space for the incident | `title`, `description`, `audience` |
| **Invite to Google Chat Space** | Invite users to a space by email | `space`, `emails` |
| **Rename Google Chat Space** | Rename a Google Chat space | `space`, `title` |
| **Send Google Chat Attachments** | Send Cards v2 to Google Chat spaces | `spaces`, `attachments` |
| **Send Google Chat Message** | Send a text message to Google Chat spaces | `spaces`, `text`, `thread_key` |
| **Update Google Chat Space Description** | Update a space's description | `space`, `description` |

***

## Incident Management

| Action | Description | Key fields |
| - | - | - |
| **Add Action Item** | Create a task or follow-up on the incident | `kind`, `summary`, `description`, `assignee` |
| **Add Incident Role** | Assign a user to an incident role | `role`, `user` |
| **Add Team** | Set the team on the incident | `group_id` |
| **Add to Timeline** | Add a custom event to the incident timeline | `event`, `url` |
| **Create Incident** | Create a new incident | `custom_fields_mapping` |
| **Create Incident Retrospective** | Create a Rootly retrospective for the incident | `incident_id` |
| **Create Sub Incident** | Create a sub-incident linked to the current incident | `incident_id`, `sync_info` |
| **Create ServiceNow Incident** | Create a ServiceNow ticket for the incident | `description`, `status`, `custom_fields_mapping`, `acts_as_user` |
| **Update Action Item** | Update an existing action item, including its [custom field values](/incidents/action-items/action-item-custom-fields) | `kind`, `summary`, `description`, `attribute_to_query_by`, `custom_fields_mapping` |
| **Update Incident** | Update fields on the incident | `custom_fields_mapping`, `attribute_to_query_by`, `acknowledged_at`, `mitigated_at` |
| **Update Incident Retrospective** | Update the incident's retrospective | `postmortem_id` |
| **Update Incident Status** | Update incident status after a period of inactivity | `inactivity_timeout`, `message` |
| **Update Incident Status Timestamp** | Update a lifecycle timestamp on the incident | `status`, `timestamp` |
| **Update ServiceNow Incident** | Update an existing ServiceNow ticket | `incident_id`, `description`, `status`, `custom_fields_mapping`, `acts_as_user` |

***

## On-Call & Paging

| Action | Description | Key fields |
| - | - | - |
| **Auto Assign Role (Rootly)** | Assign an incident role from a Rootly on-call rotation | `escalation_target`, `incident_role_id` |
| **Auto Assign Role (PagerDuty)** | Assign an incident role from a PagerDuty on-call rotation | `incident_role_id`, `escalation_policy`, `schedule`, `service` |
| **Auto Assign Role (Opsgenie)** | Assign an incident role from an Opsgenie on-call rotation | `incident_role_id` |
| **Auto Assign Role (VictorOps)** | Assign an incident role from a VictorOps on-call rotation | `incident_role_id` |
| **Page Rootly On-Call** | Page a Rootly on-call escalation target | `escalation_target`, `title`, `description` |
| **Page PagerDuty On-Call** | Page a PagerDuty on-call rotation | `service`, `escalation_policies`, `message`, `priority`, `create_new_incident_on_conflict` |
| **Page Opsgenie On-Call** | Page an Opsgenie on-call rotation | `title`, `message`, `description` |
| **Page VictorOps On-Call** | Page a VictorOps on-call rotation | `title` |
| **Page JSM Ops On-Call** | Page a Jira Service Management on-call rotation | `title`, `message`, `description` |
| **Create PagerTree Incident** | Create a PagerTree incident to trigger paging | `title`, `description` |
| **Create PagerDuty Status Update** | Post a status update to an existing PagerDuty incident | `pagerduty_incident_id`, `message` |
| **Update PagerDuty Incident** | Update an existing PagerDuty incident | `pagerduty_incident_id`, `title`, `priority`, `resolution` |
| **Update PagerTree Incident** | Update an existing PagerTree incident | `pagertree_alert_id` |
| **Publish Incident to Status Page** | Publish the incident to a status page | `status_page`, `status_page_template`, `public_title`, `status`, `event` |

***

## Project Management

| Action | Description | Key fields |
| - | - | - |
| **Create Jira Issue** | Create a Jira ticket for the incident | `project`, `issue_type`, `description`, `labels`, `due_date`, `assign_user_email`, `custom_fields_mapping` |
| **Create Jira Subtask** | Create a subtask under an existing Jira ticket | `parent_issue_id`, `description`, `labels`, `due_date`, `assign_user_email`, `custom_fields_mapping` |
| **Update Jira Issue** | Update an existing Jira ticket | `issue_id`, `description`, `labels`, `due_date`, `assign_user_email`, `custom_fields_mapping` |
| **Create Linear Issue** | Create a Linear issue for the incident | `title`, `description`, `priority`, `assign_user_email`, `custom_fields_mapping` |
| **Create Linear Subtask** | Create a subtask under an existing Linear issue | `parent_issue_id`, `title`, `description`, `priority`, `assign_user_email`, `custom_fields_mapping` |
| **Create Linear Issue Comment** | Add a comment to a Linear issue | `issue_id`, `body` |
| **Update Linear Issue** | Update an existing Linear issue | `issue_id`, `description`, `priority`, `assign_user_email`, `custom_fields_mapping` |
| **Create Asana Task** | Create an Asana task for the incident | `due_date`, `labels`, `assign_user_email`, `custom_fields_mapping` |
| **Create Asana Subtask** | Create a subtask under an existing Asana task | `parent_task_id`, `due_date`, `assign_user_email`, `custom_fields_mapping` |
| **Update Asana Task** | Update an existing Asana task | `task_id`, `due_date`, `completion`, `assign_user_email`, `custom_fields_mapping` |
| **Create ClickUp Task** | Create a ClickUp task for the incident | `description`, `due_date`, `tags`, `parent_task_id`, `custom_fields_mapping` |
| **Update ClickUp Task** | Update an existing ClickUp task | `task_id`, `description`, `due_date`, `completion`, `custom_fields_mapping` |
| **Create Shortcut Story** | Create a Shortcut story for the incident | `description`, `due_date`, `labels`, `group` |
| **Create Shortcut Task** | Create a task under an existing Shortcut story | `parent_story_id`, `description` |
| **Update Shortcut Story** | Update an existing Shortcut story | `story_id`, `description`, `due_date`, `labels` |
| **Update Shortcut Task** | Update an existing Shortcut task | `task_id`, `parent_story_id`, `description`, `completion` |
| **Create Trello Card** | Create a Trello card for the incident | `board`, `list`, `description`, `due_date` |
| **Update Trello Card** | Update an existing Trello card | `card_id`, `board`, `list`, `description`, `due_date` |
| **Create Motion Task** | Create a Motion task for the incident | `description`, `due_date`, `duration`, `labels` |
| **Update Motion Task** | Update an existing Motion task | `task_id`, `description`, `due_date`, `duration`, `labels` |

***

## Docs & Pages

| Action | Description | Key fields |
| - | - | - |
| **Create Confluence Page** | Create a Confluence page from a retrospective template | `title`, `content`, `template`, `post_mortem_template_id` |
| **Update Confluence Page** | Update an existing Confluence page | `file_id`, `content`, `template`, `post_mortem_template_id` |
| **Create Coda Page** | Create a Coda page from a retrospective template | `doc`, `folder_id`, `content`, `format`, `post_mortem_template_id` |
| **Update Coda Page** | Update an existing Coda page | `doc_id`, `page_id`, `content`, `format`, `post_mortem_template_id` |
| **Create Datadog Notebook** | Create a Datadog notebook for the incident | `content`, `kind`, `template`, `post_mortem_template_id` |
| **Update Datadog Notebook** | Update an existing Datadog notebook | `file_id`, `content`, `kind`, `post_mortem_template_id` |
| **Create Dropbox Paper** | Create a Dropbox Paper document from a template | `parent_folder`, `permissions`, `content`, `post_mortem_template_id` |
| **Update Dropbox Paper** | Update an existing Dropbox Paper document | `file_id`, `title`, `content`, `post_mortem_template_id` |
| **Create Google Doc** | Create a Google Doc from a retrospective template | `drive`, `parent_folder`, `permissions`, `content`, `post_mortem_template_id` |
| **Update Google Doc** | Update an existing Google Doc | `file_id`, `content`, `template_id`, `post_mortem_template_id` |
| **Create Google Doc Permissions** | Grant users access to a Google Doc | `file_id`, `permissions` |
| **Remove Google Doc Permissions** | Revoke user access to a Google Doc | `file_id`, `attribute_to_query_by` |
| **Create Notion Page** | Create a Notion page for the incident | `title`, `show_action_items_as_table`, `show_timeline_as_table` |
| **Update Notion Page** | Update an existing Notion page | `file_id`, `title`, `show_action_items_as_table`, `show_timeline_as_table` |
| **Create Quip Page** | Create a Quip page from a template | `parent_folder_id`, `content`, `template_id`, `post_mortem_template_id` |
| **Update Quip Page** | Update an existing Quip page | `file_id`, `content`, `template_id`, `post_mortem_template_id` |
| **Create SharePoint Page** | Create a SharePoint document from a template | `site`, `drive`, `parent_folder`, `content`, `post_mortem_template_id` |
| **Update SharePoint Page** | Update an existing SharePoint document | `file_id`, `title`, `content`, `post_mortem_template_id` |

***

## Developer Tools

| Action | Description | Key fields |
| - | - | - |
| **Create GitHub Issue** | Create a GitHub issue for the incident | `repository`, `issue_type`, `body`, `labels`, `parent_issue_number`, `custom_fields_mapping` |
| **Update GitHub Issue** | Update an existing GitHub issue | `issue_id`, `body`, `labels`, `labels_mode`, `issue_type`, `custom_fields_mapping` |
| **Get GitHub Commits** | Retrieve recent commits from a GitHub repository | `github_repository_names`, `branch`, `service_ids`, `past_duration` |
| **Create GitLab Issue** | Create a GitLab issue for the incident | `repository`, `issue_type`, `body`, `labels`, `due_date` |
| **Update GitLab Issue** | Update an existing GitLab issue | `issue_id`, `description`, `labels`, `due_date`, `issue_type` |
| **Get GitLab Commits** | Retrieve recent commits from a GitLab repository | `gitlab_repository_names`, `branch`, `service_ids`, `past_duration` |
| **Create Zendesk Ticket** | Create a Zendesk ticket for the incident | `subject`, `comment`, `tags`, `custom_fields_mapping` |
| **Update Zendesk Ticket** | Update an existing Zendesk ticket | `ticket_id`, `subject`, `tags`, `completion`, `custom_fields_mapping` |
| **Create Zendesk Jira Link** | Link a Zendesk ticket to a Jira issue | `zendesk_ticket_id`, `jira_issue_id`, `jira_issue_key` |
| **Create FreshService Ticket** | Create a FreshService ticket for the incident | `subject`, `description`, `priority`, `status`, `request_user_email` |
| **Update FreshService Ticket** | Update an existing FreshService ticket | `subject`, `description`, `priority`, `status`, `tags` |
| **Create FreshService Task** | Create a task under a FreshService ticket | `parent_ticket_id`, `title`, `description`, `priority`, `status` |
| **Update FreshService Task** | Update an existing FreshService task | `task_id`, `parent_ticket_id`, `description`, `priority`, `status` |
| **Create Airtable Record** | Create an Airtable record for the incident | `custom_fields_mapping` |
| **Update Airtable Record** | Update an existing Airtable record | `record_id`, `base_key`, `table_name`, `custom_fields_mapping` |
| **Run Heroku Command** | Execute a command in a Heroku app | `post_to_incident_timeline`, `post_to_slack_channels` |
| **HTTP Client** | Make an outbound HTTP request to any REST API — see [HTTP Client Action](/workflows/http-client) for timeouts, retries, and signing | `method`, `url`, `headers`, `body`, `succeed_on_status`, `event_url`, `event_message` |
| **Redis Client** | Execute commands against a Redis instance | `commands`, `post_to_incident_timeline` |

***

## Observability

| Action | Description | Key fields |
| - | - | - |
| **Snapshot Datadog Graph** | Post a Datadog graph to the incident timeline | `post_to_incident_timeline`, `post_to_slack_channels` |
| **Attach Datadog Dashboards** | Post a Datadog dashboard link to the timeline | `post_to_incident_timeline`, `post_to_slack_channels` |
| **Snapshot Grafana Dashboard** | Post a Grafana dashboard snapshot to the timeline | `post_to_incident_timeline`, `post_to_slack_channels` |
| **Snapshot Grafana Panel** | Post a specific Grafana panel to the timeline | `post_to_incident_timeline`, `post_to_slack_channels` |
| **Snapshot Looker Graph** | Post a Looker graph to the incident timeline | `post_to_incident_timeline`, `post_to_slack_channels` |
| **Snapshot New Relic Graph** | Post a New Relic graph to the incident timeline | `metric_query`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Get Alerts** | Retrieve alerts matching a filter for use in subsequent actions | `sources`, `environment_ids`, `labels`, `past_duration` |
| **Get Pulses** | Retrieve deploys and changes matching a filter | `sources`, `environment_ids`, `labels`, `past_duration` |
| **Update Attached Alerts** | Update the status or position of alerts attached to the incident | `status`, `position`, `created_at` |
| **Create Opsgenie Alert** | Create an alert in Opsgenie | `description`, `details` |
| **Update Opsgenie Alert** | Update an existing Opsgenie alert | `alert_id` |
| **Update Opsgenie Incident** | Update an existing Opsgenie incident | `opsgenie_incident_id` |
| **Create JSM Alert** | Create an alert in Jira Service Management | `description`, `details` |
| **Update VictorOps Incident** | Update an existing VictorOps incident | `victor_ops_incident_id`, `resolution_message` |
| **Send Dashboard Report** | Send a dashboard snapshot report via email | `dashboard_ids`, `from`, `cc`, `bcc`, `body` |

***

## Meetings & Calendar

| Action | Description | Key fields |
| - | - | - |
| **Create Google Meet** | Create a Google Meet link | `record_meeting`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Create Zoom Meeting** | Create a Zoom meeting link | `password`, `record_meeting`, `create_as_email`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Create Webex Meeting** | Create a Webex meeting link | `password`, `record_meeting`, `recording_mode`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Create GoToMeeting** | Create a GoToMeeting link | `subject`, `post_to_incident_timeline`, `post_to_slack_channels` |
| **Create Google Calendar Event** | Schedule a meeting on Google Calendar | `calendar_id`, `attendees`, `description`, `conference_solution_key`, `exclude_weekends` |
| **Update Google Calendar Event** | Update an existing Google Calendar event | `event_id`, `attendees`, `conference_solution_key`, `exclude_weekends` |
| **Create Outlook Event** | Schedule a meeting on Outlook Calendar | `calendar`, `attendees`, `description`, `enable_online_meeting`, `exclude_weekends` |

***

## Notifications

| Action | Description | Key fields |
| - | - | - |
| **Send Email** | Send an email to any address | `from`, `to`, `cc`, `bcc`, `body`, `include_header`, `include_footer` |
| **Send SMS** | Send an SMS to a phone number | `phone_numbers`, `content` |
| **Send WhatsApp Message** | Send a WhatsApp message to a phone number | `phone_numbers`, `content` |
| **Call People** | Make outbound phone calls | `phone_numbers`, `content` |
| **Send Tweet** | Post a tweet on Twitter / X | `message` |

***

## AI

| Action | Description | Key fields |
| - | - | - |
| **OpenAI Chat Completion** | Send a prompt to OpenAI and use the response in subsequent actions | `model`, `prompt`, `system_prompt` |
| **Anthropic Chat Completion** | Send a prompt to Anthropic Claude and use the response in subsequent actions | `model`, `prompt`, `system_prompt` |
| **Gemini Chat Completion** | Send a prompt to Google Gemini and use the response in subsequent actions | `model`, `prompt`, `system_prompt` |
| **Mistral Chat Completion** | Send a prompt to Mistral AI and use the response in subsequent actions | `model`, `prompt`, `system_prompt`, `max_tokens` |

<Note>
  AI actions require the corresponding LLM integration to be configured in **Settings → Integrations**. The response from any AI action can be referenced in downstream actions using Liquid variables.
</Note>

***

## Utility

| Action | Description | Key fields |
| - | - | - |
| **Trigger Workflow** | Trigger another workflow from the current one | `kind`, `check_workflow_conditions`, `attribute_to_query_by`, `match_header` |
| **Print** | Print a message to the workflow run log for debugging | `message` |

<Info>
  **HTTP Client** and **Redis Client** are also available as utility-style actions — see [Developer Tools](#developer-tools) above.
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.