Webhooks
Configure Qualflare project webhooks to receive HTTP callbacks when events occur, such as test results being collected or defects being created.
Webhooks
Webhooks let you receive real-time HTTP notifications from Qualflare when events happen in your project. Use webhooks to trigger custom automation, sync data to external systems, or notify services that don't have a native integration.
Managing Webhooks
Webhooks are configured per project at Project Settings → Webhooks.
Creating a Webhook
- Go to Project Settings → Webhooks
- Click New Webhook
- Enter:
- URL — the HTTPS endpoint to receive the webhook payload
- Events — which events should trigger this webhook (see Events below)
- Click Save
The webhook status badge shows Active when enabled.
Webhook Events
| Event | When It Fires |
|---|---|
launch.completed | A test launch finishes execution |
defect.created | A new defect was created in the project |
Payload Format
Qualflare sends an HTTP POST request to your webhook URL with a JSON body. Example payload:
{
"event": "launch.completed",
"timestamp": "2026-04-01T12:00:00Z",
"projectSlug": "my-project",
"data": {
"launchSeq": 42,
"totalCases": 120,
"passed": 115,
"failed": 5
}
}Enabling and Disabling
Use the toggle on each webhook row to enable or disable it without deleting the configuration.
Request Headers
Every webhook delivery includes:
| Header | Description |
|---|---|
Content-Type | Always application/json |
User-Agent | Astrais-Webhook/1.0 |
X-Webhook-Event | The event type that triggered this delivery (e.g. launch.completed) |
X-Webhook-ID | The webhook's own ID — useful for routing if one endpoint handles deliveries from multiple webhooks |
X-Webhook-Signature | HMAC-SHA256 signature of the raw request body — see Verifying Signatures below |
Only https:// endpoints are accepted (on port 443 or 8443) — plain HTTP webhook URLs aren't supported.
Verifying Signatures
Each webhook has its own signing secret, generated automatically and shown exactly once, in a toast, immediately after you create it. Copy it somewhere safe — it can't be viewed again afterward (only regenerated by recreating the webhook).
To verify a delivery is genuinely from Qualflare, compute an HMAC-SHA256 digest of the raw request body using your secret, and compare it — as a constant-time comparison, not === — against the X-Webhook-Signature header, which is formatted as sha256=<hex-digest>:
import crypto from 'node:crypto';
function isValidSignature(rawBody, signatureHeader, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expected),
);
}Sign the raw request body, not a re-serialized version of the parsed JSON — re-serializing can change key order or whitespace and produce a signature mismatch even for a legitimate delivery.
Security
Verify the X-Webhook-Signature header on every request as described above — this is the reliable way to confirm a delivery is genuinely from Qualflare, not just checking the payload shape or origin IP.
See Also
Jira Integration
Connect Qualflare to Jira to sync defects as Jira issues. Track test failures directly in your Jira board alongside other engineering work.
Qualflare CLI Tool - Upload & Query Test Results
Upload test results from 23 frameworks with the Qualflare CLI. Query suites, cases, plans, launches, and defects — supports JUnit, pytest, Jest, and more.