In the PandaDoc developer dashboard (or via API), create a webhook subscription pointing to your HTTPS endpoint; select the document_state_changed event as the primary trigger for document lifecycle notifications
Implement your endpoint to accept POST requests; return HTTP 200 promptly — PandaDoc retries failed deliveries 3 times
Parse the incoming JSON payload; the event field indicates the event type and the data.id field contains the document UUID; status within data reflects the new document state (e.g., document.sent, document.completed, document.viewed)
Use the document UUID from the webhook payload to call GET /documents/{id} for full document details including recipient status, fields, and metadata
Verify webhook authenticity by comparing a computed HMAC signature of the raw request body against the signature header provided by PandaDoc, using your webhook secret as the key
Known gotchas
PandaDoc only retries a failed webhook 3 times; ensure your endpoint is reliable and returns 200 before performing any heavy processing (queue the payload for async handling)
The document_state_changed event covers the main document lifecycle; there are separate event types for template and contact changes — subscribe only to the events your integration needs to avoid noise
Webhook payloads do not include form field values; call the documents API separately to retrieve filled field data after receiving a completion event
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp