Documentation menu

Webhooks

Every event in the trail, delivered to an HTTPS endpoint you control, signed with a secret you were handed once.

Events

EventWhen
signing.createdA document was prepared.
signing.sentIt went out, with one link per signer.
signing.deliveredThe message reached the provider.
signing.viewedA signer opened it. The first view only — a trail that grows on every refresh buries the events that matter.
signing.consentedA signer agreed to do business electronically. Always before the signature.
signing.signedA signer signed.
signing.completedEveryone who had to sign has. This is the one most integrations want.
signing.declinedA signer said no, with a reason.
signing.voidedWithdrawn, with a reason.
signing.expiredThe link ran out.
signing.remindedA reminder went out, with a fresh link.
packet.readyEvery required document about one subject is complete.
packet.blockedSomething in a packet was declined.
signing.pingA test delivery you asked for.

Subscribe to "*" for all of them, or name the ones you want. An event that is not on this list is refused when you add the endpoint, rather than silently never arriving.

The payload

Enough to act on without a second call — and never the token. A webhook body lands in somebody's logs.

{
  "event": "signing.completed",
  "occurred_at": "2026-10-03T14:22:09Z",
  "document": {
    "id": "…", "title": "Rental agreement — Dana Reyes", "status": "completed",
    "body_sha256": "…", "completed_at": "2026-10-03T14:22:09Z",
    "metadata": { "external_ref": "RES-88213" }
  },
  "signer": { "email": "dana@example.com", "full_name": "Dana Reyes", "status": "signed" }
}

Retries

A failed delivery is retried on a widening ladder — 1 minute, 5, 30, 2 hours, 12, then daily — six times by default. After that the delivery is dead and stays readable, so you can see what was missed rather than guessing.

Twenty consecutive failures across deliveries pause the endpoint. An endpoint that has been dead for a week should not keep a queue growing; turning it back on forgives the count.

Deliveries are at-least-once. A network can drop our side of a successful call, so make your handler idempotent — the event carries enough to recognise a repeat.

Ready to build? An API key takes a minute in the portal, and the free plan covers the first 25 agreements a month.

Get an API key