Subscribe to and verify Zoho Sign webhooks for document status change events
domain: help.zoho.com · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
In Zoho Sign, go to Settings > Developer Settings > Webhooks > Create webhook, provide a callback URL and name, and select the events to trigger on (Sent, Viewed, Signed by a recipient, Completed by all, Declined, Reassigned, Expires, Recalled, Approved).
Enable the HMAC signature option and generate/set a secret key — Zoho Sign will not let you retrieve this secret again after creation, so store it securely immediately.
On each event, Zoho Sign POSTs a JSON payload with a notifications object (operation_type values such as RequestSubmitted, RequestViewed, RequestSigningSuccess, RequestCompleted, RequestRejected, RequestRecalled, RequestForwarded, RequestExpired, plus performed_by_email and performed_at) and a requests object (request_id, request_name, request_status, document_ids).
Verify authenticity by recomputing an HMAC-SHA256 signature over the payload with your stored secret and comparing it to the webhook signature header.
Respond with a 2xx status within the documented short timeout, before doing slow downstream processing, or Zoho will treat the delivery as failed.
Known gotchas
Webhooks are only available on higher-tier plans (Enterprise and above) — lower-tier accounts cannot configure them at all.
Only a small number of webhooks are allowed per account, so most integrations need to fan out server-side rather than registering one webhook per consumer.
The HMAC secret is shown only once at creation and cannot be retrieved afterward — losing it means deleting and recreating the webhook.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?