Skip to main content
POST https://app.qawolf.com/api/webhooks/deploy_success
If your build server supports node, use @qawolf/ci-sdk instead of calling this endpoint directly. This gives you type safety and clearer errors and output.

Request

Request headers

Request body

All fields are optional.

Commonly used

Advanced

Response

results is an array of matched triggers. Each entry carries an outcome of created, skipped, or failed, alongside created_suite_id if a run was created, duplicate_suite_id if a run for this deployment already exists, or failure_code and failure_message if the run could not be created. Branch on failure_code, such as billing-prevented or environment-not-ready, and display failure_message. Treat failure_code as an open set, since new codes are added over time.
A failed entry also carries failure_reason, which is deprecated. It holds an internal diagnostic whose values change without notice, so do not branch on it.
warning is present when the request needed a workspace and did not name one, in which case it reports the workspace QA Wolf used. It never changes the outcome. @qawolf/ci-sdk prints it for you.
On the first delivery of a deployment, a matched trigger returns created_suite_id even when the deployment duplicates one QA Wolf is already handling — deduplication is settled after this response is sent, so the synchronous response does not report it. To find out whether your run was superseded by a duplicate, poll CI greenlight and compare relevantRunId with rootRunId (see Superseding logic).
You see duplicate_suite_id only when retrying deploy_success for the same sha after deduplication has already settled. On the first delivery, a matched trigger is never reported as a duplicate.

Response codes

A 200 response does not guarantee a run was created. Inspect the response body to confirm.
Last modified on August 7, 2026