What is Sanity Webhooks?
Sanity Webhooks reacts to changes in a project's Content Lake. A webhook configuration chooses create, update, or delete triggers, then applies a GROQ filter to decide which documents qualify. Its GROQ projection builds the JSON body sent to the configured URL. Draft and version documents are ignored by default unless their delivery is enabled in the webhook settings.
The request method is configurable, and Sanity includes Sanity.io webhook delivery as the user agent. A configured secret produces a signature in sanity-webhook-signature. The official @sanity/webhook toolkit checks that signature against the raw body and shared secret. A project can also add an HTTP header such as Authorization when the receiving service requires another credential.
Sanity uses at-least-once delivery and supplies an idempotency-key header for duplicate detection. A webhook can have one request in flight at a time, and an attempt times out after 30 seconds. Sanity retries a 429 or 5xx response twice at 30-second intervals. Other 4xx responses are treated as undeliverable rather than retryable.
These requests move selected content-change data between Sanity and an application chosen by the project owner. They do not crawl the receiving site and have no documented role in AI search or model training. robots.txt cannot control the configured method, payload, or delivery of a webhook.
