SignEnvoy docs

Webhook events

Register an endpoint with POST /v1/webhooks (an https:// URL and an optional list of event types; an empty list subscribes to everything). Each delivery is a POST with a JSON body and the headers below.

Event types

TypeWhen
document.bouncedA signing email could not be delivered to a recipient.
document.completedEvery recipient has signed. Sealing starts.
document.createdA document was created (draft or finalized).
document.expiredThe document's expiry passed before every recipient signed.
document.openedA recipient opened their signing link for the first time. One event per recipient.
document.rejectedA recipient declined, which closes the document.
document.sealedThe sealed PDF, with its Certificate of Completion, is ready to download.
document.sentThe document was sent and signing links were issued. Also fires on re-send.
document.signedA recipient completed all of their fields.

Payload

{
  "id": "evt_outbox_1234",
  "type": "document.signed",
  "created_at": "2026-08-22T12:00:00+00:00",
  "document": "doc_...",
  "mode": "live",
  "data": {
    "seq": 4,
    "engine_event_type": "recipient_completed",
    "actor": "ada@example.com"
  }
}
idUnique per event, stable across redeliveries. Use it to deduplicate.
typeOne of the types above.
created_atWhen the event happened, ISO 8601 UTC.
documentThe document id, as returned by the API.
modelive or test. Endpoints are workspace-level and receive both; a handler that must ignore test traffic checks this member.
dataThe audit-trail event behind this type: its sequence number in the document's chain, the engine event name, and the actor.

Test pings

POST /v1/webhooks/{id}/ping (or "Send a test ping" in the dashboard) queues one delivery of type ping to that endpoint. It is signed and retried like every other delivery, so it is the way to check a handler end to end before any document exists. ping is not an event type: it cannot be subscribed to, and an endpoint's event filter does not apply to it. The body has no document or data member.

{
  "id": "evt_ping_3f9a1c2b7d4e8f01",
  "type": "ping",
  "created_at": "2026-08-23T12:00:00+00:00",
  "mode": "live"
}

Headers

X-SignEnvoy-EventThe event type, repeated from the body (ping for a test ping).
X-SignEnvoy-SignatureHMAC signature of the body; see verifying signatures.
Content-Typeapplication/json
User-AgentSignEnvoy-Webhooks/1.0

Delivery and retries

A delivery succeeds on any 2xx response within 10 seconds. Anything else is retried 3 times, after 30 s, 5 min, 30 min; after 4 attempts the delivery is marked dead. Every attempt is listed under GET /v1/webhooks/{id}/deliveries, and a dead or failed delivery can be queued again with POST /v1/webhooks/{id}/deliveries/{delivery_id}/redeliver. Deliveries are not guaranteed to arrive in order; use created_at and data.seq to order events for one document.