Skip to main content

Webhooks for Signing

Signing Webhooks (Real-Time Signing Status)

Updated over 2 weeks ago

Why This Webhook Exists

All Virifi API operations except document signing return an immediate response.

Document signing is different.

Signing is an asynchronous process involving:

  • User interaction

  • External identity verification (PES)

  • Multiple signers

  • Time delays outside API control

Because of this, signing status cannot be reliably delivered via API response or email alone. Webhooks provide the only reliable, real-time mechanism to track signing progress and completion.


Scope & Limitations

This webhook is triggered only for document signing workflows initiated via:

POST /sign-document

No other API operation sends webhook events.

If you are looking for certification, verification, or revocation results, those are returned synchronously in the API response and do not use webhooks.

Webhook Setup

  • The webhook endpoint URL is provided by the client

  • The endpoint must accept POST requests

  • Payloads are delivered in JSON

  • Authentication uses the same Developer API Key as all other Virifi APIs


Authentication

Webhook requests include the standard Authorization header:

{   "Content-Type": "application/json",   "Authorization": "Bearer API-KEY" }

Requests without a valid API key should be rejected.


Signing Events

Only the following signing-related events are sent:

Event

Description

sign.initiated

Signing process successfully created

sign.completed

All required signatures completed

sign.failed

Signing rejected, expired, or failed

sign.declined

Signing cancelled by initiator

Do not assume event ordering. Always treat events as state updates, not commands.


Webhook Payload Example

{   "event": "sign.completed",   
"type": "sign_by_yourself",
"timestamp": "2026-0-000",
"data": { "documentId": "6983750d8a13ead08211f410",
"documentHash": "3f55b1dbd5a8acdb181fc******************de6ba63c1b928b21315b", "organizationId": "66571c********742301",
"signatureType": "AES",
"status": "completed",
"signerEmail": "[email protected]" } }

Payload Fields

Field

Description

event

Signing event type

timestamp

Event creation time (ISO-8601)

documentId

Virifi document ID

documentHash

Blockchain document hash

organizationId

Owning organization

signatureType

AES or PES

status

Current signing state


Expected Webhook Response

Your endpoint must return:

  • HTTP 2xx β†’ Event accepted

  • Any other response β†’ Delivery considered failed

Webhook delivery is best-effort. Events are not guaranteed to be retried.

Did this answer your question?