webhook_url on submit. It must be a public http(s) URL; private and loopback
hosts are rejected with a 400. Redirects are not followed.
When the check reaches a terminal status, we POST once (with retries on transport
/ 5xx errors). If delivery fails, webhook_error on the check describes why:
type is document_check.{status}: either completed or failed.
Guarantees
- Delivery is at-least-once. Handlers must be idempotent on
data.id. - We stop retrying on
4xx(your endpoint rejected the payload) and on3xx(redirects). - Already-delivered checks are not re-posted on Celery retry.
- Transport failures and
5xxresponses are retried with backoff. After retries are exhausted,webhook_erroris set and we stop.