PagerDuty Webhooks
All available PagerDuty webhook events
The PagerDuty plugin handles incoming webhook events from PagerDuty. Webhooks are identified by the x-pagerduty-signature header.
New to Corsair? Learn about webhooks, hooks, and multi-tenancy.
Full Implementation: See the PagerDuty plugin source code.
Setup
import { processWebhook } from "corsair";
import { corsair } from "@/server/corsair";
export async function POST(request: Request) {
const headers = Object.fromEntries(request.headers);
const body = await request.json();
const result = await processWebhook(corsair, headers, body);
return result.response;
}Configure your webhook secret:
pagerduty({
webhookSecret: process.env.PAGERDUTY_WEBHOOK_SECRET,
})Available Webhooks
triggered
incidents.triggered
Event Type: Incident Triggered
Fires when a new incident is created (triggered).
When it fires:
- A new alert triggers a new incident
- An incident is manually created
Payload:
{
event: {
id: "event-id",
event_type: "incident.triggered",
occurred_at: "2024-01-01T00:00:00Z",
data: {
id: "INC123",
title: "Production database is down",
status: "triggered",
urgency: "high",
service: { id: "SERVICE123", name: "Production DB" },
assignees: [{ id: "USER123" }],
},
},
}Example Usage:
pagerduty({
webhookHooks: {
incidents: {
triggered: {
after: async (ctx, result) => {
await inngest.send({
name: "pagerduty/incident-triggered",
data: {
tenantId: ctx.tenantId,
incidentId: result.data.event?.data?.id,
title: result.data.event?.data?.title,
urgency: result.data.event?.data?.urgency,
},
});
},
},
},
},
})Key Fields:
| Field | Type | Description |
|---|---|---|
event.data.id | string | Incident ID |
event.data.title | string | Incident title |
event.data.status | string | Current status |
event.data.urgency | string | Urgency level |
event.data.service | object | Affected service |
acknowledged
incidents.acknowledged
Event Type: Incident Acknowledged
Fires when someone acknowledges an incident.
When it fires:
- A responder acknowledges the incident
- An auto-acknowledgment rule fires
Payload:
{
event: {
event_type: "incident.acknowledged",
data: {
id: "INC123",
status: "acknowledged",
acknowledged_by: [{ id: "USER123" }],
},
},
}Example Usage:
pagerduty({
webhookHooks: {
incidents: {
acknowledged: {
after: async (ctx, result) => {
await inngest.send({
name: "pagerduty/incident-acknowledged",
data: {
tenantId: ctx.tenantId,
incidentId: result.data.event?.data?.id,
},
});
},
},
},
},
})Key Fields:
| Field | Type | Description |
|---|---|---|
event.data.acknowledged_by | array | Users who acknowledged |
resolved
incidents.resolved
Event Type: Incident Resolved
Fires when an incident is resolved.
When it fires:
- A responder resolves the incident
- Auto-resolution fires
Payload:
{
event: {
event_type: "incident.resolved",
data: {
id: "INC123",
status: "resolved",
resolve_reason: "Fixed by reverting deploy",
},
},
}Key Fields:
| Field | Type | Description |
|---|---|---|
event.data.resolve_reason | string | Why the incident was resolved |
assigned
incidents.assigned
Event Type: Incident Assigned
Fires when an incident is assigned to a user or escalation policy.
When it fires:
- Manual reassignment
- Escalation policy triggers
Payload:
{
event: {
event_type: "incident.delegated",
data: {
id: "INC123",
assignees: [{ id: "USER456", name: "On-call Engineer" }],
},
},
}Key Fields:
| Field | Type | Description |
|---|---|---|
event.data.assignees | array | New assignees |