For the complete documentation index, see llms.txt. This page is also available as Markdown.

Slack App

This capability is only available to BYOC deployments. Check out our pricing page for more information about subscription plans and the available deployment modes.

The Slack App Destination sends monitor notifications to selected Slack channels in your workspace via the groundcover Slack App. Unlike Slack Webhook, which targets one fixed channel per Destination, the Slack App lets you choose the target channel(s) per Notification Route rule or per monitor — using a single Destination per workspace.

The same Slack App also powers @groundcover Agent mentions — users can interact with the groundcover Agent directly from Slack.

The Slack App Destination and the Slack connector under Integrations → Connectors → Org Connectors are the same underlying resource. You can create or manage it from either page:

  • Integrations → Destinations → Slack App — convenient when you're configuring Slack alongside other Destinations like PagerDuty

  • Integrations → Connectors → Org Connectors → Slack — convenient when you're managing connectors in general

Both entry points open the same setup wizard, and changes made in one place are immediately reflected in the other.

Setting Up a Slack App

Setting up a Slack App is a one-time process that involves creating a Slack App in your workspace, providing its credentials to groundcover, and authorizing the app via OAuth. The walkthrough covers four steps:

  1. Create the Slack App from a pre-filled manifest

  2. Upload the groundcover icon to the Slack App

  3. Paste the Client ID, Client Secret, and App-Level Token into groundcover

  4. Authorize the app via OAuth

See the Slack connector guide for the full step-by-step walkthrough, the manifest, where to find each credential in Slack, and troubleshooting.

Selecting Channels for Notifications

After the Slack App is configured, you can choose the target channels at the route or monitor level:

The bot can post to any public channel in the workspace without being invited. Private channels only appear in the channel picker if the bot has been invited to them — run /invite @groundcover inside the channel to add it.

Multiple Slack Workspaces

You can add one Slack App per Slack workspace (for example, groundcover Prod and groundcover Staging). Each Slack App is bound to a single workspace and appears as a separate Destination in the channel picker, labeled by its Connector Name. See Connecting Multiple Slack Workspaces for details.

Notification Message Format

groundcover sends alert notifications to Slack using the Block Kit format. Each notification message includes:

Section
Contents

Header

Issue summary with a status emoji (e.g., rotating light for firing, checkmark for resolved)

Context fields

Status, severity, monitor name, and the value that triggered the alert

Description

The monitor's description with variable expansion

Labels

Cluster, namespace, and any other labels from the monitor's group-by or custom labels

Action buttons

Interactive buttons for quick actions (see below)

The notification payload structure is fixed and cannot be customized. If you need a custom message format, use a Generic Webhook instead.

For the full payload JSON structure and field reference, see Slack Webhook → Payload — the Slack App uses the same Block Kit structure with the addition of interactive button support.

Interactive Buttons

Unlike Slack Webhook notifications (which only include link buttons), Slack App notifications include both link buttons that open groundcover pages and action buttons that perform operations directly from Slack:

Button
Type
Action

View Issue

Link

Opens the issue detail page in groundcover with the relevant time range and filters pre-applied

View Monitor

Link

Opens the monitor configuration page in groundcover

Silence

Action

Creates a silence for this monitor directly from Slack, pre-filled with the issue's labels — no need to open the groundcover platform. Lets you quickly suppress repeat notifications during known maintenance or investigation

Investigate with Agent

Link

Opens the issue in groundcover with Agent Mode ready to investigate. This button only appears when AI features are enabled in the backend that sent the notification (see Configuring Settings)

Link buttons open the corresponding groundcover page in the browser (authentication is still required). Action buttons perform the operation without leaving Slack.

Message Lifecycle

Slack App notifications are not static — groundcover actively manages notification messages as the issue progresses.

Resolved: Original Message Updated

When a firing issue is resolved, groundcover edits the original alert message in place rather than sending a separate notification. The updated message:

  • Changes the header status emoji to indicate resolution

  • Updates the displayed status from Firing to Resolved (in the underlying payload, the status field changes from alerting to resolved — see the Payload Field Reference for all possible values)

  • Preserves all original context (monitor name, labels, description) so the full alert history is readable in one place

This keeps channels clean by avoiding a separate "resolved" message for every alert. The channel history shows a single message per issue that reflects its current state.

If a notification route is configured to send to different channels for Firing and Resolved statuses, the resolved update is sent to the Resolved channel as a new message (since the original message is in a different channel). See Notification Routes for per-status channel routing.

Renotifications

If a monitor is configured with renotification intervals and an issue remains in a firing state, groundcover sends a new message to the channel for each renotification cycle. Each renotification message:

  • Is posted as a new top-level message (not a thread reply to the original)

  • Contains the same structure as the original notification (header, context, labels, buttons)

  • Indicates that this is a renotification for a still-firing issue

This ensures that long-running issues remain visible in the channel and are not buried by newer messages.

Developer Note

The Slack App Destination is exposed via the same APIs as every other Destination — under the connected-apps path:

  • REST API: managed via /api/connected-apps/v1 (type field is slack-app)

  • Terraform: groundcover_connected_app resource with type = "slack-app"

  • Monitor YAML: referenced by its connected app ID inside notificationSettings.connectedApps and notificationSettings.connectedAppParams.<id>.channels

See Destinations → For Developers for the full developer reference, and Monitor YAML structure → notificationSettings for the channel field schema.

Last updated