Regress

Scan on every deploy

Send one signed request when a deploy finishes. Regress scans the new build and reports anything that broke.

  1. 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.

  2. Save two CI secrets

    Add REGRESS_PROJECT_ID and REGRESS_WEBHOOK_SECRET as protected secrets in your CI.

  3. 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.

curl https://api.regress.app/api/webhook/deploy/$REGRESS_PROJECT_ID/status/$CHECK_RUN_ID
{
  "id": "cr_a1b2c3d4",
  "status": "completed",
  "pagesChecked": 14,
  "totalPages": 14,
  "changeCount": 2,
  "flowsTested": 6,
  "flowsPassed": 5,
  "flowsFailed": 1,
  "completedAt": "2026-02-18T10:30:00Z"
}

Good to know

The webhook accepts up to 10 requests a minute per project. Deploying with Vercel or another host? Run the same command from CI once the deploy finishes.