Webhook events
14 events you can subscribe to. Each delivery is signed; see verifying webhooks.
| Event | When it fires |
|---|---|
document.sent | The document went out. The first signers in the signing order were emailed. |
document.scheduled | The document was set to send later. data.object.send_at holds the time. |
document.approval_requested | An approval rule matched. The document waits for an approver before it goes to signers. |
document.approved | The approver approved. The document now goes to signers (or waits for its send time). |
document.approval_rejected | The approver rejected the document. It returns to draft. |
document.corrected | The sender corrected a document that was already out: a recipient’s name or email, or the expiry date. |
document.completed | Everyone signed. The signed PDF is sealed and ready to download with its certificate and evidence. |
document.declined | A signer declined. Nobody else is asked to sign. |
document.voided | The sender cancelled the document while it was out. Signing links stop working. |
document.expired | The expiry date passed before everyone signed. |
recipient.viewed | A recipient opened the document for the first time. |
recipient.signed | A signer signed. data.recipient_id says who. |
recipient.declined | A signer declined, with a reason. |
recipient.question_asked | A signer used “Ask the sender a question”. |
Example payload
{
"id": "evt_5ydfhl3TvtnythpZPPPP6U",
"object": "event",
"type": "recipient.signed",
"created_at": "2026-11-03T09:41:27.000Z",
"data": {
"object": {
"id": "doc_3y9Pf34qY6Nb3wWD25RQ4F",
"object": "document",
"status": "sent",
"title": "Service agreement - Northwind",
"recipients": [ { "id": "rcp_5ZR3qa7yEeeby3abP3E2Zs", "object": "recipient", "status": "signed", "...": "..." } ],
"metadata": { "crm_deal_id": "D-10442" },
"...": "the full document object"
},
"recipient_id": "rcp_5ZR3qa7yEeeby3abP3E2Zs"
}
}