Outbound Webhooks

Register callback URLs to receive signed POST events when versions are deployed, A/B tests stop, or evals complete.

Registering a webhook

Go to Settings → Integrations and add a webhook URL. Choose the events you want to receive and save a webhook secret (used to verify the signature on your end).

Events

EventFired when
version.deployeda prompt or chain version is deployed to an environment slot.
ab_test.stoppedan A/B test is stopped.
eval.batch_completea batch evaluation finishes (including auto-eval on save).

Verifying the signature

Every request carries an X-PV-Signature header: an HMAC-SHA256 hex digest of the raw request body, signed with your webhook secret. Verify it on your server before processing the payload.

python
import hmac, hashlib

def verify(body: bytes, signature: str, secret: str) -> bool:
    expected = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(expected, signature)
Delivery history & retries
Failed deliveries are retried automatically with exponential backoff. You can inspect the delivery history (status code, attempt count, timestamp) for each webhook in Settings → Integrations.