Overview
Sometimes a simple Slack message isn’t enough—especially during a fast-moving incident when responders need structured actions, rich context, and guided workflows.The Send Slack Blocks workflow action allows you to build complete interactive Slack experiences using Slack’s Block Kit framework. With this action, you can:
- Send richly formatted messages to Slack channels, users, or user groups
- Provide responders with buttons that open Rootly modals or workflows
- Thread updates under existing messages
- Pin important updates
- Run custom workflows or present custom forms
- Mirror in-product toolbars directly inside Slack
Action Attributes

Name
This field is automatically set for you. You can rename this field to whatever best describes your action. The value in this field does not affect how the workflow action behaves.Slack Users
Specify the Slack user(s) you wish to send the custom Slack block to.Slack User Groups
Specify which Slack user group(s) you wish to send the custom Slack block to. All users part of the specified user group(s) will be sent the block. You can read more about Slack user groups here.Channels
This field specifies which Slack channels to send the Slack block to. Some common selections:- Setting to
{{ incident.slack_channel_id }}will send the block to the Slack channel of the triggering incident. - The Liquid syntax
{{ parent_incident.slack_channel_id }}can be used for sub incidents and it will send the block to the Slack channel of the parent incident. - You can also send blocks to static channel (e.g.
#general,#alerts)
Send as Ephemeral
If selected, your message will be sent as a hidden message visible only to the specified users. A value must be set for theSlack Users or Slack User Groups and Channels when this field is selected. Additionally, the selected users need to be in the specified channels.
Pin to Channel
If selected, your message will pinned to the specified channel(s).Message Threading Options
If you want to thread the block under an existing block/message that Rootly has previously sent, you can do so by selecting a parent block/message to be threaded under.Filter Tasks by Workflow
This field is used to filter for the workflow that contains the specific action responsible for sending the parent message. The value in this field will not persist once the workflow is saved, as theSelect a Task field is what ultimately determines the parent message to thread under.
Select a Task
This field is used to select the specific action that’s responsible for sending the parent block/message. This field determines which block/message is the parent block/message to thread under.Update Parent Message
If this field is selected, the workflow will update the original parent block/message, instead of threading underneath it.Broadcast Thread Reply to Channel
If this field is selected, the threaded block will also be broadcasted as a new block in the specified channels.Notification Preview
Content in this field will be displayed in the push notifications. This field supports Liquid variables.Blocks
The blocks field consist of the payload that will be send in Slack. Customizing this payload will allow you to build custom messaging. The payload follows the same restrictions as Slack’s block elements do. You can preview and check if your payload is valid by clicking thePreview button. This button will route you to Slack’s Block Kit builder.
Select a Template Dropdown
You can choose any pre-built blocks from theSelect a template dropdown field. This is a great starting point to get familiarized with Slack’s Block Kit syntax.
Section
Selecting a section will append a pre-built section to your existing payload. Sample text block with markdown enabledRootly Action IDs
Rootly provides a rich set of interactive actions that can be triggered directly from Slack messages using Block Kit buttons. Each action is identified by anaction_id, which tells Rootly what modal, dialog, or workflow should open when a user clicks a button. These actions allow responders to manage incidents, assign roles, update forms, escalate through on-call systems, publish to status pages, trigger workflows, and more—all without leaving Slack.
Selecting an action will append a pre-built action element to your existing payload. Each block option here is customizable. The action_id field must be set to one of the following available values.
Incident Editing and Toolbar Actions
These actions mirror the primary controls available in the incident toolbar within the Rootly web interface. They allow responders to update key incident attributes directly from Slack, enabling fast and seamless adjustments during active incident response.
These actions are most frequently used in workflow-generated Slack messages that serve as toolbars during incident response.
Roles, Custom Fields, and Action Items
These actions provide access to the deeper, structured metadata associated with an incident. They are helpful when you want responders to supply additional detail, update responsibilities, or manage follow-up work directly from Slack.
These actions ensure that critical metadata and structured follow-up work can be captured in real time.
PagerDuty, Opsgenie, and VictorOps Responders
If your team uses an on-call provider such as PagerDuty, Opsgenie, or VictorOps, these actions allow responders to request additional help directly from Slack. Rootly opens the appropriate native dialog based on the integration installed.
Action IDs in this category only function if the corresponding integration is installed and configured.
Escalation Flow Navigation
Rootly’s escalation modal consists of multiple steps, particularly when working with PagerDuty. These internal
action_id values allow navigation between different screens within the escalation dialog.
These action IDs are mostly used internally by Rootly during modal interactions, but they are documented here for completeness and for teams that build highly customized Slack experiences.
Status Page Publishing
These actions open the modal used to publish incident updates to a Rootly status page. The difference between the two is primarily contextual: one is designed for general use, and the other appears when triggered from the incident overview toolbar.
Either may be used depending on where your Slack block resides.
Workflow Reminder Controls
Repeating workflow reminders—commonly used for prompting updates, stakeholder communications, or periodic status checks—can be controlled directly from Slack using these actions.
These actions are useful in time-based or scheduled periodic reminder workflows.
Custom Workflows and Custom Forms
These action IDs enable deep integration with your team’s automation and custom forms. They allow responders to invoke tailored, organization-specific actions directly from Slack messages.
These actions allow teams to design highly specialized Slack-driven workflows that reflect their internal processes.
Example: Triggering a Custom Workflow
Attachments
Attach secondary content to your main message. Use this for content that adds further context or additional information but isn’t vital. Please note attachments are a legacy part of the Slack messaging functionality. You should understand that they might change in the future, in ways that reduce their visibility or utility. See Slack documentation for more details.Troubleshooting
Message did not appear in Slack
Message did not appear in Slack
- Confirm the workflow ran successfully
Check the workflow run history in Rootly to ensure the action was executed and did not fail validation. - Verify channels and recipients
Ensure the Channels field is set (for example,{{ incident.slack_channel_id }}or a valid#channelname) and that the Slack app has access to that channel. - Check Slack app permissions
Confirm that the Rootly Slack app is installed in the workspace and added to the target channels.
Ephemeral message is not visible
Ephemeral message is not visible
- Validate required targeting
For ephemeral messages, you must specify Slack Users or Slack User Groups and Channels. - Confirm channel membership
The targeted users must be members of the specified channels; Slack will silently drop ephemeral messages for non-members. - Test with a direct tag
Try sending an ephemeral block to a single known user and channel to isolate whether the issue is configuration or targeting.
Block Kit validation or rendering issues
Block Kit validation or rendering issues
- Use Block Kit Builder for structure
Copy the JSON (without Liquid) into Slack’s Block Kit Builder to validate structure and layout. - Add Liquid cautiously
After validation, reintroduce Liquid variables in Rootly. If a block suddenly fails, temporarily remove or simplify Liquid expressions to identify the culprit. - Avoid unsupported elements
Ensure you are only using Block Kit components that are supported in the surfaces where the message will appear.
Custom workflow or form does not open
Custom workflow or form does not open
- Confirm the
valuefield- For
trigger_custom_workflow, thevaluemust equal the workflow’s Slack command (under Advanced Settings). - For
open_custom_form, thevaluemust equal the custom form’s slug.
- For
- Check workflow state
Ensure the targeted workflow is enabled and not restricted by conditions that prevent it from running in this context. - Review logs or run history
If the workflow runs but does not behave as expected, inspect workflow logs for validation errors or unmet conditions.
Threading does not behave as expected
Threading does not behave as expected
- Ensure “Select a Task” points to the correct parent
If the wrong parent action is selected, messages may thread under an unexpected Rootly message or appear as new root messages. - Check “Update Parent Message” vs. “Reply in Thread”
If you set “Update Parent Message”, no new thread reply will appear; the original message will be replaced. - Review “Broadcast Thread Reply to Channel”
If a reply appears both in thread and as a new root message, this option is enabled; disable it if you only want threaded responses.
Workflow did not run or message did not send
Workflow did not run or message did not send
- Verify trigger conditions
Check that the workflow’s trigger and conditions (severity, type, environment, status, etc.) match the incident state when you expected it to fire. - Inspect workflow run history
Look for failed runs or validation errors related to Slack fields (for example, missing channels, invalid JSON, or failing Liquid). - Test with a simplified version
Temporarily simplify the workflow to a minimal “Send Slack Blocks” step with a static Block Kit payload to confirm that the basic action works, then reintroduce complexity incrementally.