For the complete documentation index, see llms.txt. This page is also available as Markdown.

PagerDuty Integration Guide

Send incident alerts through webhooks.

Configure PagerDuty to send webhook notifications to Harness AI SRE when incidents are created, updated, or resolved.

Before you begin

  • Harness webhook endpoint: Create a PagerDuty webhook in Harness AI SRE using the PagerDuty webhook template.

  • PagerDuty permissions: Admin or Account Owner role (for V3 webhooks) or Service permissions (for extensions).

  • Webhook URL: Copy the webhook URL from your Harness webhook configuration.

  • PagerDuty V3 webhooks documentation: Go to PagerDuty V3 Webhooks Overview to understand V3 webhook capabilities and event types.

  • Webhook extensions documentation: Go to PagerDuty Webhooks for legacy webhook extension setup.


Choose webhook type

PagerDuty offers two webhook mechanisms:

Type
Scope
Use Case
Flexibility

V3 Webhooks (Recommended)

Account, team, or service

Enterprise-wide incident synchronization

High (supports filtering, custom headers)

Webhook Extensions (Legacy)

Service-level

Simple service-specific integration

Limited

Go to Configure V3 webhooks to use the recommended approach.

Go to Configure webhook extensions to use the legacy method.


Configure V3 webhooks

V3 webhooks are the recommended approach for modern PagerDuty integrations.

Create a V3 webhook

Start a new V3 webhook in PagerDuty:

  1. In PagerDuty, navigate to Integrations, then select Generic Webhooks (v3)

  2. Click New Webhook

Configure webhook settings

Configure these fields:

  • Webhook URL: Your Harness webhook URL

  • Scope Type: Select the scope

    • Account: All incidents across the account

    • Team: Incidents for specific teams

    • Service: Incidents for specific services

  • Description: Harness AI SRE Integration

Configure custom headers

Add custom headers if your Harness webhook requires authentication:

Select event subscriptions

Choose which incident events trigger the webhook:

Select all event types:

  • incident.triggered

  • incident.acknowledged

  • incident.escalated

  • incident.resolved

  • incident.reassigned

  • incident.annotated

  • incident.priority_updated

  • incident.reopened

  • incident.delegated

  • incident.unacknowledged

  • incident.responder.added

  • incident.responder.replied

  • incident.status_update_published

Select only high-priority events:

  • incident.triggered

  • incident.escalated

  • incident.resolved

Track incident lifecycle:

  • incident.triggered

  • incident.acknowledged

  • incident.resolved

Configure event filters

Add filters to control when the webhook fires:

  • Service: Select specific services or "All"

  • Urgency: High, low, or both

  • Priority: Filter by incident priority (P1-P5)

Save the webhook

Click Save to create the V3 webhook.


Configure webhook extensions (legacy)

Webhook extensions are simpler but less flexible than V3 webhooks.

Add webhook extension to service

Add a generic webhook integration to the service:

  1. Navigate to Services, then select your service

  2. Select the Integrations tab

  3. Click Add Integration

  4. Select Generic Webhook

Configure the extension

Set the extension name, URL, and description:

  • Name: Harness AI SRE

  • URL: Your Harness webhook URL

  • Description: Send incidents to Harness AI SRE

Save the extension

Click Add Integration to save.


Configure field mapping in Harness

In your Harness webhook configuration, map the PagerDuty payload fields to alert properties.

PagerDuty V3 webhook payload structure

V3 webhooks send a standardized payload:

Map basic fields

Use Mustache templates for simple mapping:

Advanced field mapping with CEL

Use CEL for conditional logic and nested field access:


Test the integration

Test V3 webhook

Send a test event from the V3 webhook:

  1. In PagerDuty, go to Integrations, then select Generic Webhooks (v3)

  2. Find your webhook and click Test Webhook

  3. Select a test scenario

  4. Click Send Test

Test webhook extension

Trigger a test incident on the integrated service:

  1. Create a test incident in the integrated service

  2. Verify the webhook fires (check service integration logs)

Verify in Harness

Confirm the incident arrived and mapped correctly:

  1. Navigate to Alerts in Harness AI SRE

  2. Check that the test alert appears

  3. Verify field mapping:

    • Alert title matches incident title

    • Severity is mapped correctly

    • Tags include incident metadata

    • Link navigates to PagerDuty incident


Available PagerDuty event types

V3 webhooks support these incident event types:

Event Type
Description
When to Use

incident.triggered

New incident created

Initial alert processing and investigation

incident.acknowledged

Incident acknowledged by responder

Update alert status, notify team

incident.escalated

Incident escalated to next level

Increase priority, involve specialists

incident.resolved

Incident marked as resolved

Close alert, trigger post-incident analysis

incident.reassigned

Incident reassigned to different responder

Update assignee, transfer context

incident.annotated

Note added to incident

Process additional context

incident.priority_updated

Incident priority changed

Adjust alert severity

incident.reopened

Resolved incident reopened

Reopen alert, resume investigation

incident.delegated

Incident delegated to another escalation policy

Update ownership, notify new team

incident.unacknowledged

Incident automatically unacknowledged after timeout

Re-trigger alert notification

incident.responder.added

Responder added to incident

Update assignee list, notify responder

incident.responder.replied

Responder replied to a responder request

Log responder response

incident.status_update_published

Status update posted to incident

Sync status notes to alert


Advanced configuration

Route by event type

Create separate Harness webhooks for different incident events:

PagerDuty webhook 1:

  • Event types: incident.triggered

  • Harness webhook: wh_new_incidents

Harness field mapping:

PagerDuty webhook 2:

  • Event types: incident.resolved

  • Harness webhook: wh_resolutions

Harness field mapping:

Filter by service

Use CEL to filter incidents from specific services:

Filter by urgency

Process only high-urgency incidents:

Enrich with custom fields

Add custom context to help Harness AI agent investigation:


Troubleshooting

PagerDuty webhook is not receiving events for Harness AI SRE

Verify the webhook subscription includes the event types you need, check that the webhook scope covers the services you want to monitor, review the PagerDuty Webhook Logs, and ensure incidents are being created in the scoped services.

PagerDuty webhook payload fields are null or missing in Harness AI SRE

PagerDuty payload structure varies by event type. Use the CEL has() function to check whether fields exist before accessing them, check the PagerDuty webhook test payload for actual values, and note that webhook extension payloads differ from V3.

PagerDuty webhook has a high failure rate to Harness AI SRE

Check the Harness webhook logs for error messages, verify the field mapping CEL expressions are syntactically valid, test CEL expressions in the Harness CEL playground, ensure the Harness webhook is enabled, and review the PagerDuty retry logs.

PagerDuty is creating duplicate alerts in Harness AI SRE

Use Harness alert routing rules to deduplicate by the incident_id tag, filter in CEL to process only specific event types, and create separate Harness webhooks for different event types.


Example: complete integration

This example shows a production-ready PagerDuty-to-Harness integration for incident synchronization.

PagerDuty V3 webhook configuration

Configure the V3 webhook with these settings:

  • Scope: Account (all services)

  • Event types: incident.triggered, incident.escalated, incident.resolved

  • Filters:

    • Urgency: High only

    • Services: All

Map fields in the Harness webhook

CEL helper for assignee


Next steps


PagerDuty official documentation

Last updated

Was this helpful?