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.

EventEffect
INSTALLProvisions the workspace and marks it billable. An agency-level install reaches the locations underneath it.
UNINSTALLDeactivates the workspace. The execution counter is left intact so the final period can still be billed.
PLAN_CHANGERecords 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"
}