Webhooks allow the Leypal platform to push real-time notifications to your server the moment something happens — a signer completes a document, an identity verification finishes, or a signature is cancelled. Instead of polling the API every few seconds to detect changes, your endpoint receives a single HTTP POST request the instant the event occurs.
Why webhooks matter:
Real-time: Your system reacts immediately — no polling loops, no stale data
Reliable: Leypal retries failed deliveries automatically, so transient outages don't cause missed events
Automatic: All available events are delivered to your endpoint automatically — no filtering required
Common scenarios where webhooks are essential: updating a database record when a signature is completed, sending a confirmation email to a client, or triggering a downstream workflow when identity verification passes.
A publicly accessible HTTPS endpoint — localhost URLs will not work; Leypal must be able to reach your server from the internet
The ability to handle HTTP POST requests and return a response code within 30 seconds
HTTPS required: Leypal only delivers webhooks to https:// URLs. Plain http:// endpoints will be rejected at registration. For local development, use a tunneling tool such as ngrok or Cloudflare Tunnel.
Your webhook endpoint automatically receives all available events. There is no event filtering — every signature and identity verification event will be delivered to your endpoint.
Signature events you will receive:
Event Type
When it fires
signature.created
A new signature request is created
signature.signer_viewed
A signer views the document
signature.signer_accepted_terms
A signer accepts the terms
signature.signer_verified
A signer's identity verification completes successfully
signature.signer_signed
A signer signs the document
signature.signed
The document signing is completed
signature.completed
All signers have completed — document is fully signed
signature.reminder
A reminder is sent to a pending signer
signature.rejected
A signer has declined to sign
Identity verification events you will receive:
Event Type
When it fires
identity_verification.created
A new identity verification process is started
identity_verification.session_started
The user begins the verification session
identity_verification.document_front_uploaded
Front of ID document is uploaded
identity_verification.document_back_uploaded
Back of ID document is uploaded
identity_verification.liveness_started
Liveness check (selfie) begins
identity_verification.liveness_end
Liveness check completes
identity_verification.ml_pipeline_completed
The automated verification pipeline finishes
identity_verification.ml_pipeline_failed
The automated pipeline encountered an error
identity_verification.review_requested
Manual review has been requested
How to handle this: Build your webhook handler to filter events based on event.type in your application code. Ignore event types you don't need to process.
Respond as quickly as possible — ideally within 1-2 seconds. If your business logic takes longer, queue the event and process it asynchronously. Return the HTTP status code immediately after receipt.
Best practice: Return 200 OK immediately after receiving and queuing the event. Do not wait for your business logic to complete before responding. If your processing logic throws an exception, Leypal will retry the delivery even though you already processed it — build your handler to be idempotent (safe to run twice with the same event).
Leypal automatically retries failed deliveries to protect against transient outages on your server.
Attempt
Delay after previous attempt
1 (initial)
Immediately
2
~5 minutes
3
~5 minutes
4
~5 minutes
5
~5 minutes
Key details:
Maximum 5 attempts per webhook event — including the initial delivery
Exponential backoff with a ~5 minute base delay between retry attempts
After 5 failed attempts, the delivery is permanently marked as failed — no further retries
Failed events are visible in the Webhook History section of the Dashboard for the affected endpoint
You can manually replay a failed event from the Dashboard for debugging purposes
Monitoring tip: Set up alerting on your server for repeated 5xx responses on your webhook route. A sudden spike of errors on that route often means a code deployment broke your handler.