Webhooks are HTTP endpoints that receive events from InsertSign.
They allow you to be notified about document collection events that happen in the real world outside of your document flow. Some examples of document collection events include completed requests (request.completed) and bounced emails (email.bounced).
Webhooks are essential for scaling your document collection integration by helping you process large volumes of business-critical events.
Overview
A webhook is the act of InsertSign making an HTTP POST request to your application’s API when an event occurs. This way InsertSign is able to immediately notify you when an event occurs.
You can build a webhook handler on your own server to manage all your offline workflows. Start by exposing an endpoint that can receive requests from InsertSign and test your integration. Each request from InsertSign contains an JSON object with a reference to the object on InsertSign that was modified.
Testing webhooks can be a difficult process. Here are two recommendations:
Navigate to Settings > Webhooks and click the ... three dots to reveal an option to test your URL endpoint. Simply select the event you want to test and click the Test button.
Curl is a great tool for interacting with APIs, among other functions. In this context, you can utilize curl to send HTTP requests to your API, mimicking the behavior of InsertSign's requests. You can find an example curl call for each individual webhook event on this page.
If InsertSign does not receive a 200 response from a webhook server, we will NOT retry POSTing again.
InsertSign uses standard HTTP response codes to indicate the success or failure of a request.
Codes in the 2xx range indicate success, codes in the 4xx range indicate an error given the information provided (e.g. a required parameter was omitted), and codes in the 5xx range indicate an error with the InsertSign service itself.
Parameter | Description |
---|---|
200 | OK - The request was successful. |
400 | Bad Request - The request could not be understood due to malformed syntax. |
401 | Unauthorized - Your API key is wrong or the access token has expired. |
403 | Limit Reached - Please make requests inactive, permanently delete requests to clear space, or upgrade your account. |
404 | Not Found - The requested resource is not found. |
500 | Internal Error - Our servers encountered an unexpected error while fetching or updating data to our database. |
503 | Service Unavailable - We’re temporarily offline. Please try again later. |
Events
Description:
Triggers when the status of a signature request changes from "draft" to "sent".
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co", request: { signers: { -NeD5nNcbr-nViVjjp: { id: "-NeD5nNcbr-nViVjjp", email: "example@gmail.com", name: "John Doe", label: "CEO" }, -exampleJCDqrO1ZzuAPJCDW: { company: "Acme LLC", created_at: 1689893924614, id: "-exampleJCDqrO1ZzuAPJCDW", email: "jane.smith@gmail.com", name: "Jane Smith", timestamp: -1689893923878 } }, signer_order: ["-exampleJCDqrO1ZzuAPJCDW", "-NeD5nNcbr-nViVjjp"], progress: 0, sent_date: 1698640152432, status: "sent", title: "NDA for Acme", sender: { id: "1cnViVnv6W6Aqrkkm_x8", name: "John Doe", email: "john.doe@acme.com" } } }, type: "request.sent" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
request | Object | Details about the request in context. |
signers | Object | Details about all the signers, including name, email, and other information. |
signers.label | String | The job title or role of the signer (e.g., "CEO"). |
signers.company | String | Signer's company or organization (e.g., "Acme Corporation"). Returns empty string, if no company name was provided. |
signer_order | Array | The order of the signers in the request. |
progress | Number | The progress of the signature request. Ranges 0 to 100 percent. |
sent_date | Number | The timestamp of the request when it was first finalized and sent. |
status | String | The current status of the request. See What do the Request statuses mean? |
title | String | The name of the request. |
sender | Object | The information of the user or member of your team that originally sent the request. |
request_id | String | The unique identifier of the request. |
account_id | String | The unique identifier of your InsertSign account. |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
The "signer_order" array may ONLY be present in this event.
Description:
Triggers when all signers have signed the document and it's marked as 'complete'.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co", request: { signers: { -NeD5nNcbr-nViVjjp: { id: "-NeD5nNcbr-nViVjjp", email: "example@gmail.com", name: "John Doe", status: "signed", type: "type_signer" } }, progress: 100, sent_date: 1698640152432, status: "complete", title: "NDA for Acme", sender: {id: "1cnViVnv6W6Aqrkkm_x8", name: "John Doe", email: "john.doe@acme.com" } } }, type: "request.completed" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
request | Object | Details about the request in context. |
signers | Object | Details about all the signers, including name, email, and other information. |
signers.label | String | The job title or role of the signer (e.g., "CEO"). |
signers.company | String | Signer's company or organization (e.g., "Acme Corporation"). Returns empty string, if no company name was provided. |
progress | Number | The progress of the checklist. Ranges 0 to 100. |
sent_date | Number | The timestamp of the request when it was first finalized and sent. |
status | String | The current status of the request. See What do the Request statuses mean? |
title | String | The name of the request. |
sender | Object | The information of the user or member of your team that originally sent the request. |
request_id | String | The unique identifier of the request. |
account_id | String | The unique identifier of your InsertSign account. |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Description:
Triggers when the status of a request changes to "archived".
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co", request: { signers: { -NeD5nNcbr-nViVjjp: { id: "-NeD5nNcbr-nViVjjp", email: "example@gmail.com", name: "John Doe", label: "CEO" } }, progress: 100, sent_date: 1698640152432, status: "archived", title: "NDA for Acme", sender: {id: "1cnViVnv6W6Aqrkkm_x8", name: "John Doe", email: "john.doe@acme.com" } } }, type: "request.archived" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
request | Object | Details about the request in context. |
signers | Object | Details about all the signers, including name, email, and other information. |
signers.label | String | The job title or role of the signer (e.g., "CEO"). |
signers.company | String | Signer's company or organization (e.g., "Acme Corporation"). Returns empty string, if no company name was provided. |
progress | Number | The progress of the checklist. Ranges 0 to 100. |
sent_date | Number | The timestamp of the request when it was first finalized and sent. |
status | String | The current status of the request. See What do the Request statuses mean? |
title | String | The name of the request. |
sender | Object | The information of the user or member of your team that originally sent the request. |
request_id | String | The unique identifier of the request. |
account_id | String | The unique identifier of your InsertSign account. |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Note: This webhook may trigger more than once and whenever the status changes to "archived".
Description:
Triggers when the request is deleted.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co", request: { signers: { -NeD5nNcbr-nViVjjp: { id: "-NeD5nNcbr-nViVjjp", email: "example@gmail.com", name: "John Doe" } }, progress: 100, sent_date: 1698640152432, status: "archived", title: "NDA for Acme", sender: {id: "1cnViVnv6W6Aqrkkm_x8", name: "John Doe", email: "john.doe@acme.com" } } }, type: "request.deleted" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
request | Object | Details about the request in context. |
signers | Object | Details about all the signers, including name, email, and other information. |
signers.label | String | The job title or role of the signer (e.g., "CEO"). |
signers.company | String | Signer's company or organization (e.g., "Acme Corporation"). Returns empty string, if no company name was provided. |
progress | Number | The progress of the checklist. Ranges 0 to 100. |
sent_date | Number | The timestamp of the request when it was first finalized and sent. |
status | String | The current status of the request. See What do the Request statuses mean? |
title | String | The name of the request. |
sender | Object | The information of the user or member of your team that originally sent the request. |
request_id | String | The unique identifier of the request. |
account_id | String | The unique identifier of your InsertSign account. |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Note: Contains data of the request as it was BEFORE it is deleted.
Description:
Triggers when a new recipient is added (created) in InsertSign.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { email: "example@gmail.com", name: "John Doe", label: "CEO", company: "Acme", id: "-NeD5nNcbr-nViVjjp", account_id: "-Ne_JQph4vWOYBw03Co", created_at: 1712595976304 }, type: "contact.created" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
name | String | The name of the contact (e.g., "John Doe"). |
String | The email address associated with the contact (e.g., "example@email.com"). | |
label | String | The job title or role of the contact (e.g., "CEO"). |
company | String | Contact's company or organization (e.g., "Acme Corporation"). Returns empty string, if no company name was provided. |
created_at | Number | The timestamp indicating the date and time when the record was created (e.g., 1690300434633). |
id | String | A unique identifier for the recipient added (e.g., "-NlybKR3qJYCzp_x7y-3"). |
account_id | String | The unique identifier of your InsertSign account (e.g., "example1aCN3qJCDWuAPWdbK23_Company"). |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Description:
Triggers when a signer signs a request.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { email: "example@gmail.com", name: "John Doe", type: "signer", // signer or sender device: "desktop", ip: "127.0.0.1", signed_at: 1712595976304, request_id: "-N1hyGTaCNaIjJrkReq", id: "-NeD5nNcbr-nViVjjp", account_id: "-Ne_JQph4vWOYBw03Co" }, type: "signer.signed" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
name | String | The name of the signer (e.g., "John Doe"). |
String | The email address associated with the signer (e.g., "example@email.com"). | |
signers.type | String | Type of signer. Possible values: "signer", "sender". |
device | String | The device used to sign the request. Possible values: "desktop", "mobile", "tablet". |
ip | String | The IP address of the device used to sign the request. |
signed_at | Number | The timestamp indicating when the signer signed the request (e.g., 1712595976304). |
request_id | String | The document ID of the signature request in context. |
id | String | A unique identifier for the signer (e.g., "-NlybKR3qJYCzp_x7y-3"). |
account_id | String | The unique identifier of your InsertSign account (e.g., "example1aCN3qJCDWuAPWdbK23_Company"). |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Description:
Triggers whenever an email is successfully delivered to a participant's inbox.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { subject: "NDA for Acme - Signature requested by John Doe", to: "example@gmail.com", request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co" }, type: "email.delivered" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
subject | String | Contains the subject of the email sent. |
to | String | The email of the recipient. |
request_id | String | The unique identifier of the request in context. |
account_id | String | The unique identifier of your InsertSign account (e.g., "example1aCN3qJCDWuAPWdbK23_Company"). |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
"Participants" includes signers, senders, and CC recipients.
Description:
Triggers whenever an email fails to be delivered due to bounces.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { subject: "Overdue: information request for Approval Questionnaire", to: "example@gmail.com", request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co" }, type: "email.bounced" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
subject | String | Contains the subject of the email that bounced. |
to | String | The email of the recipient. |
request_id | String | The unique identifier of the request in context. |
account_id | String | The unique identifier of your InsertSign account (e.g., "example1aCN3qJCDWuAPWdbK23_Company"). |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Note: Please re-check and enter valid email address.
Description:
Triggers if the recipient clicks "Mark as Spam" from their inbox.
Sample Payload:
{ created_at: "2024-04-28T04:33:06.277Z", data: { subject: "NDA for Acme - Signature requested by John Doe", to: "example@gmail.com", request_id: "-N1hyGTaCNaIjJrkReq", account_id: "-Ne_JQph4vWOYBw03Co" }, type: "email.spammed" }
Payload Breakdown:
Property Name | Type | Description |
---|---|---|
created_at | String | The timestamp indicating when the event was created, formatted in ISO 8601. |
data | Object | Contains the event data. |
type | String | Type of event sent in the request body. |
subject | String | Contains the subject of the email that was marked as spam. |
to | String | The email address of the recipient. |
request_id | String | The unique identifier of the request in context. |
account_id | String | The unique identifier of your InsertSign account (e.g., "example1aCN3qJCDWuAPWdbK23_Company"). |
The datetimes within webhook data will be long integers while the "created_at" key in the webhook request body is in ISO 8601 format.
Note: Spam complaints are usually generated when a recipient is NOT expecting an email. Please reach out to the signer/recipient.