# PagerDuty Integration

Source: https://docs.qualflare.com/docs/integrations/pagerduty · Last updated: 2026-11-02

Connect Qualflare to PagerDuty to open incidents for new defects and failed launches, and resolve them when the defect closes or the branch passes again.

The Qualflare PagerDuty integration opens a PagerDuty incident when a defect is created or a launch fails, and resolves it when the defect closes or a later launch on the same branch passes; a workspace Editor connects one or more services once.

Severity is **Automatic** by default: it follows the defect's severity or how much of the launch failed.

## What the integration does

The **PagerDuty** card is under **Notifications** on the workspace **Integrations** page. Each project picks which of these events reach PagerDuty: [Defect Created](https://docs.qualflare.com/docs/integrations/events#defect-created), [Defect Resolved](https://docs.qualflare.com/docs/integrations/events#defect-resolved), [Launch Failed](https://docs.qualflare.com/docs/integrations/events#launch-failed), [Launch Completed](https://docs.qualflare.com/docs/integrations/events#launch-completed), [Cluster Created](https://docs.qualflare.com/docs/integrations/events#cluster-created) and [Milestone Completed](https://docs.qualflare.com/docs/integrations/events#milestone-completed). It only sends events: nothing in PagerDuty changes Qualflare.

## Before you begin

* You install PagerDuty on the workspace **Integrations** page (requires the Editor role or higher in the workspace).
* You set up each project on its own **Integrations** page (requires the Editor role or higher in the project).
* On PagerDuty, you need permission to add an integration to each service Qualflare should page.

## Install PagerDuty

1. In the workspace sidebar, open **Integrations**, then the **Notifications** tab
2. On the **PagerDuty** card, click **Install**
3. On PagerDuty's install page, pick every service Qualflare should page
4. You are sent back to **Integrations**, with the PagerDuty card installed. On a project's **Integrations** page it shows as `PagerDuty (<account>)` under the card title, named after your PagerDuty account

> **Warning:** Pick every service you need now. The PagerDuty card has no way to add a service later: to add one, remove the integration and set up each project again.

*Figure: Pick every service Qualflare should page during this install.*

## Configure a project

1. In the project sidebar, open **Integrations** and click **Configure** on PagerDuty (**Edit** once it is set up)
2. If the install connected more than one service, pick the **PagerDuty service**: "Which service these alerts page. Each one has its own escalation policy, so this decides who gets woken up."
3. Pick the **Severity**, or keep **Automatic**
4. Under **Events**, select the events. "Defect Resolved and Launch Completed close the incident their failing counterpart opened, so pick them in pairs."
5. Click **Save**

| Severity      | The app's hint                       |
| ------------- | ------------------------------------ |
| **Automatic** | Derived from the event — recommended |
| **Critical**  | Highest urgency                      |
| **Error**     | Something is broken                  |
| **Warning**   | Needs attention                      |
| **Info**      | Never pages                          |

A fixed **Severity** replaces **Automatic** for every event of the project.

*Figure: Automatic severity follows the event, and each failing event has a matching resolving event.*

## Check deliveries

Each event Qualflare sends is a row in the project's [Recent deliveries](https://docs.qualflare.com/docs/integrations/events#recent-deliveries), with PagerDuty's error in **Detail** when it fails.

## How incidents open and close

| Event               | Action   | One incident per    | Automatic severity                                      |
| ------------------- | -------- | ------------------- | ------------------------------------------------------- |
| Defect Created      | Opens    | Defect              | From the defect's severity                              |
| Defect Resolved     | Resolves | Defect              | —                                                       |
| Launch Failed       | Opens    | Branch, per project | Critical, error or warning by the share of failed cases |
| Launch Completed    | Resolves | Branch, per project | —                                                       |
| Cluster Created     | Opens    | Cluster             | Warning                                                 |
| Milestone Completed | Opens    | Milestone           | Info                                                    |

With **Automatic**, a Critical defect opens a critical incident, High an error, Medium a warning and Low an info. A failed launch is critical when more than 50% of its cases failed, error above 25%, and warning otherwise.

A failing upload on a branch that already has an open incident adds to that incident instead of opening another, because PagerDuty groups events by their dedup key. Select both halves of each pair, or incidents stay open. PagerDuty doesn't offer Flaky Test Detected: a flaky test opens a defect, which sends Defect Created.

*Figure: The incident's title is the same one-line text the chat integrations post.*

## Remove PagerDuty

> **Caution:** Removing PagerDuty deletes every project's PagerDuty settings. To use PagerDuty again, install it and set up each project from scratch.

On the PagerDuty card in **Workspace → Integrations**, click the trash icon, then **Remove**. Qualflare can't remove its integration from your PagerDuty services: delete it on each service in PagerDuty.

## Data sent to PagerDuty

Each event is one PagerDuty Events API v2 request with:

* `source`: `qualflare`.
* `summary`: the event's text from [Chat messages](https://docs.qualflare.com/docs/integrations/events#chat-messages).
* `severity`: the **Automatic** value or the project's fixed **Severity**.
* `dedup_key`: `qf-<project id>-defect-<number>`, `qf-<project id>-launch-<branch>`, `qf-<project id>-cluster-<id>` or `qf-<project id>-milestone-<number>`. A launch with no branch uses `nobranch`, and a branch name over 64 characters is cut and followed by a hash. So a passing upload resolves the incident the last failing upload on the same branch of the same project opened.
* `custom_details`: the event's fields. For Defect Created, the defect's number, name, severity and description, plus its environment, category, status, expected and actual results, root causes and team when set; for Defect Resolved, its number, name and severity. For the launch events, the launch number, status, branch and total and failed case counts. For Cluster Created, the cluster's ID, name, summary, pattern and case count. For Milestone Completed, its number and name.

## Troubleshooting

* **The install ends with "… was not connected here; remove it from the service …".** Delete the new Qualflare integration from the service in PagerDuty, then install again. If the message starts with `pagerduty integration already exists for this workspace`, PagerDuty was already installed, for example from an old tab: to change services, remove PagerDuty in Qualflare (this deletes every project's PagerDuty settings, see [Remove PagerDuty](https://docs.qualflare.com/docs/integrations/pagerduty#remove)) and install it again.
* **Incidents don't resolve.** Select Launch Completed and Defect Resolved too, and upload the passing run on the same branch as the failing one.
* **Dropped rows with `pagerduty rejected incident: …`.** PagerDuty refused the event, and **Detail** has its message.

## Related

* **Guides:** [Integrations](https://docs.qualflare.com/docs/integrations) · [Upload results with qf collect](https://docs.qualflare.com/docs/cli/collect)
* **Reference:** [Integration events](https://docs.qualflare.com/docs/integrations/events) · [Defect statuses](https://docs.qualflare.com/docs/defects#defect-statuses)
