POST request for each event.
Typical uses: syncing conversions into your CRM or data warehouse, alerting on signature installation failures, mirroring teammate changes into internal tools, and reacting to campaigns going live.
Webhooks are part of the Scribe API and require a plan with API access. Only workspace owners and admins can manage webhook endpoints.
Setting up an endpoint
Webhook endpoints are managed from the Scribe dashboard:- Open Settings → Webhooks (in the Technical section).
- Click Manage webhooks. This opens your workspace’s webhook portal.
- Add your HTTPS endpoint URL and pick the event types to subscribe to — or subscribe to all events.
Receiving events
Every delivery is an HTTPPOST with a JSON body. The type field tells you which event you received; the rest of the payload is event-specific (see the event catalog):
2xx status code to acknowledge the delivery. Anything else — including timeouts — counts as a failure and triggers retries.
Verifying signatures
Every delivery is signed so you can verify it genuinely came from Scribe and was not tampered with. Each request carries three headers:
Scribe webhooks are powered by Svix and follow the widely-used signing scheme of the Standard Webhooks specification. The easiest way to verify is an official Svix library — your endpoint’s signing secret is shown in the webhook portal:
Delivery, retries and ordering
- Retries — failed deliveries are retried automatically with exponential backoff over roughly a day. Endpoints that keep failing are eventually disabled; you can re-enable them and replay missed deliveries from the portal.
- At-least-once — a delivery can occasionally arrive more than once. Handle deliveries idempotently: the
webhook-idheader is stable across retries of the same message and is the right dedup key. - Ordering is not guaranteed — events are delivered independently and can arrive out of order. Use the payload’s
occurred_atwhen sequence matters. - Semantics — most events are emitted on state transitions, not on every write. For example,
signature.installation.failedfires once when an installation breaks, not daily while it stays broken, andvisitor.identifiedfires only the first time a person is identified.
Endpoint requirements
- HTTPS only, reachable from the public internet.
- Respond within 15 seconds — do your processing asynchronously if it can take longer.
- Deliveries originate from Svix; if you need IP allowlisting, the current address list is published in the Svix documentation.