---
title: PagerDuty alerts
description: Send Glowo alerts into PagerDuty's Events API v2 for real on-call rotations.
sidebar:
  icon: <svg viewBox='0 0 24 24' width='100%' height='100%' fill='currentColor' xmlns='http://www.w3.org/2000/svg'><path d='M16.965 1.18C15.085.164 13.769 0 10.683 0H3.73v14.55h6.926c2.743 0 4.8-.164 6.61-1.37 1.975-1.303 3.004-3.484 3.004-6.007 0-2.716-1.262-4.896-3.305-5.994zm-5.5 10.326h-4.21V3.113l3.977-.027c3.62-.028 5.43 1.234 5.43 4.128 0 3.113-2.248 4.292-5.197 4.292zM3.73 17.61h3.525V24H3.73Z'/></svg>
  label: PagerDuty
---

{/* Source of truth: packages/shared/src/notifications.ts —
    pagerdutyChannelSchema (routingKey). Dispatcher:
    dispatchers/pagerduty.dispatcher.ts (Events API v2). */}

If you have an on-call rotation, PagerDuty should be your critical channel.
Glowo detects the problem; PagerDuty decides who to wake, escalates when they do
not answer, and tracks the response.

## Configuration

| Field | Value |
| --- | --- |
| `routingKey` | An Events API v2 integration key |

## Getting a routing key

1. **Open the service**

    In PagerDuty, go to **Services** and pick the service Glowo alerts belong
    to — or create one.

2. **Add an integration**

    Under **Integrations**, add one and choose **Events API v2**.

3. **Copy the Integration Key**

    This is the routing key. It is a secret.

4. **Paste it into Glowo**

    Create a PagerDuty channel with the key and press **Test** — a test incident
    should appear on the service.

:::caution
Use **Events API v2**, not the older Events API v1. The v1 key format will not
work.
:::

## How incidents behave

Glowo sends a `trigger` event when a monitor goes down and a `resolve` event
when it recovers, keyed to the monitor. PagerDuty therefore closes the incident
by itself on recovery — you do not need to resolve it manually.

For that to work, the channel must be subscribed to **both** `MONITOR_DOWN`
**and** `MONITOR_UP`. Subscribing only to `MONITOR_DOWN` leaves incidents open
forever, which is the single most common misconfiguration here.

## Where escalation lives

Escalation policies, on-call schedules and rotations are configured in
PagerDuty, not in Glowo. Glowo's job is to detect and report; PagerDuty owns who
gets woken and in what order.

## Practical notes

- **One channel per PagerDuty service.** That keeps Glowo's scoping aligned
  with PagerDuty's routing.
- Send `MONITOR_DEGRADED` to Slack rather than PagerDuty unless degradation
  genuinely warrants waking someone.
