Grafana IRM integration for Slack
The Grafana IRM integration for Slack brings your incident response and on-call workflows directly into your Slack workspace, helping your team focus on alert resolution with less friction.
Our integration for Slack is available on all plans, including our free tier. More information on pricing can be found on our pricing page.
Key features and benefits
Integrating your Slack workspace allows users and teams to be notified of alerts directly in Slack with automated alert escalation steps and user notification preferences. Users can take a number of alert actions directly from Slack, including acknowledging and resolving alert groups, adding resolution notes, and more.
Refer to the following sections to learn more:
- Configure Escalation Chains with Slack notifications
- Configure user notification rules with Slack mentions
- Configure on-call shift notifications
When it comes to incidents, users can declare, collaborate on, and manage incident-worthy events without leaving Slack. They can also automatically create incident-specific channels, track the timeline of events, interact with incidents via Slash commands, and more.
Refer to the following sections to learn more:
- Create incident Slack channels
- Configure incident announcements
- Interact with incidents from Slack via Slash commands
Before you begin
To install the Grafana IRM app for Slack, you must:
- Have an Admin role in Grafana IRM
- Be a Slack workspace Admin or Owner
- Allow Grafana IRM to access your Slack workspace
After the IRM app has been added to your Slack workspace, Admins and Editors can configure escalation chains and other notifications to route to designated Slack channels.
Note
It is possible to connect multiple IRM stacks to one Slack workspace. It is not possible to connect multiple Slack workspaces into a single IRM stack.
In order to use the slash command /grafana
, you must be an IRM user with a linked Slack account and necessary permissions.
To learn more, refer to Connect your Slack user to Grafana IRM.
Install the Grafana IRM integration for Slack
The Grafana IRM integration for Slack is installed and managed from the unified IRM app in Grafana Cloud. Installing the integration enables Slack notifications and incident collaboration features across all IRM workflows.
Follow these steps to install the integration:
- In Grafana Cloud, open the main menu and navigate to Alerts & IRM > IRM > Integrations.
- Click the Apps tab and select the Slack.
- Click Install integration.
- After being redirected to the Slack connection page, verify the Slack workspace is correct or Add another workspace.
- If needed, provide your Slack workspace URL and sign in with your Slack credentials.
- Follow the Slack prompts to review permissions and specify a default channel.
- Click Allow to give Grafana IRM permission to access your Slack workspace.
If you already have the legacy OnCall or Incident integrations for Slack installed, use the Migration guide to migrate your existing Slack configurations.
For more information about the required permissions, refer to the Permissions section.
Connect your Slack profile to Grafana IRM
For users to gain full access to Grafana IRM functionality in Slack, follow these steps to map your Grafana IRM user account to your Slack user account:
- In Grafana Cloud, click your avatar and go to your Profile.
- Select the IRM tab.
- In the Slack connection section, click Open Slack connection page.
- Authorize your Slack account and follow the prompts to verify and link your Slack account.
After linking your Slack account, you can start using Grafana IRM in Slack in accordance with the role and permissions assigned to you in Grafana. The actions you can take in Slack depend on your permissions in Grafana IRM.
For more information on roles and permissions, refer to the Grafana Cloud user roles and permissions documentation.
Disconnect Slack profile from IRM
If you need to unlink your Slack profile from a Grafana Cloud stack, you can do so from the same tab in your Grafana user profile. Grafana Cloud Admins can also manage linked Slack profile on behalf of users in their organization. For more information, refer to Manage linked Slack profiles.
Configure channels and notifications
Note
Times shown in messages from the Grafana IRM App are displayed in the viewer’s local timezone.
Grafana IRM provides flexible configuration options to tailor Slack notifications to your team’s needs. This section outlines how to set up escalation chains, user notifications, on-call notifications, and incident channel settings within Slack.
Configure Escalation Chains with Slack notifications
After setting up your integration, you can configure escalation chains to send notifications via Slack for firing alerts in Grafana IRM.
There are two Slack notification methods that can be integrated into escalation chains:
- Notify all members of a Slack channel
- Notify a specific Slack user group
To configure these in your escalation chains:
- In Grafana Cloud, navigate to Alerts & IRM > IRM > Escalation chains.
- Select an existing escalation chain or create a new one by clicking + Add escalation chain.
- Use the dropdown under Add escalation step to choose and configure your Slack notification preferences.
Configure user notification rules with Slack mentions
Before configuring Slack notifications, ensure you have connected your Slack account as described in Connect notification channels.
To configure Slack mentions for your notification rules:
- Go to your Grafana Cloud Profile.
- Select the IRM tab.
- Click Notification rules.
- Click + Add notification rule.
- Choose Slack mentions from the notification channel dropdown.
- Configure the remaining notification rule settings as needed.
If you don’t see Slack as an available notification channel in your user profile, it may be disabled by your organization administrator. For more information about notification channel visibility and management, refer to the Notification channel documentation.
Configure on-call shift notifications
The IRM integration for Slack also supports automated notifications for on-call shifts, helping teams stay informed of their duties. It can also automatically update Slack user group handles to reflect current on-call assignments, ensuring that @mentions and notifications always reach the right people.
Admins can set up these notifications either in Grafana IRM or directly in Slack.
Configure on-call shift notifications in Grafana IRM
- In Grafana Cloud, navigate to Alerts & IRM > IRM > Schedules.
- In the row for the schedule you want to configure, click the gear icon to open Schedule settings.
- Expand the Notifications settings section.
- Configure the notification behavior for future shifts according to your team’s preferences.
- Click Update Schedule to save your changes.
Configure on-call shift notifications directly in Slack
- When an on-call shift notification is sent to a person or channel, click the gear icon to open Notifications preferences.
- Configure the notification behavior for future shifts according to your team’s preferences.
- Click Close.
Configure Incident Slack channels
Configure the following incident-specific Slack channel settings to suit your organization’s process and preferences.
Incident channel creation
Customize when incident Slack channels are created to align with your organization’s workflows.
To configure incident channel creation:
- In Grafana Cloud, navigate to IRM > Integrations > Apps and select Slack.
- Specify the following settings:
- Create Slack channel: Determine when to automatically create a Slack channel for an incident.
- Post updates to channel: Choose whether to automatically post incident updates to the created Slack channel.
- Invite users: Specify if users with an active role should be automatically invited to the incident channel.
- For private incidents, specify a default private Slack channel to post updates about any private incidents that have been created.
Note
Be sure to restrict access to this private Slack channel. Users granted access to this channel will potentially have the ability to access any of the private incidents declared within your organization. To learn more about private incidents and their access model, refer to the Private incidents documentation.
Automatic channel archive
To maintain good Slack workspace hygiene, you can automatically archive resolved incident channels after a configurable number of days.
Consider a timeframe of 30-60 days to allow time for PIR, follow-ups, and stakeholder visibility.
To configure automatic channel archive:
- In Grafana Cloud, navigate to IRM > Integrations > Apps and select Slack.
- Set the desired number of days after incident resolution for channels to automatically archive.
- Click Save settings.
Channel name template
You can customize incident Slack channel names by configuring the channel name template. This allows you to standardize channel naming conventions across your organization.
By default, the template is:
{{ prefix }}-{{ date }}-{{ title }}
This creates channel names like incident-2024-01-12-database-outage
.
Available template variables:
{{ prefix }}
- The incident prefix, configurable in incident settings{{ title }}
- The incident title, automatically slugified for Slack compatibility{{ date }}
- The incident creation date inYYYY-MM-DD
format{{ id }}
- The unique incident ID
To configure the channel name template:
- In Grafana Cloud, navigate to IRM > Integrations > Apps and select Slack.
- In the Channel name template field, enter your desired template using the available variables.
- Click Save settings.
Updating the channel name template only affects incidents created after the change. Existing incident channels are not renamed retroactively.
Example templates:
{{ prefix }}-{{ date }}-{{ title }}
producesincident-2024-01-15-database-outage
{{ title }}-{{ id }}
producesdatabase-outage-inc-123456
ops-{{ title }}
producesops-database-outage
Note
Channel names must comply with Slack’s channel naming requirements: lowercase only, no spaces, limited special characters, and a maximum length of 80 characters. Grafana IRM automatically truncates and sanitizes generated names to meet these requirements. If a name conflict occurs, IRM appends a suffix such as -1, -2, and so on until an available name is found.
Customize Slack channel prefixes
You can define custom channel prefixes to organize and identify incident channels more effectively.
To customize Slack channel prefixes:
- In Grafana Cloud, navigate to Alerts & IRM > IRM > Settings.
- Select the Incidents tab and find the Prefixes section.
- Click + Add Prefix to create a new prefix.
- Enter a Name and Description for the prefix.
- Edit or delete existing prefixes as needed.
- When declaring a new incident, select the desired prefix from the dropdown menu.
For more information, refer to the Customize incident channel prefixes documentation.
Configure Incident announcements
Incident announcements help keep your team aware and informed during critical events. Configure these announcements to ensure that stakeholders are kept up-to-date in Slack during an incident.
To configure incident announcements:
- In Grafana Cloud, navigate to IRM > Integrations > Apps and select Slack.
- Select the Slack channel where you want to send notifications. You can either choose from the dropdown menu or manually add your Channel ID. The Channel ID can be found in the About tab of the Slack channel.
- Define the incident-specific fields:
- Incident type: Choose whether the incident is internal or private.
- Include incidents: Specify which types of incidents to announce—options include all incidents, drills, or non-drills.
- Apply filters to your incident announcements to tailor the notifications to specific channels:
- Incident filter: For example, you might filter by label, such as
label: 'squad:datasources'
. By default, all conditions are applied usingAND
logic. To useOR
logic, you must use parentheses. For example:or(label:"squad:team-a" label:"team-b") status:active
filters for(team-a OR team-b) AND status:active
. Refer to the Incident query syntax documentation for full syntax availability.
- Incident filter: For example, you might filter by label, such as
Use Slack reactions
You can use emoji reactions to add context or updates to an incident without leaving Slack.
The following reactions are supported:
Emoji | Description |
---|---|
🤖 (:robot: ) | Adds the message to the incident timeline |
💡 (:bulb: ) | Creates a task from the message content |
📢 (:loudspeaker: ) | Adds the message as a status update |
Additional details:
- Removing the 🤖 (
:robot:
) reaction deletes any attached files from Grafana Cloud storage. - Deleting an item from the timeline within the IRM web app also removes the associated file from Grafana Cloud storage.
- Files in Grafana IRM are limited to 100MB. Files too large to persist are still accessible via a link to the source file in Slack.
- You cannot add new status updates to incidents that have been resolved.
Available commands for Slack
Note
The
/escalate
and/incident
commands are no longer available. Use/grafana
to learn more.
The /grafana
commands for Slack allow users and teams to respond to alert groups and collaborate on incidents directly from Slack.
These commands can be used in any Slack channel.
Command | Description | Usage Examples |
---|---|---|
/grafana | List of all /grafana commands | /grafana |
/grafana stacks | List all available stacks | /grafana stacks |
/grafana set-stack <stack> | Set your default stack | /grafana set-stack mystackhandle |
/grafana escalate <user> | Page a user <user> or a team | /grafana escalate @bob |
/grafana incident help | View a list of all available incident commands | /grafana incident help |
Incident-related commands
Incidents management
Manage incidents, can be used in any channel.
Command | Description | Usage Examples |
---|---|---|
/grafana incident new <title> | Create new incident with title <title> | /grafana incident new "something went wrong" |
/grafana incident new <severity> <title> | Create new incident with title <title> and severity <severity> | /grafana incident new major "something went wrong" |
/grafana incident drill <title> | Create a drill incident with title <title> | /grafana incident drill "something went wrong" |
/grafana incident list | List all active incidents | /grafana incident list |
In-Channel Incident Management
Manage the current incident, can be used in the incident channel.
Command | Description | Usage Examples |
---|---|---|
/grafana incident roles | Find out who’s involved in the incident | /grafana incident roles |
/grafana incident assign <role> <user> | Assign user <user> to a role <role> | /grafana incident assign "Incident Lead" @alice |
/grafana incident unassign <role> <user> | Unassign user <user> from a role <role> | /grafana incident unassign commander @bob |
/grafana incident talk | Set up a collaboration space | /grafana incident talk |
/grafana incident rename <title> | Rename the current incident title to <title> | /grafana incident rename "New incident title" |
/grafana incident status | Get a live inline update | /grafana incident status |
/grafana incident severity <severity> | Update the incident severity to <severity> | /grafana incident severity major |
/grafana incident resolve | Resolve the incident | /grafana incident resolve |
/grafana incident resolve <summary> | Resolve incident with summary | /grafana incident resolve "Fixed database issue" |
/grafana incident update add <content> | Add a new status update with <content> | /grafana incident update add "Investigating impact" |
/grafana incident update | Get the most recent status update | /grafana incident update |
Tasks
Manage tasks for an incident, can be used in the incident channel.
Command | Description | Usage Examples |
---|---|---|
/grafana incident tasks | Create, assign and manage tasks | /grafana incident tasks |
/grafana incident tasks help | More information about tasks | /grafana incident tasks help |
/grafana incident tasks add <task> | Add a new task <task> | /grafana incident tasks add "deploy new release" |
/grafana incident tasks add <task> <user> | Add a new task <task> and assign to user <user> | /grafana incident tasks add "deploy hotfix" @bob |
/grafana incident tasks list | View current incident’s tasks | /grafana incident tasks list |
Notes
Manage notes for an incident, can be used in the incident channel.
Command | Description | Usage Examples |
---|---|---|
/grafana incident notes | Add and view incident notes | /grafana incident notes |
/grafana incident notes help | More information about notes | /grafana incident notes help |
/grafana incident notes add <note> | Add a new note <note> | /grafana incident notes add "customers notified" |
/grafana incident notes list | View current notes | /grafana incident notes list |
Permissions scope and purpose
The Grafana IRM app for Slack only requests permissions that are essential to its proper function and integration with Slack. Refer to the Slack documentation for more information on permission scopes.
By granting access to the app, you are authorizing Grafana IRM the following permissions in your Slack workspace:
Workspace and user access
Permission | Description | Purpose |
---|---|---|
team:read | View the workspace name, email domain, and icon | Used for identification and to establish an association with your workspace |
users:read | View people in a workspace | Used to find users by email and facilitate account matching between Grafana and your workspace |
users.profile:read | View profile details about people in a workspace | Used to fetch profile data, such as Slack handles and avatars |
usergroups:read | View user groups in a workspace | Required to connect on-call schedules and escalation chains to Slack user groups |
usergroups:write | Create and manage user groups | Required to automatically update Slack user group handles to reflect current on-call assignments |
Public channel access
Permission | Description | Purpose |
---|---|---|
channels:read | View basic information about public channels | Used when adding a new channel to an escalation chain and to locate and update incident-specific channels |
channels:manage | Manage public channels that Grafana IRM has been added to and create new ones | Allows the app to create new channels and invite users to these channels |
channels:history | View messages and other content in public channels that Grafana IRM has been added to | Required to retrieve message content when users react to messages with emojis and for bot message processing in incident channels |
bookmarks:read | List bookmarks | Used to access bookmarks, such as PIR documents and Google Meet links, related to incidents |
bookmarks:write | Create, edit, and remove bookmarks | Necessary for managing incident-related bookmarks, including PIR documents and Google Meet links |
files:read | View files shared in channels and conversations that Grafana IRM is a part of | Required to access file metadata and download URLs when processing file attachments (e.g., adding screenshots to IRM via emoji reactions) in incident channels |
Private channel access
Permission | Description | Purpose |
---|---|---|
groups:read | View basic information about private channels that Grafana IRM has been added to | Used to access information from private incident-specific channels |
groups:write | Manage private channels that Grafana IRM has been added to and create new ones | Required to create private incident-specific channels for private incidents |
groups:history | List messages from private incident-specific channels | Required to retrieve message content when users react to messages with emojis and for bot message processing in private channels |
Message and conversation access
Permission | Description | Purpose |
---|---|---|
chat:write | Post messages in approved channels and conversations | Allows @GrafanaIRM to post messages to Slack |
chat:write.public | Send messages to channels Grafana IRM isn’t a member of | Allows @GrafanaIRM to post messages to Slack |
reaction:read | View emoji reactions and their associated content in channels and conversations that Grafana IRM has been added to | Allows @GrafanaIRM to monitor message events for the 🤖 emoji to be included in the incident timeline |
reaction:write | Add and edit emoji reactions | Required to include messages with the 📝 emoji on resolution notes |
im:write | Start direct messages with people | Used to notify users about alerts via direct message as well as invite users who create an incident to the incident channel |
Usage limits
Grafana IRM can be rate limited by Slack when posting a high volume of messages. This typically happens during periods of frequent alert activity. For example, if updates to alert groups are rate-limited, you’ll see a message similar to the following:
Update Alert Groups in Slack, for integration xxxx, is temporarily rate-limited (due to a Slack rate-limit). Meanwhile, you can still find new Alert Groups in the Alert Groups web page.
Slack enforces rate limits per channel and per organization. When IRM hits a rate limit:
- The affected integration is blocked from posting or updating alert groups for 5 minutes
- A message is posted to Slack to notify users of the block
- During the block, IRM skips any alert group updates for that integration
Other integrations will continue posting messages until they’re also rate-limited. If another integration is blocked, it enters its own 5-minute cooldown period. Each integration is tracked and blocked independently.
After 5 minutes, the integration is unblocked and can resume posting to Slack. If it continues to exceed Slack’s limits, it will be blocked again—up to once every 5 minutes.
Impact on personal Slack notifications
Rate limits also affect personal Slack notifications:
- If an alert group can’t be posted due to rate limiting, related personal notifications in Slack are skipped.
- In some cases, even if the alert group is successfully posted, Slack may still block the personal notification due to rate limits.