Integration events
Every event Qualflare integrations send: what triggers it, which integrations offer it, the message each one posts, and how to read Recent deliveries.
Last updated
Qualflare integrations send seven events, from Defect Created to Flaky Test Detected, and each project picks which of them reach each integration; every attempt, delivered or not, is listed under Recent deliveries on the project's Integrations page.
Webhooks are separate and send their own two events.
Events and when they are sent
| Event | Key | Sent when | Offered by |
|---|---|---|---|
| Defect Created | defect_created | A defect is created, or flaky detection opens one | GitHub, GitLab, Jira, Linear, Slack, Microsoft Teams, Discord, PagerDuty |
| Defect Resolved | defect_resolved | A defect is closed or marked False positive | Slack, Microsoft Teams, Discord, PagerDuty |
| Launch Completed | launch_completed | An upload has no failed, error, timed-out or aborted test | Slack, Microsoft Teams, Discord, PagerDuty |
| Launch Failed | launch_failed | An upload has at least one failed, error, timed-out or aborted test | All eight integrations |
| Cluster Created | cluster_created | A new failure cluster gets its name | All eight integrations |
| Milestone Completed | milestone_completed | A milestone is saved with Is Completed on | Slack, Microsoft Teams, Discord, PagerDuty |
| Flaky Test Detected | flaky_test_detected | Qualflare opens a defect for a flaky case | GitHub, GitLab, Jira, Linear, Slack, Microsoft Teams, Discord |
Defect Created
Qualflare sends Defect Created when someone creates a defect with Create Defect on the Defects page, through the API or through MCP, and when flaky detection opens a defect for a test case. Defects that Qualflare opens for a failure cluster, and defects created from a redundant-case notification, never send it. See How defects are created.
Defect Resolved
Qualflare sends Defect Resolved when a defect's status changes from Active or Action Required to Closed or False positive, and when it closes a flaky-detection defect because the case is stable again. Issue trackers have nothing to file for it, so GitHub, GitLab, Jira and Linear don't offer it. See Defect statuses.
Launch Completed
Qualflare sends Launch Completed when results uploaded with the CLI, a reporter or the API contain no failed, error, timed-out or aborted test. Manual runs never send it. In its message the counts currently always read Passed: 0, Failed: 0. See Upload results with qf collect.
Launch Failed
Qualflare sends Launch Failed when an upload contains at least one failed, error, timed-out or aborted test: one event per upload, however many tests failed. Manual runs never send it.
Cluster Created
Qualflare sends Cluster Created once per cluster, when a new failure cluster gets its name. Clustering needs Enable AI Features in the project's AI Features settings and a plan with AI failure clustering. See How failure clustering works.
Milestone Completed
Qualflare sends Milestone Completed when you save a milestone in Edit with Is Completed on. Saving the milestone again with Is Completed on sends it again, even when it was already completed. See Complete or reopen a milestone.
Flaky Test Detected
Qualflare sends Flaky Test Detected each time it opens a flaky-detection defect for a test case: when the case becomes flaky, and again if that defect is closed or marked False positive while the case is still flaky. The new defect also sends Defect Created, so a tracker with both events selected files two issues for one flaky test. PagerDuty doesn't offer Flaky Test Detected for this reason. See How Qualflare flags a flaky test.
Chat and alert messages
| Event | Message text |
|---|---|
| Defect Created | New defect created: #<number> <name> (Severity: <severity>) |
| Defect Resolved | Defect resolved: #<number> <name> |
| Launch Completed | Launch #<number> completed with status: <status> (Passed: <count>, Failed: <count>) |
| Launch Failed | Launch #<number> failed with status: <status> (Failed: <failed>/<total>) |
| Cluster Created | Failure cluster detected: <cluster name> (<count> affected cases) |
| Milestone Completed | Milestone completed: <milestone name> |
| Flaky Test Detected | Flaky test detected: <test case name> (<rate>% flaky rate) |
Slack and Discord post the text as it is, Microsoft Teams wraps it in a card, and PagerDuty uses it as the incident summary.
Issues that trackers file
| Event | Issue title |
|---|---|
| Defect Created | [Defect #12] <defect name> |
| Launch Failed | [Launch #48] Failed — <status> |
| Cluster Created | [Cluster] <cluster name> |
| Flaky Test Detected | [Flaky] <test case name> |
GitHub, GitLab, Jira and Linear use these titles. The body lists the event's details, such as a defect's severity and description or a launch's status, branch and failed count, and ends with Created automatically by Qualflare. See What the issue contains.
Recent deliveries
In the project sidebar, open Integrations: Recent deliveries is below the cards once the project has a configured integration, with 10 rows a page. Until an event is sent, it reads No deliveries recorded yet. Anyone who can open the project can read it Viewer+ · project (requires the Viewer role or higher in the project).
| Column | What it shows |
|---|---|
| When | When the attempt was made; hover it for how long ago |
| Outcome | Delivered, Failed or Dropped |
| Integration | The integration's key with a capital letter, for example Teams for Microsoft Teams |
| Event | The event key, for example launch_failed |
| Detail | The provider's error on one line; hover it for the full text |
Each row is one attempt, so a delivery that Qualflare retries has a row for each attempt. The <n> not delivered badge next to the title counts the project's Failed and Dropped rows.
The Outcome column shows one of three values:
| Outcome | Meaning |
|---|---|
| Delivered | The provider accepted the delivery |
| Failed | A temporary error, such as a timeout. Qualflare may still retry it |
| Dropped | A permanent error, such as a revoked token or a deleted channel. It is never retried |
Retries
Qualflare retries timeouts, network errors, and 429 and 5xx responses, up to 10 attempts in total, 10 seconds to 5 minutes apart. A 4xx response other than 429 is permanent, so the attempt is Dropped and never retried. Each integration is delivered and retried on its own, so a failure in one doesn't hold back or resend another. Events that happen while an integration is disabled are not sent, then or later.
Linked issues
When GitHub, GitLab, Jira or Linear files an issue for Defect Created, Qualflare records it on the defect, under Linked issues. Issues filed for Launch Failed, Cluster Created or Flaky Test Detected aren't linked to any defect. See Linked issues.
Related
- Guides: Integrations · GitHub · Jira · Slack
- Reference: Webhooks · Defects · Failure clusters
- CLI/API: Upload results with qf collect
Integrations
Send Qualflare events to GitHub, GitLab, Jira, Linear, Slack, Microsoft Teams, Discord and PagerDuty, and set up webhooks for each project.
GitHub Integration
Connect Qualflare to GitHub to file GitHub issues automatically for new defects, failed test runs, failure clusters and flaky tests.