Webhooks Overview & Listener Integration
Onbo Webhooks deliver real-time notifications directly to your server whenever an onboarding job completes automated decisioning or human manual review.
Webhooks eliminate the need to poll Onbo APIs and allow your application backend to trigger downstream business workflows (such as account creation, employee activation, or risk flags) instantly.
Supported Lifecycle Events
Onbo supports two core lifecycle event types:
| Event Type | Trigger Point | Outcomes Carried |
|---|---|---|
application.decision | Fired when automated processing finishes for a job. | APPROVED, REVIEW, DECLINED, ERROR, EXISTING_CUSTOMER |
application.reviewed | Fired when an operations agent completes a human review. | APPROVED, DECLINED, SUSPICIOUS |
Key Event Characteristics
- Event Identifier (
event.id): Every webhook delivery carries a unique ULID event identifier inevent.id. This identifier remains constant across retries for the same event dispatch. - Multiple Events per Job: An onboarding job that requires human review will fire an
application.decisionevent (carrying outcomeREVIEW), followed later by anapplication.reviewedevent once reviewed. - Self-Contained Payloads: Both event types carry the complete application state, personal details, document URN references, and verification results. You do not need to stitch multiple webhooks together to inspect results —
application.reviewedis a full payload plusreviewDetails, not a delta against the decision event.
Client Listener Requirements
Your webhook listener is an HTTPS endpoint hosted on your server infrastructure that receives HTTP POST notifications from Onbo.
Endpoint Requirements
- HTTPS Protocol: Your endpoint must be accessible over HTTPS with a valid TLS certificate. Plain HTTP endpoints are rejected.
- HTTP Method: Must accept
POSTrequests. - Content-Type: Requests carry
Content-Type: application/json. - Response Time: Your server must respond within 15 seconds (default timeout).
- Success Status Code: Your server must respond with a 2xx HTTP status code (e.g.
200 OKor204 No Content) to acknowledge receipt.
Delivery Guarantees & Retries
Onbo processes outbound webhooks through a resilient queue manager providing at-least-once delivery guarantees.
Retries & Exponential Backoff
If your listener endpoint is unreachable, times out (> 15 seconds), or returns a non-2xx status code (e.g. 500 Server Error, 503 Service Unavailable, 404 Not Found), Onbo automatically queues retries with exponential backoff:
- Maximum Retries: Up to 10 retry attempts by default.
- Circuit Breaker: If your endpoint consistently fails across multiple events, a per-host circuit breaker protects your endpoint from traffic overload while flagging delivery failures in your Onbo Dashboard.
Idempotency Guidelines for Listeners
Because webhooks use at-least-once delivery, network glitches or transient timeouts may cause your listener to receive the same event notification more than once.
Best practices for handling duplicate deliveries:
- Track Processed Event IDs: Store
event.idfrom the payload envelope in your database upon receipt. - Deduplicate before Processing: Before processing an incoming webhook, verify whether
event.idhas already been handled. If already processed, immediately return200 OKwithout re-running business logic. - Job State Ordering: Check
event.occurredAtor compareapplicationDetails.statusto ensure out-of-order retries do not overwrite newer state changes in your application. Compare the status case-insensitively — it is carried verbatim, and its casing varies by how the state was reached.
Listener Security & Authentication
Onbo supports two auth modes for securing webhook deliveries:
1. HMAC-SHA256 Signature (Recommended)
When configured with HMAC authentication, Onbo includes an X-IdMission-Signature header with every request:
X-IdMission-Signature: t=1756500000,kid=whsec_a1b2c3d4,v1=9f8e7d6c5b4a...Your server verifies the signature using your secret key before processing the payload. See Verifying Signatures for the full verification procedure.
2. Custom Extra Headers
If your API gateway or webhook receiver requires static tokens, you can configure custom static headers in the Onbo Dashboard (e.g., Authorization: Bearer <your_secret_token> or X-Custom-Auth: <secret>).
Snapshot API Fallback
If webhooks are temporarily disabled, unconfigured, or failing due to listener downtime, your backend can pull full job data at any time via the Get Job Data API:
POST https://portal.idmission.com/api/get-job-data
Content-Type: application/json
X-Api-Key-Id: urn:apikeysv1:prod:region:company:YOUR_KEY_UUID
X-Api-Key-Secret: YOUR_API_KEY_SECRET
{
"jobId": "019fd6b7-3def-7ece-bd47-788508d3424d"
}The response body from get-job-data is identical to the webhook payload format, excluding the top-level event envelope object. See Get Job Data API for details.
Next Steps
- Read Verifying Signatures to implement HMAC security in your listener.
- Explore the complete Webhook Payload Reference for object schemas and PII modes.