Skip to main content
Box webhooks send account-wide lifecycle events to your HTTPS endpoint. Use them to start work when a Box is usable, respond to provisioning failures, or continue an automation after a Box stops.

Register an endpoint

The CLI’s --event accepts ready, error, or archived with or without the box. prefix, and subscribes to all three when you omit it. The API and SDKs take the full box. form and require at least one event. The call returns a signing secret beginning with whsec_. It is shown only once. Store it in your secret manager.
Endpoints must use HTTPS on port 443 and resolve only to public IP addresses. Redirects are not followed. An account can register up to 10 endpoint URLs.

Manage endpoints

The Webhooks tab of the dashboard does the same, and is the only surface that shows delivery history.
Only the API and SDKs can change an existing endpoint’s name, URL, or events in place (PATCH /webhooks/{webhookId}). The CLI and the dashboard have no edit: delete and re-create, which mints a new signing secret.
During rotation, accept both the old and new secret briefly: an attempt already in flight can still carry the old signature. Deleting an endpoint removes queued deliveries, but an attempt already in flight can still arrive.

Events

Each state transition creates one immutable event per subscribed endpoint in the same database transaction as the state change.

Payload

The public Box ID is in data.box.id. Use the top-level event id as an idempotency key.

Verify signatures

Every request includes: Compute the expected signature over the exact raw request body:
Compare signatures in constant time, reject stale timestamps, and deduplicate the delivery ID.
Verify the raw bytes before parsing JSON. Re-serializing the body changes the signature.

Delivery and retries

A 2xx response marks the event delivered. Other responses, connection failures, or the 5-second timeout retry with exponential backoff for up to 8 attempts. Delivery is at least once, so the same event ID can arrive more than once. Separate events can arrive out of order; use each event’s ID, creation time, and state rather than assuming request order. Return a 2xx quickly and move slow work to your own queue. Completed and exhausted delivery records are retained for 30 days.

Inspect deliveries

Open Webhooks in the Box dashboard, then expand Deliveries beside an endpoint. The recent-delivery log shows what fired, the exact payload, Box and event IDs, attempt count, HTTP result or connection diagnostic, and the next retry time when applicable.