POST request to a URL you provide.
Prefer webhooks over polling for reacting to activity in near real time. You can still use signature request events to reconcile or backfill. If you use redlining, the same webhook endpoint also receives redlining events.
How delivery works
When an event fires, Formable sends a single HTTP request to your endpoint:
The request body is the event object — it is not wrapped in an envelope. Every payload has the same top-level shape:
event.event_id— a unique ID for this delivery. Use it for idempotency.event.event_category—signingorredlining.event.event_type— the specific event, for exampledocument_completed. See the event catalog.event.event_time— when the event occurred, in milliseconds since the Unix epoch.- A category-specific object (
signingorredlining) carries the event details.
Register an endpoint
Register your webhook URL in Settings after creating an organization. Each organization has one webhook URL. For detailed steps, see Set up a developer account.1
Create an organization
Go to Settings and create an organization if you don’t have one yet.
2
Register your callback URL
In the Webhooks section, click Register webhook, enter the HTTPS URL that should receive events, and confirm. Production URLs must use
https://.3
Save your signing secret
Copy the signing secret shown once after registration and store it as an environment secret. You’ll use it to verify wehbhooks. Formable does not show the secret again.
Each organization has one webhook URL. For e-signing, handle
document_viewed, document_signed, and document_completed. Wait for document_completed before downloading the signed PDF. The same endpoint also receives redlining events if you use that workflow — inspect event.event_type to decide what to act on.Manage your endpoint
After registration, use the actions menu next to your webhook URL in Settings:Respond quickly
Return a200 status code as soon as you’ve received the event. If you have heavy work to do (updating records, sending emails, syncing data), enqueue it and process it asynchronously so you can respond within the 10-second timeout.
Retries
Formable automatically retries failed deliveries up to 7 times over 24 hours. Later attempts are scheduled from the first send:
After 7 failed attempts, Formable stops retrying that event.
To stay resilient:
- Make your endpoint highly available and fast to respond.
- Use the events endpoints to reconcile any events you may have missed during downtime.
Idempotency
Design your handler to be idempotent. Because a delivery could theoretically arrive more than once, track theevent.event_id you’ve already processed and skip duplicates.
Next steps
Verify webhooks
Confirm each request genuinely came from Formable.
Event catalog
Every event type and its payload schema.