From 64f4e3c59276ed3468df54112ef612ef493287ce Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 16:18:48 +0000 Subject: [PATCH] deploy: 0994f80891ec71a3c79211cb54e1a3a4ec741b80 --- 404.html | 2 +- assets/js/cfb1e6eb.cace8bac.js | 1 + assets/js/cfb1e6eb.ddb32cf1.js | 1 - ...n.82cd9a5a.js => runtime~main.c6ea50b4.js} | 2 +- blog/archive/index.html | 2 +- blog/authors/index.html | 2 +- blog/first-blog-post/index.html | 2 +- blog/index.html | 2 +- blog/long-blog-post/index.html | 2 +- blog/mdx-blog-post/index.html | 2 +- blog/tags/docusaurus/index.html | 2 +- blog/tags/facebook/index.html | 2 +- blog/tags/hello/index.html | 2 +- blog/tags/hola/index.html | 2 +- blog/tags/index.html | 2 +- blog/welcome/index.html | 2 +- docs/API-docs/api-intro/index.html | 2 +- docs/API-docs/v1.1/contactlist/index.html | 2 +- docs/API-docs/v1.1/createcontact/index.html | 2 +- docs/API-docs/v1.1/createdocument/index.html | 2 +- .../createdocumentwithtemplateid/index.html | 2 +- docs/API-docs/v1.1/createfolder/index.html | 2 +- docs/API-docs/v1.1/createtemplate/index.html | 2 +- docs/API-docs/v1.1/delete-template/index.html | 2 +- docs/API-docs/v1.1/delete-webhook/index.html | 2 +- docs/API-docs/v1.1/deletecontact/index.html | 2 +- docs/API-docs/v1.1/deletedocument/index.html | 2 +- docs/API-docs/v1.1/deletefolder/index.html | 2 +- docs/API-docs/v1.1/draftdocument/index.html | 2 +- docs/API-docs/v1.1/drafttemplate/index.html | 2 +- docs/API-docs/v1.1/folderlist/index.html | 2 +- docs/API-docs/v1.1/get-template/index.html | 2 +- docs/API-docs/v1.1/get-user/index.html | 2 +- docs/API-docs/v1.1/get-webhook/index.html | 2 +- docs/API-docs/v1.1/getcontact/index.html | 2 +- docs/API-docs/v1.1/getcredits/index.html | 2 +- docs/API-docs/v1.1/getdocument/index.html | 2 +- docs/API-docs/v1.1/getdocumentlist/index.html | 2 +- docs/API-docs/v1.1/getfolder/index.html | 2 +- docs/API-docs/v1.1/getformdata/index.html | 2 +- docs/API-docs/v1.1/getsignerips/index.html | 2 +- docs/API-docs/v1.1/gettemplatelist/index.html | 2 +- docs/API-docs/v1.1/index.html | 2 +- docs/API-docs/v1.1/intro/index.html | 2 +- .../v1.1/opensign-api-v-1-1/index.html | 2 +- docs/API-docs/v1.1/publictemplate/index.html | 2 +- .../v1.1/resendrequestmail/index.html | 2 +- docs/API-docs/v1.1/revokedocument/index.html | 2 +- .../v1.1/save-update-webhook/index.html | 2 +- docs/API-docs/v1.1/selfsign/index.html | 2 +- docs/API-docs/v1.1/update-document/index.html | 2 +- docs/API-docs/v1.1/update-template/index.html | 2 +- docs/API-docs/v1.1/updatefolder/index.html | 2 +- docs/API-docs/v1/contactlist/index.html | 2 +- docs/API-docs/v1/createcontact/index.html | 2 +- docs/API-docs/v1/createdocument/index.html | 2 +- .../createdocumentwithtemplateid/index.html | 2 +- docs/API-docs/v1/createfolder/index.html | 2 +- docs/API-docs/v1/createtemplate/index.html | 2 +- docs/API-docs/v1/delete-template/index.html | 2 +- docs/API-docs/v1/delete-webhook/index.html | 2 +- docs/API-docs/v1/deletecontact/index.html | 2 +- docs/API-docs/v1/deletedocument/index.html | 2 +- docs/API-docs/v1/deletefolder/index.html | 2 +- docs/API-docs/v1/draftdocument/index.html | 2 +- docs/API-docs/v1/drafttemplate/index.html | 2 +- docs/API-docs/v1/folderlist/index.html | 2 +- docs/API-docs/v1/get-template/index.html | 2 +- docs/API-docs/v1/get-user/index.html | 2 +- docs/API-docs/v1/get-webhook/index.html | 2 +- docs/API-docs/v1/getcontact/index.html | 2 +- docs/API-docs/v1/getdocument/index.html | 2 +- docs/API-docs/v1/getdocumentlist/index.html | 2 +- docs/API-docs/v1/getfolder/index.html | 2 +- docs/API-docs/v1/gettemplatelist/index.html | 2 +- docs/API-docs/v1/index.html | 2 +- docs/API-docs/v1/intro/index.html | 2 +- docs/API-docs/v1/opensign-api-v-1/index.html | 2 +- docs/API-docs/v1/resendrequestmail/index.html | 2 +- docs/API-docs/v1/revokedocument/index.html | 2 +- .../v1/save-update-webhook/index.html | 2 +- docs/API-docs/v1/selfsign/index.html | 2 +- docs/API-docs/v1/update-document/index.html | 2 +- docs/API-docs/v1/update-template/index.html | 2 +- docs/API-docs/v1/updatefolder/index.html | 2 +- docs/category/cloud-storage/index.html | 2 +- docs/category/console/index.html | 2 +- .../create-new-opensign-document/index.html | 2 +- docs/category/docker/index.html | 2 +- docs/category/documents/index.html | 2 +- docs/category/faqs/index.html | 2 +- docs/category/guides/index.html | 2 +- .../index.html | 2 +- docs/category/settings/index.html | 2 +- docs/category/templates/index.html | 2 +- docs/category/user-menu/index.html | 2 +- docs/contribute/CODE_OF_CONDUCT/index.html | 2 +- docs/contribute/COMMUNITY/index.html | 2 +- docs/contribute/INSTALLATION/index.html | 2 +- .../REPORTING_GUIDELINES/index.html | 2 +- docs/contribute/intro/index.html | 2 +- .../index.html | 2 +- .../help/FAQs/Max File Upload Size/index.html | 2 +- docs/help/FAQs/User Deletion/index.html | 2 +- docs/help/FAQs/index.html | 2 +- .../edit-document-before-sending/index.html | 2 +- .../enforce-email-verification/index.html | 2 +- .../request-signatures/index.html | 2 +- .../New-Document/sign-yourself/index.html | 2 +- docs/help/New-Document/widgets/index.html | 2 +- .../create-document/index.html | 2 +- .../OpenSign™ Drive/list-grid-view/index.html | 2 +- .../organize-documents/index.html | 2 +- .../rename-document/index.html | 2 +- docs/help/Reports/completed/index.html | 2 +- docs/help/Reports/contactbook/index.html | 2 +- docs/help/Reports/declined/index.html | 2 +- docs/help/Reports/drafts/index.html | 2 +- docs/help/Reports/expired/index.html | 2 +- docs/help/Reports/in-progress/index.html | 2 +- docs/help/Reports/need-your-sign/index.html | 2 +- docs/help/Settings/APIToken/index.html | 2 +- .../Custom-email-templates/index.html | 2 +- docs/help/Settings/Preferences/index.html | 2 +- .../Settings/SecurityManagement/index.html | 2 +- docs/help/Settings/Teams/index.html | 2 +- docs/help/Settings/Webhook/index.html | 67 +++++++++++++++++-- .../Settings/disabledocumentid/index.html | 2 +- docs/help/Settings/manage-users/index.html | 2 +- docs/help/Settings/my-signature/index.html | 2 +- .../help/Templates/create-template/index.html | 2 +- docs/help/Templates/embed-template/index.html | 2 +- .../Templates/manage-templates/index.html | 2 +- docs/help/Templates/publicTemplate/index.html | 2 +- docs/help/Templates/quick-send/index.html | 2 +- docs/help/Templates/use-template/index.html | 2 +- .../User Menu/Console/analystics/index.html | 2 +- .../User Menu/Console/branding/index.html | 2 +- .../Console/custom_filestorage/index.html | 2 +- docs/help/User Menu/Console/emails/index.html | 2 +- .../help/User Menu/Console/general/index.html | 2 +- .../User Menu/Console/globalSMTP/index.html | 2 +- .../User Menu/Console/orgadmin/index.html | 2 +- .../Console/organizations/index.html | 2 +- .../Console/signing_certificate/index.html | 2 +- docs/help/User Menu/Profile/index.html | 2 +- docs/help/intro/index.html | 2 +- docs/intro/index.html | 2 +- .../One-click-Install/DigitalOcean/index.html | 2 +- docs/self-host/cloud-storage/s3/index.html | 2 +- docs/self-host/docker/run-locally/index.html | 2 +- .../docker/upgrade-deployment/index.html | 2 +- .../guides/azure-vm-setup/index.html | 2 +- .../self-host/guides/env-variables/index.html | 2 +- .../index.html | 2 +- .../guides/upgrade-to-v2.1.0/index.html | 2 +- docs/self-host/intro/index.html | 2 +- index.html | 2 +- markdown-page/index.html | 2 +- 159 files changed, 220 insertions(+), 161 deletions(-) create mode 100644 assets/js/cfb1e6eb.cace8bac.js delete mode 100644 assets/js/cfb1e6eb.ddb32cf1.js rename assets/js/{runtime~main.82cd9a5a.js => runtime~main.c6ea50b4.js} (99%) diff --git a/404.html b/404.html index 497212637..76d3c4b11 100644 --- a/404.html +++ b/404.html @@ -5,7 +5,7 @@
Document Created",id:"-example-payload-document-created",level:3},{value:"\ud83d\udd0d Example Payload: Document Viewed",id:"-example-payload-document-viewed",level:3},{value:"\ud83d\udd0d Example Payload: Document Signed",id:"-example-payload-document-signed",level:3},{value:"\ud83d\udd0d Example Payload: Document Completed",id:"-example-payload-document-completed",level:3},{value:"\ud83d\udd0d Example Payload: Document Declined",id:"-example-payload-document-declined",level:3},{value:"\u2753 Frequently Asked Questions",id:"-frequently-asked-questions",level:2},{value:"1. What is the OpenSign Sandbox environment?",id:"1-what-is-the-opensign-sandbox-environment",level:3},{value:"2. Can I use my Live Webhook in the Sandbox?",id:"2-can-i-use-my-live-webhook-in-the-sandbox",level:3},{value:"3. Can I test all webhook events in the Sandbox?",id:"3-can-i-test-all-webhook-events-in-the-sandbox",level:3},{value:"\ud83d\udcac Need Help?",id:"-need-help",level:2}];function c(e){const n={a:"a",blockquote:"blockquote",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"-webhook",children:"\ud83d\udd01 Webhook"})}),"\n",(0,i.jsx)(n.h2,{id:"-what-is-a-webhook",children:"\ud83d\udd14 What is a Webhook?"}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.strong,{children:"webhook"})," allows one system (like OpenSign) to automatically send real-time data or notifications to another system (like your server) when a specific event occurs."]}),"\n",(0,i.jsxs)(n.p,{children:["Think of it as a ",(0,i.jsx)(n.strong,{children:"push notification for your backend"})," \u2014 instead of continuously checking for updates (polling), a webhook pushes data to your endpoint ",(0,i.jsx)(n.strong,{children:"as soon as an event happens"}),"."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-simple-example",children:"\ud83e\udde0 Simple Example"}),"\n",(0,i.jsx)(n.p,{children:"Suppose you're using OpenSign to collect eSignatures:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["When someone ",(0,i.jsx)(n.strong,{children:"signs a document"}),", OpenSign triggers a ",(0,i.jsx)(n.strong,{children:"POST request"})," to your server."]}),"\n",(0,i.jsx)(n.li,{children:"The request includes data such as the document ID, signer email, and signature status."}),"\n",(0,i.jsx)(n.li,{children:"Your server can then process this information \u2014 for example, update your CRM, trigger a workflow, or send a confirmation email."}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-how-to-add-a-webhook-in-opensign",children:"\ud83e\udded How to Add a Webhook in OpenSign"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Step 1:"})," Log in to your OpenSign account using your credentials.",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Step 2:"})," Navigate to ",(0,i.jsx)(n.strong,{children:"Settings \u2192 Webhook"}),"."]}),"\n",(0,i.jsx)("img",{width:"861",height:"407",alt:"Navigate to Add Webhook",src:"https://github.com/user-attachments/assets/883dc914-9316-42b0-b59c-10b168265b38"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Step 3:"})," Click ",(0,i.jsx)(n.strong,{children:"Add Webhook"}),"."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["A popup will appear. Enter your ",(0,i.jsx)(n.strong,{children:"Webhook URL"})," and click ",(0,i.jsx)(n.strong,{children:"Yes"})," to save it."]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Note:"})," To enable ",(0,i.jsx)(n.strong,{children:"Live Webhook"})," support, you must upgrade to a ",(0,i.jsx)(n.strong,{children:"paid plan"})," \u2014 either the ",(0,i.jsx)(n.strong,{children:"Professional"})," or ",(0,i.jsx)(n.strong,{children:"Teams"})," plan."]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-how-to-create-a-webhook-security-key",children:"\ud83e\udded How to Create a Webhook Security Key"}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.strong,{children:"Webhook Security Key"})," (also called a webhook secret) is a shared secret used to verify that webhook requests are genuinely sent by OpenSign and have not been tampered with."]}),"\n",(0,i.jsx)(n.h3,{id:"steps-to-create-a-webhook-security-key",children:"Steps to Create a Webhook Security Key"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Log in to your ",(0,i.jsx)(n.strong,{children:"OpenSign"})," account."]}),"\n",(0,i.jsxs)(n.li,{children:["Navigate to ",(0,i.jsx)(n.strong,{children:"Settings \u2192 Webhooks"}),"."]}),"\n",(0,i.jsx)(n.li,{children:"Add or edit a webhook endpoint."}),"\n",(0,i.jsxs)(n.li,{children:["Generate a Security Key by clicking Enable Authentication, then click the Generate button.\nThe webhook security key has been generated.","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Example: ",(0,i.jsx)(n.code,{children:"a50a904a2a329d761781dac27c984416a07396736ac5588b62c6fe226538fbca"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"Save the webhook configuration."}),"\n"]}),"\n",(0,i.jsx)("img",{width:"861",height:"600",alt:"webhook security key",src:"https://github.com/user-attachments/assets/6f61a23e-25a1-4785-b241-657af0c1eeb1"}),"\n",(0,i.jsxs)(n.p,{children:["\u26a0\ufe0f ",(0,i.jsx)(n.strong,{children:"Important:"})," Store this key securely. Do not expose it in client-side code or public repositories."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-how-the-webhook-security-key-works",children:"\ud83d\udd10 How the Webhook Security Key Works"}),"\n",(0,i.jsx)(n.p,{children:"OpenSign signs every webhook request using your security key."}),"\n",(0,i.jsx)(n.h3,{id:"high-level-flow",children:"High-level Flow"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"An event occurs (e.g. create document, document viewed, signed, completed, and declined)."}),"\n",(0,i.jsx)(n.li,{children:"OpenSign sends a webhook request to your configured endpoint."}),"\n",(0,i.jsxs)(n.li,{children:["OpenSign generates a signature using:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.strong,{children:"raw request payload"})]}),"\n",(0,i.jsxs)(n.li,{children:["Your ",(0,i.jsx)(n.strong,{children:"webhook security key"})]}),"\n",(0,i.jsxs)(n.li,{children:["The ",(0,i.jsx)(n.strong,{children:"HMAC-SHA256"})," algorithm"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.li,{children:"The generated signature is sent in the request header:"}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"x-webhook-signature\n"})}),"\n",(0,i.jsxs)(n.ol,{start:"5",children:["\n",(0,i.jsx)(n.li,{children:"Your server recomputes the signature using the same payload and secret."}),"\n",(0,i.jsx)(n.li,{children:"If both signatures match, the request is verified as authentic."}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:"// Process webhook event"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:'\n---\n\n## \ud83d\udce6 Sample Webhook Payload\n\n```json\nconst crypto = require("crypto");\n\nfunction verifySignature(req, secret) {\n const receivedSignature = req.headers["x-webhook-signature"];\n const payload = req.body;\n\n const expectedSignature = crypto\n .createHmac("sha256", secret)\n .update(JSON.stringify(payload))\n .digest("hex");\n\n return receivedSignature === expectedSignature;\n}\n\nconsole.log("Try programiz.pro", verifySignature({body: {\n "event": "created",\n "type": "request-sign",\n "objectId": "SBEbnHwfrN",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/c3f0bc11b84a87e6265de6bf28e5015e_uoeksXXU6FI5Op2B.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=DO00QAPRB3CQRWHWQ8ZB%2F20251219%2Fus-west%2Fs3%2Faws4_request&X-Amz-Date=20251219T152806Z&X-Amz-Expires=900&X-Amz-Signature=9635dfb8ee8fde933f881905a97f869578ef7e99b337d4b21a0805b8317fd70d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject",\n "name": "Sample Test Doc Line Compressed",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark@opensignlabs.com"\n },\n {\n "name": "kelvin bosch",\n "email": "kelvin.bosch@opensignlabs.com"\n }\n ],\n "createdAt": "Sat, 20 Dec 2025 00:58:20 GMT+9:30"\n}, headers:{"x-webhook-signature":"52958fd3900f19ba6485319eb2622ef0ec4cf5ddfe36509cbe95eb706ed6b8c2" }}, "0906e8cbc88da0d5a6fd78162eb8e5e57ba7bd99bdc472145dc089d7f82b0a4a"));\n'})}),"\n",(0,i.jsx)(n.p,{children:"The corresponding signature is sent in the request header:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{children:"x-webhook-signature: bcf57b06dde0c030d9423639824bad17ab7dd09ea3bf0a743773b95254ecf78e\n"})}),"\n",(0,i.jsx)(n.p,{children:"If the script returns true, it means the webhook is valid and has not been tampered with."}),"\n",(0,i.jsx)(n.h2,{id:"-best-practices",children:"\u2705 Best Practices"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Always verify the webhook signature before processing the payload."}),"\n",(0,i.jsxs)(n.li,{children:["Use the ",(0,i.jsx)(n.strong,{children:"raw request body"})," for signature calculation (avoid modifying it)."]}),"\n",(0,i.jsx)(n.li,{children:"Rotate your webhook security key periodically."}),"\n",(0,i.jsxs)(n.li,{children:["Return a ",(0,i.jsx)(n.strong,{children:"2xx"})," HTTP status only after successful verification."]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-common-issues",children:"\ud83e\udde9 Common Issues"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Signature mismatch"}),": Ensure the payload is stringified exactly as received."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Missing header"}),": Confirm ",(0,i.jsx)(n.code,{children:"x-webhook-signature"})," is present in the request."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Wrong secret"}),": Verify the same security key is used on both sides."]}),"\n"]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.p,{children:"This mechanism ensures webhook requests are secure, tamper-proof, and trustworthy."}),"\n",(0,i.jsx)(n.h2,{id:"-sandbox-webhook",children:"\ud83e\uddea Sandbox Webhook"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["You can also add webhook for the ",(0,i.jsx)(n.strong,{children:"Sandbox"})," environment on the same page."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Sandbox webhook"})," are available on all plans, including the ",(0,i.jsx)(n.strong,{children:"Free"})," plan, and are ideal for development and testing."]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Caution:"})," Avoid sending sensitive or confidential data to the Sandbox environment."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\ud83d\udcd8 ",(0,i.jsx)(n.strong,{children:"API Reference:"}),(0,i.jsx)(n.br,{}),"\n","You can also manage your webhooks via our API.",(0,i.jsx)(n.br,{}),"\n","See the API documentation here: ",(0,i.jsx)(n.a,{href:"https://docs.opensignlabs.com/docs/API-docs/save-update-webhook",children:"Save/Update Webhook API"})]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-supported-webhook-events",children:"\ud83d\udccb Supported Webhook Events"}),"\n",(0,i.jsx)(n.p,{children:"OpenSign sends event notifications to your configured webhook URL when any of the following actions occur:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Document Created"})," \u2013 A document is created."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Document Viewed"})," \u2013 A signer viewed the document."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Document Signed"})," \u2013 A signer signed the document."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Document Completed"})," \u2013 All required signatures are completed."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Document Revoked or Declined"})," \u2013 The document was revoked or declined."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Each notification is sent as a ",(0,i.jsx)(n.strong,{children:"POST request"})," with a ",(0,i.jsx)(n.strong,{children:"JSON payload"})," containing relevant event data."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.h3,{id:"-example-payload-document-created",children:["\ud83d\udd0d Example Payload: ",(0,i.jsx)(n.code,{children:"Document Created"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "event": "created",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/851de61f62b60a1f62e03232464fa4bf_81wV17MTebsrRoov.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "createdAt": "Fri, 16 May 2025 15:02:42 IST"\n}\n'})}),"\n",(0,i.jsxs)(n.h3,{id:"-example-payload-document-viewed",children:["\ud83d\udd0d Example Payload: ",(0,i.jsx)(n.code,{children:"Document Viewed"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "event": "viewed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/851de61f62b60a1f62e03232464fa4bf_81wV17MTebsrRoov.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "viewedBy": "peter.mark1093@gmail.com",\n "viewedAt": "Fri, 16 May 2025 16:18:16 IST",\n "createdAt": "Fri, 16 May 2025 15:02:28 IST"\n}\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.h3,{id:"-example-payload-document-signed",children:["\ud83d\udd0d Example Payload: ",(0,i.jsx)(n.code,{children:"Document Signed"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "event": "signed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/bc2eb56cc9d29a5f222e4a4b5dbbcfbf_signed_sample_test_doc_4858.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signer": {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n },\n "signedAt": "Fri, 16 May 2025 16:18:34 GMT+5:30",\n "createdAt": "Fri, 16 May 2025 15:02:28 GMT+5:30"\n}\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.h3,{id:"-example-payload-document-completed",children:["\ud83d\udd0d Example Payload: ",(0,i.jsx)(n.code,{children:"Document Completed"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "event": "completed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/bc2eb56cc9d29a5f222e4a4b5dbbcfbf_signed_sample_test_doc_4858.pdf?...",\n "certificate": "https://legadratw3d.ams3.digitaloceanspaces.com/9c954912f529acb7e4d065ec0521a63b_certificate.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "completedAt": "Fri, 16 May 2025 16:18:35 GMT+5:30",\n "createdAt": "Fri, 16 May 2025 15:02:28 GMT+5:30"\n}\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsxs)(n.h3,{id:"-example-payload-document-declined",children:["\ud83d\udd0d Example Payload: ",(0,i.jsx)(n.code,{children:"Document Declined"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-json",children:'{\n "event": "declined",\n "type": "request-sign",\n "objectId": "1gtDMBHpEY",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/e90c32a45351eb52eb00e0054ae50566_581ZmOn4CwAqnxSF.pdf?...",\n "name": "Sample Test Doc ",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "9283784545554"\n }\n ],\n "declinedBy": "peter.mark1093@gmail.com",\n "declinedReason": "Invalid date format used.",\n "declinedAt": "Fri, 16 May 2025 16:25:38 IST",\n "createdAt": "Fri, 16 May 2025 16:24:28 IST"\n}\n'})}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-frequently-asked-questions",children:"\u2753 Frequently Asked Questions"}),"\n",(0,i.jsx)(n.h3,{id:"1-what-is-the-opensign-sandbox-environment",children:"1. What is the OpenSign Sandbox environment?"}),"\n",(0,i.jsx)(n.p,{children:"The Sandbox is a testing environment designed for developers to safely experiment with OpenSign APIs and workflows. It mirrors the live environment but with testing limitations."}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"2-can-i-use-my-live-webhook-in-the-sandbox",children:"2. Can I use my Live Webhook in the Sandbox?"}),"\n",(0,i.jsxs)(n.p,{children:["No. ",(0,i.jsx)(n.strong,{children:"Live Webhooks do not work"})," in the Sandbox environment. You must configure a separate webhook specifically for Sandbox testing."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h3,{id:"3-can-i-test-all-webhook-events-in-the-sandbox",children:"3. Can I test all webhook events in the Sandbox?"}),"\n",(0,i.jsxs)(n.p,{children:["Yes. The Sandbox environment supports all event types, including ",(0,i.jsx)(n.code,{children:"created"}),", ",(0,i.jsx)(n.code,{children:"viewed"}),", ",(0,i.jsx)(n.code,{children:"signed"}),", ",(0,i.jsx)(n.code,{children:"completed"}),", and ",(0,i.jsx)(n.code,{children:"revoked/declined"}),".",(0,i.jsx)(n.br,{}),"\n","However, some behaviors may be simulated for testing purposes."]}),"\n",(0,i.jsx)(n.hr,{}),"\n",(0,i.jsx)(n.h2,{id:"-need-help",children:"\ud83d\udcac Need Help?"}),"\n",(0,i.jsxs)(n.p,{children:["If you need help testing your webhook or integrating it into your application, feel free to reach out to our support team at ",(0,i.jsx)(n.a,{href:"mailto:support@opensignlabs.com",children:"support@opensignlabs.com"}),"."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Happy signing with OpenSign\u2122!"})})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/cfb1e6eb.ddb32cf1.js b/assets/js/cfb1e6eb.ddb32cf1.js
deleted file mode 100644
index a1a596671..000000000
--- a/assets/js/cfb1e6eb.ddb32cf1.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(self.webpackChunkOpenSign_Docs=self.webpackChunkOpenSign_Docs||[]).push([[539],{28453:(e,n,o)=>{o.d(n,{R:()=>a,x:()=>d});var s=o(96540);const t={},i=s.createContext(t);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),s.createElement(i.Provider,{value:n},e.children)}},79436:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"help/Settings/Webhook","title":"Webhook","description":"\ud83d\udd14 What is a Webhook?","source":"@site/docs/help/Settings/Webhook.md","sourceDirName":"help/Settings","slug":"/help/Settings/Webhook","permalink":"/docs/help/Settings/Webhook","draft":false,"unlisted":false,"editUrl":"https://github.com/opensignlabs/opensign/tree/feat-docs/docs/docs/help/Settings/Webhook.md","tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"sidebar_position":3,"title":"Webhook"},"sidebar":"tutorialSidebar","previous":{"title":"API Token","permalink":"/docs/help/Settings/APIToken"},"next":{"title":"Preferences","permalink":"/docs/help/Settings/Preferences"}}');var t=o(74848),i=o(28453);const a={sidebar_position:3,title:"Webhook"},d="\ud83d\udd01 Webhook",r={},l=[{value:"\ud83d\udd14 What is a Webhook?",id:"-what-is-a-webhook",level:2},{value:"\ud83e\udde0 Simple Example",id:"-simple-example",level:2},{value:"\ud83e\udded How to Add a Webhook in OpenSign",id:"-how-to-add-a-webhook-in-opensign",level:2},{value:"\ud83e\uddea Sandbox Webhook",id:"-sandbox-webhook",level:2},{value:"\ud83d\udccb Supported Webhook Events",id:"-supported-webhook-events",level:2},{value:"\ud83d\udd0d Example Payload: Document Created",id:"-example-payload-document-created",level:3},{value:"\ud83d\udd0d Example Payload: Document Viewed",id:"-example-payload-document-viewed",level:3},{value:"\ud83d\udd0d Example Payload: Document Signed",id:"-example-payload-document-signed",level:3},{value:"\ud83d\udd0d Example Payload: Document Completed",id:"-example-payload-document-completed",level:3},{value:"\ud83d\udd0d Example Payload: Document Declined",id:"-example-payload-document-declined",level:3},{value:"\u2753 Frequently Asked Questions",id:"-frequently-asked-questions",level:2},{value:"1. What is the OpenSign Sandbox environment?",id:"1-what-is-the-opensign-sandbox-environment",level:3},{value:"2. Can I use my Live Webhook in the Sandbox?",id:"2-can-i-use-my-live-webhook-in-the-sandbox",level:3},{value:"3. Can I test all webhook events in the Sandbox?",id:"3-can-i-test-all-webhook-events-in-the-sandbox",level:3},{value:"\ud83d\udcac Need Help?",id:"-need-help",level:2}];function c(e){const n={a:"a",blockquote:"blockquote",br:"br",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"-webhook",children:"\ud83d\udd01 Webhook"})}),"\n",(0,t.jsx)(n.h2,{id:"-what-is-a-webhook",children:"\ud83d\udd14 What is a Webhook?"}),"\n",(0,t.jsxs)(n.p,{children:["A ",(0,t.jsx)(n.strong,{children:"webhook"})," allows one system (like OpenSign) to automatically send real-time data or notifications to another system (like your server) when a specific event occurs."]}),"\n",(0,t.jsxs)(n.p,{children:["Think of it as a ",(0,t.jsx)(n.strong,{children:"push notification for your backend"})," \u2014 instead of continuously checking for updates (polling), a webhook pushes data to your endpoint ",(0,t.jsx)(n.strong,{children:"as soon as an event happens"}),"."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-simple-example",children:"\ud83e\udde0 Simple Example"}),"\n",(0,t.jsx)(n.p,{children:"Suppose you're using OpenSign to collect eSignatures:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["When someone ",(0,t.jsx)(n.strong,{children:"signs a document"}),", OpenSign triggers a ",(0,t.jsx)(n.strong,{children:"POST request"})," to your server."]}),"\n",(0,t.jsx)(n.li,{children:"The request includes data such as the document ID, signer email, and signature status."}),"\n",(0,t.jsx)(n.li,{children:"Your server can then process this information \u2014 for example, update your CRM, trigger a workflow, or send a confirmation email."}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-how-to-add-a-webhook-in-opensign",children:"\ud83e\udded How to Add a Webhook in OpenSign"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 1:"})," Log in to your OpenSign account using your credentials.",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Step 2:"})," Navigate to ",(0,t.jsx)(n.strong,{children:"Settings \u2192 Webhook"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/user-attachments/assets/6b069b6c-d2b7-408b-b7c9-7fbeb55d6c98",alt:"Navigate to Add Webhook"})}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Step 3:"})," Click ",(0,t.jsx)(n.strong,{children:"Add Webhook"}),"."]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["A popup will appear. Enter your ",(0,t.jsx)(n.strong,{children:"Webhook URL"})," and click ",(0,t.jsx)(n.strong,{children:"Yes"})," to save it."]}),"\n"]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Note:"})," To enable ",(0,t.jsx)(n.strong,{children:"Live Webhook"})," support, you must upgrade to a ",(0,t.jsx)(n.strong,{children:"paid plan"})," \u2014 either the ",(0,t.jsx)(n.strong,{children:"Professional"})," or ",(0,t.jsx)(n.strong,{children:"Teams"})," plan."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/user-attachments/assets/ff68b255-a6e6-4a7d-9cef-6dd9e3b6d4e4",alt:"Add Webhook"})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-sandbox-webhook",children:"\ud83e\uddea Sandbox Webhook"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["You can also add webhook for the ",(0,t.jsx)(n.strong,{children:"Sandbox"})," environment on the same page."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Sandbox webhook"})," are available on all plans, including the ",(0,t.jsx)(n.strong,{children:"Free"})," plan, and are ideal for development and testing."]}),"\n"]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Caution:"})," Avoid sending sensitive or confidential data to the Sandbox environment."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["\ud83d\udcd8 ",(0,t.jsx)(n.strong,{children:"API Reference:"}),(0,t.jsx)(n.br,{}),"\n","You can also manage your webhooks via our API.",(0,t.jsx)(n.br,{}),"\n","See the API documentation here: ",(0,t.jsx)(n.a,{href:"https://docs.opensignlabs.com/docs/API-docs/save-update-webhook",children:"Save/Update Webhook API"})]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-supported-webhook-events",children:"\ud83d\udccb Supported Webhook Events"}),"\n",(0,t.jsx)(n.p,{children:"OpenSign sends event notifications to your configured webhook URL when any of the following actions occur:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Created"})," \u2013 A document is created."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Viewed"})," \u2013 A signer viewed the document."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Signed"})," \u2013 A signer signed the document."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Completed"})," \u2013 All required signatures are completed."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Document Revoked or Declined"})," \u2013 The document was revoked or declined."]}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Each notification is sent as a ",(0,t.jsx)(n.strong,{children:"POST request"})," with a ",(0,t.jsx)(n.strong,{children:"JSON payload"})," containing relevant event data."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.h3,{id:"-example-payload-document-created",children:["\ud83d\udd0d Example Payload: ",(0,t.jsx)(n.code,{children:"Document Created"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "event": "created",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/851de61f62b60a1f62e03232464fa4bf_81wV17MTebsrRoov.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "createdAt": "Fri, 16 May 2025 15:02:42 IST"\n}\n'})}),"\n",(0,t.jsxs)(n.h3,{id:"-example-payload-document-viewed",children:["\ud83d\udd0d Example Payload: ",(0,t.jsx)(n.code,{children:"Document Viewed"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "event": "viewed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/851de61f62b60a1f62e03232464fa4bf_81wV17MTebsrRoov.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "viewedBy": "peter.mark1093@gmail.com",\n "viewedAt": "Fri, 16 May 2025 16:18:16 IST",\n "createdAt": "Fri, 16 May 2025 15:02:28 IST"\n}\n'})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.h3,{id:"-example-payload-document-signed",children:["\ud83d\udd0d Example Payload: ",(0,t.jsx)(n.code,{children:"Document Signed"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "event": "signed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/bc2eb56cc9d29a5f222e4a4b5dbbcfbf_signed_sample_test_doc_4858.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signer": {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n },\n "signedAt": "Fri, 16 May 2025 16:18:34 GMT+5:30",\n "createdAt": "Fri, 16 May 2025 15:02:28 GMT+5:30"\n}\n'})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.h3,{id:"-example-payload-document-completed",children:["\ud83d\udd0d Example Payload: ",(0,t.jsx)(n.code,{children:"Document Completed"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "event": "completed",\n "type": "request-sign",\n "objectId": "kpeg6Q2rO7",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/bc2eb56cc9d29a5f222e4a4b5dbbcfbf_signed_sample_test_doc_4858.pdf?...",\n "certificate": "https://legadratw3d.ams3.digitaloceanspaces.com/9c954912f529acb7e4d065ec0521a63b_certificate.pdf?...",\n "name": "Sample Test Doc",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "3556567789"\n }\n ],\n "completedAt": "Fri, 16 May 2025 16:18:35 GMT+5:30",\n "createdAt": "Fri, 16 May 2025 15:02:28 GMT+5:30"\n}\n'})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsxs)(n.h3,{id:"-example-payload-document-declined",children:["\ud83d\udd0d Example Payload: ",(0,t.jsx)(n.code,{children:"Document Declined"})]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-json",children:'{\n "event": "declined",\n "type": "request-sign",\n "objectId": "1gtDMBHpEY",\n "file": "https://legadratw3d.ams3.digitaloceanspaces.com/e90c32a45351eb52eb00e0054ae50566_581ZmOn4CwAqnxSF.pdf?...",\n "name": "Sample Test Doc ",\n "note": "Please review and sign this document",\n "description": "",\n "signers": [\n {\n "name": "Peter Mark",\n "email": "peter.mark1093@gmail.com",\n "phone": "9283784545554"\n }\n ],\n "declinedBy": "peter.mark1093@gmail.com",\n "declinedReason": "Invalid date format used.",\n "declinedAt": "Fri, 16 May 2025 16:25:38 IST",\n "createdAt": "Fri, 16 May 2025 16:24:28 IST"\n}\n'})}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-frequently-asked-questions",children:"\u2753 Frequently Asked Questions"}),"\n",(0,t.jsx)(n.h3,{id:"1-what-is-the-opensign-sandbox-environment",children:"1. What is the OpenSign Sandbox environment?"}),"\n",(0,t.jsx)(n.p,{children:"The Sandbox is a testing environment designed for developers to safely experiment with OpenSign APIs and workflows. It mirrors the live environment but with testing limitations."}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"2-can-i-use-my-live-webhook-in-the-sandbox",children:"2. Can I use my Live Webhook in the Sandbox?"}),"\n",(0,t.jsxs)(n.p,{children:["No. ",(0,t.jsx)(n.strong,{children:"Live Webhooks do not work"})," in the Sandbox environment. You must configure a separate webhook specifically for Sandbox testing."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"3-can-i-test-all-webhook-events-in-the-sandbox",children:"3. Can I test all webhook events in the Sandbox?"}),"\n",(0,t.jsxs)(n.p,{children:["Yes. The Sandbox environment supports all event types, including ",(0,t.jsx)(n.code,{children:"created"}),", ",(0,t.jsx)(n.code,{children:"viewed"}),", ",(0,t.jsx)(n.code,{children:"signed"}),", ",(0,t.jsx)(n.code,{children:"completed"}),", and ",(0,t.jsx)(n.code,{children:"revoked/declined"}),".",(0,t.jsx)(n.br,{}),"\n","However, some behaviors may be simulated for testing purposes."]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h2,{id:"-need-help",children:"\ud83d\udcac Need Help?"}),"\n",(0,t.jsxs)(n.p,{children:["If you need help testing your webhook or integrating it into your application, feel free to reach out to our support team at ",(0,t.jsx)(n.a,{href:"mailto:support@opensignlabs.com",children:"support@opensignlabs.com"}),"."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Happy signing with OpenSign\u2122!"})})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.82cd9a5a.js b/assets/js/runtime~main.c6ea50b4.js
similarity index 99%
rename from assets/js/runtime~main.82cd9a5a.js
rename to assets/js/runtime~main.c6ea50b4.js
index c8d68b7ec..79f7e8bcd 100644
--- a/assets/js/runtime~main.82cd9a5a.js
+++ b/assets/js/runtime~main.c6ea50b4.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,d,b={},r={};function t(e){var a=r[e];if(void 0!==a)return a.exports;var c=r[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,t),c.loaded=!0,c.exports}t.m=b,t.c=r,e=[],t.O=(a,c,f,d)=>{if(!c){var b=1/0;for(n=0;nStep 1: Log in to your OpenSign account using your credentials.
Step 2: Navigate to Settings → Webhook.
Step 3: Click Add Webhook.
-Note: To enable Live Webhook support, you must upgrade to a paid plan — either the Professional or Teams plan.
A Webhook Security Key (also called a webhook secret) is a shared secret used to verify that webhook requests are genuinely sent by OpenSign and have not been tampered with.
+a50a904a2a329d761781dac27c984416a07396736ac5588b62c6fe226538fbca⚠️ Important: Store this key securely. Do not expose it in client-side code or public repositories.
+OpenSign signs every webhook request using your security key.
+x-webhook-signature
// Process webhook event
+
---
## 📦 Sample Webhook Payload
```json
const crypto = require("crypto");
function verifySignature(req, secret) {
const receivedSignature = req.headers["x-webhook-signature"];
const payload = req.body;
const expectedSignature = crypto
.createHmac("sha256", secret)
.update(JSON.stringify(payload))
.digest("hex");
return receivedSignature === expectedSignature;
}
console.log("Try programiz.pro", verifySignature({body: {
"event": "created",
"type": "request-sign",
"objectId": "SBEbnHwfrN",
"file": "https://legadratw3d.ams3.digitaloceanspaces.com/c3f0bc11b84a87e6265de6bf28e5015e_uoeksXXU6FI5Op2B.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=DO00QAPRB3CQRWHWQ8ZB%2F20251219%2Fus-west%2Fs3%2Faws4_request&X-Amz-Date=20251219T152806Z&X-Amz-Expires=900&X-Amz-Signature=9635dfb8ee8fde933f881905a97f869578ef7e99b337d4b21a0805b8317fd70d&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject",
"name": "Sample Test Doc Line Compressed",
"note": "Please review and sign this document",
"description": "",
"signers": [
{
"name": "Peter Mark",
"email": "peter.mark@opensignlabs.com"
},
{
"name": "kelvin bosch",
"email": "kelvin.bosch@opensignlabs.com"
}
],
"createdAt": "Sat, 20 Dec 2025 00:58:20 GMT+9:30"
}, headers:{"x-webhook-signature":"52958fd3900f19ba6485319eb2622ef0ec4cf5ddfe36509cbe95eb706ed6b8c2" }}, "0906e8cbc88da0d5a6fd78162eb8e5e57ba7bd99bdc472145dc089d7f82b0a4a"));
The corresponding signature is sent in the request header:
+x-webhook-signature: bcf57b06dde0c030d9423639824bad17ab7dd09ea3bf0a743773b95254ecf78e
If the script returns true, it means the webhook is valid and has not been tampered with.
+x-webhook-signature is present in the request.This mechanism ensures webhook requests are secure, tamper-proof, and trustworthy.
If you need help testing your webhook or integrating it into your application, feel free to reach out to our support team at support@opensignlabs.com.
-Happy signing with OpenSign™!
Happy signing with OpenSign™!