Webhooks
Receive envelope and template events at your own HTTPS endpoint instead of polling the API.
Rather than constantly polling for updates, Webhooks allow your application to receive immediate updates as users interact with Templates and Documents. To receive Webhook calls, you must provide an endpoint within your app reachable via an HTTPS POST call. When enabled, your endpoint will be called once per event.
To enable Webhooks, visit your Organization Settings panel in the Verdocs Dashboard and open Developer Settings. Here you can configure your Webhook endpoint and the events you wish to receive:
Webhook Events
Select an event to see the full TypeScript shape of its request body and an example. All dates in payloads are ISO 8601 strings.
Envelope events
POST
envelope_created// The JSON body POSTed to your endpoint. Dates are ISO 8601.interface WebhookRequest { // Unique per delivery. Retries and resends reuse it. id: string; event: 'envelope_created'; created_at: string; organization_id: string; data: EnvelopeBase;}interface EnvelopeBase { id: string; name: string | null; status: | 'pending' | 'in progress' | 'complete' | 'declined' | 'canceled' | 'expired'; profile_id: string | null; organization_id: string | null; template_id: string | null; sender_name: string | null; sender_email: string | null; visibility: 'private' | 'shared'; // True when Verdocs doesn't email or text recipients no_contact: boolean; // Reminder intervals, in milliseconds initial_reminder: number | null; followup_reminders: number | null; max_reminder_days: number; next_reminder: string | null; expires_at: string | null; canceled_at: string | null; signed: boolean; brand_key: string | null; // Custom data supplied when the envelope was created data: Record<string, unknown> | null; created_at: string; updated_at: string;}Recipient events
Template events
Organization events
POST
envelope_created// The JSON body POSTed to your endpoint. Dates are ISO 8601.interface WebhookRequest { // Unique per delivery. Retries and resends reuse it. id: string; event: 'envelope_created'; created_at: string; organization_id: string; data: EnvelopeBase;}interface EnvelopeBase { id: string; name: string | null; status: | 'pending' | 'in progress' | 'complete' | 'declined' | 'canceled' | 'expired'; profile_id: string | null; organization_id: string | null; template_id: string | null; sender_name: string | null; sender_email: string | null; visibility: 'private' | 'shared'; // True when Verdocs doesn't email or text recipients no_contact: boolean; // Reminder intervals, in milliseconds initial_reminder: number | null; followup_reminders: number | null; max_reminder_days: number; next_reminder: string | null; expires_at: string | null; canceled_at: string | null; signed: boolean; brand_key: string | null; // Custom data supplied when the envelope was created data: Record<string, unknown> | null; created_at: string; updated_at: string;}