Static Documentation

Alert Shelving

Version latest · Updated 2026-09-12
Interactive docs View on GitHub

Alert shelving#

Shelving temporarily removes one existing AlertGroup from the responder attention cycle without changing the technical truth of the alert.

A shelved AlertGroup remains firing or acknowledged. IncidentRelay continues ingesting child alerts, recording events, correlating signals and calculating service/business impact, but pauses active notification work until the shelf ends.

Shelve versus other controls#

ControlMeaning
AcknowledgeA responder has taken ownership of the alert.
ShelvePause attention for this one existing AlertGroup and return to it later.
SilenceSuppress alerts matching a rule/matcher, including other matching groups.
MaintenancePlanned, scoped suppression for services/teams during maintenance.
ResolveThe technical problem is no longer active.

Shelving is intentionally not a new AlertGroup status.

What is paused#

While a shelf is active IncidentRelay suppresses:

  • initial/group notifications;
  • queued alert updates;
  • reminders;
  • escalation deliveries;
  • pending user notification deliveries for those lifecycle events.

Incident ingestion and technical state continue normally.

What continues#

Shelving does not stop:

  • new child-alert ingestion;
  • source status updates;
  • event history;
  • correlation;
  • service and business impact calculation;
  • source-driven or manual resolution.

If the AlertGroup resolves while shelved, the shelf is closed and no later expiry reactivates it.

Web UI#

Open Alert Details and choose Shelve. Select a duration (30 minutes, 1, 2, 4, 8 or 24 hours) and optionally enter a reason.

Use Unshelve to return early. The Alerts page also provides Shelved only filtering.

Notification actions#

Interactive notifications expose the same AlertGroup action:

  • Telegram: Shelve 1h / Unshelve;
  • Slack Bot API: Shelve 1h / Unshelve;
  • Mattermost Bot API: Shelve 1h / Unshelve;
  • Browser Push: one-click Shelve 1h; the confirmation notification provides Unshelve and Resolve for the active shelf.

External actions require a linked IncidentRelay user and normal responder permissions for the AlertGroup team.

Expiry and resume behavior#

When a shelf expires or is manually removed:

  • if the group is still firing, IncidentRelay queues one current-state notification and restarts escalation from the unshelve time;
  • if the group is acknowledged, it stays acknowledged and no firing escalation is restarted;
  • if the group is already resolved, nothing is reactivated.

API#

POST /api/alerts/{alert_group_id}/shelve
Content-Type: application/json
{
  "duration_seconds": 3600,
  "reason": "Waiting for deployment"
}

To end a shelf:

POST /api/alerts/{alert_group_id}/unshelve

List only currently shelved groups with:

GET /api/alerts?shelved=1

The serialized AlertGroup keeps its normal status and adds shelved plus the current shelve object.

Scheduler settings#

[alerts]
shelve_lifecycle_check_interval_seconds = 30
shelve_lifecycle_batch_size = 100

The scheduler expires due shelves in bounded batches. Run the IncidentRelay scheduler in production installations that use timed shelving.

Audit and timeline#

Shelve, unshelve and automatic expiry create AlertGroup events and audit records. The source records whether the action came from the UI, Telegram, Slack, Mattermost, Browser Push or the scheduler.