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:
Create the Slack App from a pre-filled manifest
Upload the groundcover icon to the Slack App
Paste the Client ID, Client Secret, and App-Level Token into groundcover
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:
From a notification route: see Selecting Slack App channels
From the monitor wizard: see Selecting Slack Channels in the Monitor Wizard
From a monitor YAML: see the Monitor that delivers directly to Slack channels example
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:
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:
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
statusfield changes fromalertingtoresolved— 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 isslack-app)Terraform:
groundcover_connected_appresource withtype = "slack-app"Monitor YAML: referenced by its connected app ID inside
notificationSettings.connectedAppsandnotificationSettings.connectedAppParams.<id>.channels
See Destinations → For Developers for the full developer reference, and Monitor YAML structure → notificationSettings for the channel field schema.
Last updated
