Configuring Repeated Alert Notifications with Grafana OnCall

Hi!

Currently, the repeat interval for alert notifications does not behave as expected when using Grafana OnCall. It seems that repeated alerts are grouped together instead of being sent out as new notifications.

My goal is to send repeated alert notifications every N hours through the OnCall integration. I tried modifying the groupKey in the OnCall integration template by including the current hour. While this does create new groups and sends notifications, it breaks the “resolved” status in the Slack message because the new groups don’t carry over the original alert’s resolution status.

Is it possible to achieve this through an escalation chain, or another method, to send repeated notifications every N hours while preserving group logic and ensuring the “resolved” status is correctly reflected?

For reference, Grafana Cloud is being used.

You’re correct that breaking the alert groups by modifying the groupKey causes the “resolved” status to no longer apply to the new groups. This behavior stems from how Grafana Alerting and OnCall handle alert grouping and lifecycle: if a group of alerts is resolved, any new firing alert will generate a new alert group.

With OnCall, you can configure your escalation chain to include one or several Wait steps followed by a Repeat Escalation step. This will restart the escalation chain, resending notifications in the escalation chain at defined intervals and preserving the resolution status.

However, note that the escalation chain can only be repeated a maximum of 5 times. Once the alert group resolves, notifications will cease, as the repeat logic doesn’t apply to resolved alert groups—“resolved alerts” are designed to finalize the notification and alert process.

If this limitation significantly impacts your workflow, consider raising a feature request to enhance how repeated escalations are handled in Grafana OnCall.

Alternatively, if you need a strict repeating schedule, consider using Grafana Alerting to directly route to Slack. Route the alerts to a notification policy that defines the repeat_interval and uses a Slack contact point integration.

Hope this helps!