|
1 | 1 | # PagerDuty Webhook Setup for Plural |
2 | 2 |
|
3 | | -Reference: [PagerDuty - Webhooks](https://support.pagerduty.com/main/docs/webhooks) |
| 3 | +References: |
| 4 | +- [PagerDuty - Webhooks (V3)](https://support.pagerduty.com/main/docs/webhooks) |
| 5 | +- [PagerDuty - Verifying webhook signatures](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTkz-verifying-signatures) |
4 | 6 |
|
5 | | -## 1. Create the webhook in Plural first |
| 7 | +PagerDuty is one provider here where the signing secret is generated by PagerDuty, not manually entered at creation time. |
| 8 | + |
| 9 | +Use **Generic Webhooks (v3)** or a **service-scoped V3 webhook subscription**. V1/V2 webhook extensions use a different payload format and are not supported. |
| 10 | + |
| 11 | +## 1. Create webhook in PagerDuty and copy its signing secret |
| 12 | + |
| 13 | +In your PagerDuty account (`https://<your-subdomain>.pagerduty.com/`): |
| 14 | + |
| 15 | +1. Open **Integrations** -> **Generic Webhooks (v3)** |
| 16 | + (Alternatively, open a service in **Services** -> **Service Directory**, select the **Integrations** tab, and add a webhook under **Webhooks** to scope events to that service.) |
| 17 | +2. Click **New Webhook** |
| 18 | +3. Set **Webhook URL** to a temporary placeholder (for example `https://example.com/plural-webhook-placeholder`) |
| 19 | +4. Under **Event Subscription**, select incident lifecycle events at minimum: |
| 20 | + - `triggered` |
| 21 | + - `acknowledged` |
| 22 | + - `resolved` |
| 23 | +5. Click **Add Webhook** |
| 24 | +6. In the confirmation dialog, copy the webhook signing secret immediately — PagerDuty only shows it once. If you lose it, you must regenerate the secret in PagerDuty and update Plural. |
| 25 | + |
| 26 | +## 2. Create the webhook in Plural |
6 | 27 |
|
7 | 28 | In Plural: |
8 | 29 |
|
9 | 30 | 1. Set **Type** to `Observability`. |
10 | 31 | 2. Set **Provider** to `PAGERDUTY`. |
11 | | -3. Enter a webhook **Name**. |
12 | | -4. Enter a **Signing secret**. |
| 32 | +3. Enter webhook **Name**. |
| 33 | +4. Paste the PagerDuty signing secret as Plural **Signing secret**. |
13 | 34 | 5. Click **Create new webhook**. |
14 | 35 |
|
15 | | -Copy the generated webhook URL. |
16 | | - |
17 | | -## 2. Create webhook subscription in PagerDuty |
18 | | - |
19 | | -In your PagerDuty account (`https://<your-subdomain>.pagerduty.com/`): |
20 | | - |
21 | | -1. Open webhook subscriptions (generic or service-scoped) |
22 | | -2. Create a new subscription with HTTP delivery |
23 | | -3. Set destination URL to the Plural webhook URL |
24 | | -4. Select service/team/account filter scope |
25 | | -5. Add auth header or Basic Auth using the Plural signing secret (if your PagerDuty webhook mode supports it) |
| 36 | +Copy the Plural-generated webhook URL. |
26 | 37 |
|
27 | | -## 3. Select event types |
| 38 | +## 3. Update PagerDuty webhook URL |
28 | 39 |
|
29 | | -Enable incident lifecycle events: |
| 40 | +Back in PagerDuty webhook settings: |
30 | 41 |
|
31 | | -- `incident.triggered` |
32 | | -- `incident.acknowledged` |
33 | | -- `incident.resolved` |
| 42 | +1. Select the webhook URL (or **Manage** -> **Edit**) |
| 43 | +2. Replace the placeholder URL with the Plural webhook URL |
| 44 | +3. Click **Save Changes** |
34 | 45 |
|
35 | | -Include additional incident update events only if needed. |
| 46 | +Optional: use **Send Test Event** in PagerDuty to confirm delivery before triggering a real incident. |
36 | 47 |
|
37 | 48 | ## 4. Validate |
38 | 49 |
|
39 | | -Trigger a test incident in PagerDuty and confirm in Plural: |
| 50 | +Trigger a test incident (or send a PagerDuty test event) and confirm in Plural: |
40 | 51 |
|
41 | | -- delivery accepted |
42 | | -- auth/secret verification succeeds |
43 | | -- incident state transitions are visible |
| 52 | +- request accepted |
| 53 | +- `x-pagerduty-signature` verification succeeds |
| 54 | +- incident state transitions are visible (`triggered`, `acknowledged`, `resolved`) |
0 commit comments