Developers
Webhooks
Webhooks run in both directions: your CRM tells the app about installs and record activity, and the app calls you when work you queued is done.
App lifecycle events
Your CRM posts app lifecycle events, and every one is signature-verified before it is acted on.
| Event | Effect |
|---|---|
INSTALL | Provisions the workspace and marks it billable. An agency-level install reaches the locations underneath it. |
UNINSTALL | Deactivates the workspace. The execution counter is left intact so the final period can still be billed. |
PLAN_CHANGE | Records the new Marketplace plan against the workspace. |
CRM events
Contact and opportunity events can generate a document on their own, without a workflow in between — useful when a record being created is the trigger. ContactCreate, ContactUpdate andOpportunityCreate are handled; a workspace with a default template set will render from it.
Signature verification
Incoming webhooks are verified before any work is done, and both Ed25519 and RSA signatures are supported. A body that fails verification is rejected, and a tampered payload fails with it.
Outgoing callbacks
Both /api/v1/generate andbatch jobs accept acallback_url. When the work finishes, the app POSTs the request id, status, signed URL and expiry to it — so you are told rather than having to poll.
POST https://example.com/hooks/pdf-done
{
"requestId": "req_...",
"status": "completed",
"url": "https://.../inv-8842.pdf",
"expiresAt": "2026-09-06T00:00:00.000Z"
}