Slack

Slack is a messaging and collaboration platform that makes it easy to communicate with your team and work together efficiently on projects.

Integrating Cortex with Slack allows you to:

  • Quickly find the relevant Slack channel to communicate with the right team, allowing for easier collaboration on projects and faster communication during an incident

  • Receive notifications directly in Slack for Scorecard changes, upcoming Initiatives, weekly summaries of entity performance, and more

  • If you use the On-call Assistant, receive notifications when an incident is triggered

  • Interact with the Cortex Slack Bot to query entity metadata and Scorecard scores

  • Create Scorecards that enforce standards such as having Slack channels set for projects

How to configure Slack with Cortex

Prerequisites

To configure this integration:

  • Your Cortex user must have the Configure integrations permission

  • You must be an administrator in your Slack account

  • The Slack account must not be linked to another Cortex tenant

Step 1: Configure the integration in Cortex

  1. In Cortex, navigate to the Slack settings page:

    1. In Cortex, click your avatar in the lower left corner, then click Settings.

    2. Under "Integrations", click Slack.

  2. Click Add configuration.

  3. In the side panel, click Add to Slack. A pop-up window will appear.

  4. In the pop-up window that appears, sign in to your Slack workspace.

    • After signing in, a permission page will load in the pop-up window.

  5. On the permission page, click Allow.

    In the Slack permission page, click Allow.

After signing in to Slack and granting permission for Cortex to access the Slack workspace, you are redirected to the Slack integration settings page in Cortex. In the upper right corner of the page, click Test configuration to ensure Slack was configured properly.

Step 2: Configure Slack app settings

On the Slack settings page, you can configure additional options:

  • Require Cortex account to use Cortex's Slack app: Enable this setting if you want Cortex's Slack app to only work for users who have Cortex accounts.

  • Slack notifications: You can configure notifications to be sent via Slack for your organization. Click Notification settings to go directly to the notification configuration page for your workspace.

  • Identity mappings: You can map email addresses from your Slack workspace to email addresses of team members in Cortex, making sure the integration works as expected for users. Click Identity mappings to go directly to the Identity mapping configuration page for your workspace.

You can configure additional settings for Slack after setting up the integration.

Using the Slack integration

Viewing Slack information across Cortex

Slack channels associated with teams or entities will appear in several places across Cortex:

  • Entity details page: Slack channels will appear at the top of an entity's overview page in a Slack channels block, and in the "Owners" page in the entity's sidebar. You can click any channel name to go directly to that channel in Slack.

    Slack channels appear in the top of an entity details page.
  • You can write CQL queries and Scorecard rules based on Slack channels. Learn more under Scorecards and CQL.

Managing Slack notifications

After configuring the Slack integration, you can choose whether to allow Slack notifications for your workspace.

In Cortex under Settings > Notifications, an admin or a user with the Configure workspace notification settings permission can enable or disable the option to receive notifications via Slack for each type of notification. Users can also adjust their personal notification settings to control which notifications they receive via Slack.

Team, user, and entity Slack notifications

Notifications are user-based, team-based, or entity-based. DMs and channel notifications are sent from the Cortex Slack Bot.

  • User-based notifications are sent to users via a Slack DM.

  • Team-based notifications are sent to the Slack channel associated with a team.

  • Entity-based notifications are sent to the Slack channel associated with an entity.

Note that notifications can be sent to private Slack channels, but the Cortex Slack Bot must be a member of the channel in order for the notification to be delivered to the channel.

Learn more about notifications in the Notifications docs.

Using the Cortex Slack bot

After configuring the Slack integration, you can use commands to interact with the Cortex Bot in your Slack workspace. The Cortex Bot also powers notifications that are sent via Slack.

The Cortex Bot is a Slack app called "Cortex."

Cortex Bot notifications

The Cortex Bot sends you notifications based on which notifications are configured for your workspace (and based on your personal notification settings).

In addition, the Cortex bot will send based and team-based weekly reports. The weekly report for users summarizes how their entities are tracking against Scorecards and Initiatives; the report for teams delivers the same summary for entities owned by that team.

Add the Cortex Slack Bot to a private channel

To ensure you receive notifications to a private channel, make sure you have added it to that channel:

  1. Open the Slack channel where you want to add the bot.

  2. Type and enter @Cortex.

  3. Slack will prompt you to take an action. Click Add them.

    When Slack prompts you to add the Cortex bot, click "Add them."

Cortex Bot Commands

Using the below commands in Slack, you can quickly query entity metadata and Scorecard scores. The <tag> refers to the entity tag.

Command

Result

/cortex dependencies <tag>

List all incoming and outgoing first-level dependencies

/cortex deploys <tag>

List recent deploys

/cortex docs <tag>

/cortex domain <tag>

List domain information, such as owners, on-call, links, and timeline events

/cortex entity <tag>

List information for any entity, combining the behavior of service, team, domain and resource

/cortex help <tag>

Display the full list of commands

/cortex links <tag>

List all links

/cortex links [type] <tag>

List all links of a type parameter, such as metrics or openapi

/cortex logs <tag>

List all logs links

/cortex oncall <tag>

Find current on-call info

/cortex owners <tag>

List all owners and their email addresses

/cortex resource <tag>

List resource information, such as owners, on-call, links, and timeline events

/cortex runbooks <tag>

List all runbook links

/cortex scores <tag>

List all Scorecard scores

/cortex search <tag>

Query for entities using Lucene queries

/cortex sentry <tag>

List recent Sentry issues

/cortex service <tag>

List service information, such as owners, on-call, links, and timeline events

/cortex team <tag>

List team information, such as owned entities, links, and timeline events

/cortex timeline <tag>

List recent timeline events

Using AI assistant in Slack

The AI assistant is in private beta. Please contact your Cortex Customer Success Manager if you are interested in participating in the public beta.

As with all Large Language Models (LLM), the AI Assistant may not provide accurate responses. Please reach out to Cortex Customer Engineering if you encounter any issues.

The Cortex AI assistant is a conversational interface that helps you navigate Cortex. You can ask the AI assistant questions such as "Which entities do I own?"

Use it with Slack in the following ways:

  • In a public channel: Tag Cortex (type @Cortex) and ask a question.

  • In a DM: Message the Cortex app directly and ask a question.

How to connect Cortex entities to Slack channels

In order to use this integration's functionality, your Slack channels need to be associated with entities in Cortex. You can connect Slack channels to teams and other entities in an entity descriptor when following a GitOps approach, or you can connect them in the Cortex UI.

Without configuring the Slack integration, you can also add a Slack channel as an external documentation link on an entity.

Editing the entity descriptor

You can define Slack channels by name or ID, and enable or disable notifications to the channel, in an entity descriptor for any entity type. Defining a Slack channel will enable direct access to the channel from the entity's page in Cortex.

When to define by name vs. channel ID

When you define by name, it is more easily recognizable to users when viewing the entity's YAML. However, if a Slack channel's name is likely to change, it's better to define by ID as it won't break the entity's Slack link in Cortex.

Defining by channel IDs

x-cortex-slack:
  channels:
  - id: ABCDEF123
    notificationsEnabled: true
    description: This is a description for this Slack channel
Field
Description
Required

id

Slack channel ID

notificationsEnabled

Boolean to enable/disable notifications in Slack

description

Description for the Slack channel

Defining by channel names

x-cortex-slack:
  channels:
  - name: team-engineering
    notificationsEnabled: true
    description: A description for this Slack channel.
Field
Description
Required

name

Slack channel name

notificationsEnabled

Boolean to enable/disable notifications in Slack

description

Description for the Slack channel

Connect channels to entities without configuring the Slack integration

You can connect Slack channels to entities without configuring the Slack integration. Note that this method will only provide a link to Slack from the entity; it will not include any features of the Slack integration, such as ownership tracking, notifications, Slack Bot, and the ability to use CQL to query Slack data.

Use Slack's redirect link format, https://slack.com/app_redirect?channel={channel_name}, to add the link to an entity YAML, under the x-cortex-slack block. Make sure to replace channel_name with your Slack channel's name.

x-cortex-slack:
  channels:
  - name: https://slack.com/app_redirect?channel=channel_name

Identity mappings

Cortex maps email addresses in your organization's Slack workspace to email addresses that belong to team members, so you never need to define email addresses in the entity descriptor.

You can confirm that users' Slack accounts are connected from the Onboarding management tool or from the identity mappings section in settings.

Scorecards and CQL

With the Slack integration, you can create Scorecard rules and write CQL queries based on Slack channels.

See more examples in the CQL Explorer in Cortex.

Check if Slack channel is set

Checks if an entity has a registered Slack channel in its entity descriptor.

Definition: slack (==/!=) null

Example

For a Scorecard focused on onboarding entities, you can define a rule to make sure each entity has a registered Slack channel:

slack != null

Defining a rule to make sure a Slack channel is set is a good way to make sure that users can reach out to entity owners for more information or if an issue arises.

Number of Slack channels

Counts the number of Slack channels registered for a given entity.

Definition: slack.channels().length

Example

Similar to slack != null, you can use this expression to write a rule checking that entities are linked to a Slack channnel:

slack.channels().length > 0

This rule makes sure that there is at least one Slack channel set.

Total number of members across Slack channel

Counts the total number of members across all registered Slack channels.

Definition: slack.numOfMembers()

Example

You can use this expression in the Query Builder to find entities linked to empty Slack channels:

slack.numOfMembers() < 1

If an entity is linked to an empty Slack channel, it might indicate a gap in your notification process.

Background sync

Cortex conducts a background sync of Slack identities every day at 10 a.m. UTC.

FAQs and troubleshooting

Can users access information via the Slack Bot if they haven't logged in to our Cortex instance?

Yes, this is possible, depending on the settings you configured for the Slack Bot in your workspace. To allow users to use the Slack Bot without logging in to Cortex, navigate to the Slack integration settings page in Cortex and disable the toggle next to Require Cortex account to use Cortex's Slack app.

Can I disable some of the notifications I receive in Slack?

You can adjust your personal notification settings, but note that some types of notifications cannot be disabled.

Is the Slack integration required to add Slack channels to a team?

No, the Slack integration is not required to add channels to Cortex teams. You can manually add any Slack channels without setting up the Slack integration via the entity descriptor or via the API for a team’s metadata.

Privacy policy

Cortex retains basic Slack metadata like user IDs for the period necessary to fulfill the purposes outlined in our Privacy Policy unless a longer retention period is required or permitted by law, or where the Customer Agreement requires or permits specific retention or deletion periods.

To request to access, transfer, or delete data, you can reach out to the Cortex support team.

Still need help?

The following options are available to get assistance from the Cortex Customer Engineering team:

  • Email: [email protected], or open a support ticket in the in app Resource Center

  • Chat: Available in the Resource Center

  • Slack: Users with a connected Slack channel will have a workflow added to their account. From here, you can either @CortexTechnicalSupport or add a :ticket: reaction to a question in Slack, and the team will respond directly.

Don’t have a Slack channel? Talk with your Customer Success Manager.

Last updated

Was this helpful?