> **Source:** https://knowledge.leegality.com/document-execution/api/webhook-signed > **Site:** Leegality Knowledge Base — https://knowledge.leegality.com > **About:** Leegality is a document execution platform covering eSigning, stamps, NeSL, workflows, and REST API integration. > **Navigation:** Every article on this site has a plain-text version at `.txt` (this format). To get an index of all articles with their `.txt` links, read: https://knowledge.leegality.com/llms.txt > **AI Guide:** For instructions on how to navigate this knowledge base as an AI agent, read: https://knowledge.leegality.com/ai-readable.txt --- # WEBHOOK /your-webhook-endpoint/v4/signed — Signer Signed Fires when a signer completes a signature on the document. Delivered to `successWebhook`. **Authentication:** `X-Auth-Token` header required on every request. ## Request URL ``` WEBHOOK https://app1.leegality.com/api/your-webhook-endpoint/v4/signed ``` **Environments:** - Production: `https://app1.leegality.com/api/your-webhook-endpoint/v4/signed` - Sandbox: `https://sandbox.leegality.com/api/your-webhook-endpoint/v4/signed` --- ## Request Body **Content-Type:** `application/json` The Webhook 4.0 envelope for the **Signer Signed** event, delivered on the success route when a signer completes a signature. Every top-level key is always present; a value that does not apply to this event is sent as JSON null (the `mac` key is absent entirely when no account salt is configured). Branch your handling on `eventType`, which is always `SIGNED` here. | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `webhookType` | string | No | The delivery route the event was sent on. Always `SUCCESS` for this event. `SUCCESS` events are delivered to your `successWebhook` endpoint. Allowed: `SUCCESS`. | `SUCCESS` | | `eventType` | string | No | What happened. Always `SIGNED` for this event, which fires when a signer completes a signature. Branch your handling on this field. Allowed: `SIGNED`. | `SIGNED` | | `rejectionReason` | string | No | No rejection occurs when signing. Not applicable for the Signer Signed event. | `null` | | `combinationUuid` | string | No | The UUID of the combination this event belongs to, as supplied on the pack-create request. Webhook 4.0 carries no separate combination object — use this identifier to correlate the event with the combination you configured. | `c1d2e3f4-5678-4abc-9def-012345678903` | | `workflowRunContextId` | string | No | The pack-run identifier returned when the pack was created. It is shared by every event fired for that pack, so you can group all events belonging to a single pack run. | `wrc_abc123` | | `timestamp` | string | No | The time the event occurred, formatted as `dd-MM-yyyy HH:mm:ss`. The string carries no timezone marker. | `30-06-2026 18:53:16` | | `pack` | object | No | The pack the event belongs to. See **pack** below. | — | | `document` | object | No | The document the event is about. A separate event is fired for each document–combination mapping the invitee acted on. See **document** below. | — | | `invitationGroup` | object | No | The signer or reviewer group the invitee belongs to. See **invitationGroup** below. | — | | `invitee` | object | No | The invitee who acted or was affected. See **invitee** below. | — | | `messages` | array\ | No | No error messages on success. Not applicable for the Signer Signed event. See **messages** below. | `` | | `mac` | string | No | Hex-encoded HMAC-SHA1 of `document.documentId`, keyed by your account salt. This key is absent entirely (not null) when no salt is configured. | `a3f5b9c8d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7` | #### pack The pack the event belongs to. | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `packId` | string | No | The pack identifier. Use it with the Check pack details endpoint to retrieve the current pack, documents and audit trail. | `pack_abc123xyz` | | `packStatus` | string | No | Live pack state at the time the event was built. This is persisted state, not the event outcome — a failure event can carry a terminal pack state such as `EXPIRED`. **Possible values:** - `SENT` - `EXPIRED` - `COMPLETED` Allowed: `SENT`, `EXPIRED`, `COMPLETED`. | `SENT` | | `packReferenceNo` | string | No | Leegality's pack IRN, the platform-generated reference for the pack. | `PIRN-2026-001234` | | `urn` | string | No | The client-supplied reference for the pack. Reconcile events against your own systems on this field. | `CLIENT-URN-001` | #### document The document the event is about. A separate event is fired for each document–combination mapping the invitee acted on. | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `uuid` | string | No | The document UUID assigned at pack create. | `d1e2f3a4-5678-4abc-9def-012345678902` | | `documentId` | string | No | The document handle used by the document-fetch endpoints. `mac`, when present, is computed over this value. | `01HN8Z2K7M9P4Q5R6S7T8U9V0` | | `documentStatus` | string | No | Live document state. This is persisted state, not the event outcome. `PACK_PENDING_COMPLETION` means this document is fully executed but the pack is waiting on other documents; a failed or rejected document remains `SENT`. **Possible values:** - `SENT` - `PACK_PENDING_COMPLETION` - `COMPLETED` Allowed: `SENT`, `PACK_PENDING_COMPLETION`, `COMPLETED`. | `PACK_PENDING_COMPLETION` | | `irn` | string | No | The document IRN. | `IRN-2026-001234` | | `action` | string | No | The completing action recorded on the document. Always `SIGNED` for the Signer Signed event. Allowed: `SIGNED`. | `SIGNED` | | `signatureType` | string | No | The signature method the signer used to complete the signature. **Possible values:** - `AADHAAR` - `VIRTUAL_SIGN` - `QUICK_SIGN` - `VISUAL_SIGN` - `DSC` - `DOC_SIGNER` - `AUTOMATED_SIGN` - `AUTOMATED_VIRTUAL_SIGN` - `AUTOMATED_VISUAL_SIGN` - `AUTOMATED_DOC_SIGN` Allowed: `AADHAAR`, `VIRTUAL_SIGN`, `QUICK_SIGN`, `VISUAL_SIGN`, `DSC`, `DOC_SIGNER`, `AUTOMATED_SIGN`, `AUTOMATED_VIRTUAL_SIGN`, `AUTOMATED_VISUAL_SIGN`, `AUTOMATED_DOC_SIGN`, `null`. | `AADHAAR` | #### invitationGroup The signer or reviewer group the invitee belongs to. | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `uuid` | string | No | The group UUID. | `f7b8c9d0-1234-4abc-8def-567890123456` | | `groupName` | string | No | The group's display name. | `Borrowers` | | `groupStatus` | string | No | Live group state. This is persisted state, not the event outcome — a failure event can carry `groupStatus: COMPLETED` (for example, when a threshold group has already met its minimum). **Possible values:** - `INACTIVE` - `ACTIVE` - `COMPLETED` Allowed: `INACTIVE`, `ACTIVE`, `COMPLETED`. | `COMPLETED` | | `type` | string | No | The group role. For this event the invitee is a signer, so this is typically `SIGNER` or `GROUP_SIGNER` (`GROUP_*` indicates a threshold group). **Possible values:** - `SIGNER` - `REVIEWER` - `GROUP_SIGNER` - `GROUP_REVIEWER` Allowed: `SIGNER`, `REVIEWER`, `GROUP_SIGNER`, `GROUP_REVIEWER`. | `SIGNER` | #### invitee The invitee who acted or was affected. | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `uuid` | string | No | The invitee UUID. | `a1b2c3d4-5678-4abc-9def-012345678901` | | `inviteeName` | string | No | The invitee's name. | `Rajesh Kumar` | | `inviteeEmail` | string | No | The invitee's email address. | `rajesh@example.com` | | `inviteeMobile` | string | No | The invitee's 10-digit mobile number, without country code. | `9820000001` | | `invitationStatus` | string | No | Live invitation state. Always `SIGNED` for the Signer Signed event. Allowed: `SIGNED`. | `SIGNED` | #### messages | Field | Type | Required | Description | Example | |-------|------|----------|-------------|---------| | `errorCode` | string | No | An error code. | — | | `errorMessage` | string | No | Human-readable message text. | — | ### Sample Request ```json { "webhookType": "SUCCESS", "eventType": "SIGNED", "rejectionReason": null, "combinationUuid": "c1d2e3f4-5678-4abc-9def-012345678903", "workflowRunContextId": "wrc_abc123", "timestamp": "30-06-2026 18:53:16", "pack": { "packId": "pack_abc123xyz", "packStatus": "SENT", "packReferenceNo": "PIRN-2026-001234", "urn": "CLIENT-URN-001" }, "document": { "uuid": "d1e2f3a4-5678-4abc-9def-012345678902", "documentId": "01HN8Z2K7M9P4Q5R6S7T8U9V0", "documentStatus": "PACK_PENDING_COMPLETION", "irn": "IRN-2026-001234", "action": "SIGNED", "signatureType": "AADHAAR" }, "invitationGroup": { "uuid": "f7b8c9d0-1234-4abc-8def-567890123456", "groupName": "Borrowers", "groupStatus": "COMPLETED", "type": "SIGNER" }, "invitee": { "uuid": "a1b2c3d4-5678-4abc-9def-012345678901", "inviteeName": "Rajesh Kumar", "inviteeEmail": "rajesh@example.com", "inviteeMobile": "9820000001", "invitationStatus": "SIGNED" }, "messages": [], "mac": "a3f5b9c8d2e1f0a9b8c7d6e5f4a3b2c1d0e9f8a7" } ``` --- ## Responses ### 2XX — Return any 2XX status code (200, 201, or 202) to acknowledge receipt. No specific response body is required. Any 2XX status code is accepted.