Scan on every deploy
Send one signed request when a deploy finishes. Regress scans the new build and reports anything that broke.
Generate a webhook secret
In Project settings, find Deploy webhook and click Generate secret. The webhook URL next to it already contains your project ID.
Save two CI secrets
Add
REGRESS_PROJECT_IDandREGRESS_WEBHOOK_SECRETas protected secrets in your CI.Call the webhook after your deploy step
- name: Start a Regress scan env: REGRESS_PROJECT_ID: ${{ secrets.REGRESS_PROJECT_ID }} REGRESS_WEBHOOK_SECRET: ${{ secrets.REGRESS_WEBHOOK_SECRET }} run: | BODY='{}' SIGNATURE=$(printf '%s' "$BODY" \ | openssl dgst -sha256 -hmac "$REGRESS_WEBHOOK_SECRET" -hex \ | awk '{print $NF}') curl --fail-with-body -X POST "https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID" \ -H 'Content-Type: application/json' \ -H "x-regress-signature: sha256=$SIGNATURE" \ --data-raw "$BODY"The response includes a
checkRunId. Results appear on your dashboard within a few minutes.
Fail the build on a regression (optional)
To make your pipeline wait for the result, poll the status endpoint until status is completed or failed. Fail the build if the status is failed, or if flowsFailed or changeCount is above zero. Sign the checkRunId with your webhook secret, the same way as the deploy request.
SIGNATURE=$(printf '%s' "$CHECK_RUN_ID" \
| openssl dgst -sha256 -hmac "$REGRESS_WEBHOOK_SECRET" -hex \
| awk '{print $NF}')
curl "https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID/status/$CHECK_RUN_ID" \
-H "x-regress-signature: sha256=$SIGNATURE"{
"id": "cr_a1b2c3d4",
"status": "completed",
"pagesChecked": 14,
"totalPages": 14,
"changeCount": 2,
"flowsTested": 6,
"flowsPassed": 5,
"flowsFailed": 1,
"completedAt": "2026-02-18T10:30:00Z"
}