Skip to main content
Webhooks are HTTP POST requests that Urtentic sends to your application when specific events occur during the verification process. Instead of continuously checking the API for updates, your application receives instant notifications when verification statuses change.

Key Benefits

Real-time Updates

Instant notifications when verifications complete or fail without API polling

Secure & Reliable

Cryptographically signed payloads with automatic retry mechanism

Comprehensive Events

Verification lifecycle events, step completion, and error notifications

Selective Notifications

Choose which events to receive and filter by verification types

How Webhooks Work

1

Event Occurs

A verification process completes or changes status
2

Webhook Triggered

Urtentic prepares a webhook payload and cryptographically signs it
3

HTTP Request Sent

POST request sent to your configured endpoint
4

Response Processed

Your endpoint processes the event, responds, and retries if needed

Supported Events

Verification Lifecycle Events

Event TypeDescriptionWhen Triggered
verification_startedNew verification startedWhen POST /verifications is called
verification_inputs_completedUser submitted inputsWhen inputs are successfully submitted
verification_completedVerification finishedWhen verification reaches final status
verification_data_updatedData updatedWhen document data is manually updated
verification_abandonedVerification abandonedWhen verification is marked stale (>24 hours)

Step-Specific Events

Event TypeDescriptionProcess Types
step_completedIndividual step completedDOCUMENT_VERIFICATION, LIVENESS, EMAIL_CHECK, LOCATION_INTELLIGENCE, WATCHLIST_CHECK, VIDEO_AGREEMENT

Webhook Payload Structure

{
  "eventName": "verification_completed",
  "flowId": "wf_789012ghi345",
  "timeStamp": "2023-12-01T15:30:00.000Z",
  "resource": "/api/v1/verifications/id_jkl678mno901",
  "metadata": {
    "userId": "user_12345",
    "reference": "REF-67890"
  },
  "verificationStatus": "SUCCESS"
}

Payload Fields

Base Event Fields

FieldTypeDescription
eventNamestringEvent type identifier
flowIdstringUUID of the workflow
timeStampstringISO 8601 timestamp
resourcestringAPI resource path to the verification
metadataobjectCustom metadata provided during verification creation
The metadata object is completely flexible and defined by your application. Common fields include userId, reference, deviceId, sessionId, etc. This metadata is echoed back in all webhook notifications to help you correlate events with your users.

Verification Completed Fields

FieldTypeDescription
verificationStatusstringFinal status (SUCCESS, REJECTED, NEEDS_REVIEW, ABANDONED)

Step Completed Fields

FieldTypeDescription
idstringStep identifier
statusnumberHTTP status code (200 for success)
dataobjectStep-specific extracted data
stepobjectDetailed step information including timing and results

Security & Authentication

Webhook Signatures

Every webhook payload is signed using HMAC-SHA256 with your webhook secret:
POST /webhook HTTP/1.1
Host: yourapp.com
Content-Type: application/json
x-urtentic-signature: 5d41402abc4b2a76b9719d911017c592
x-urtentic-timestamp: 1701439800

Signature Verification

const crypto = require('crypto');

function verifyWebhookSignature(payload, signature, secret, timestamp) {
  const currentTime = Math.floor(Date.now() / 1000);
  if (Math.abs(currentTime - timestamp) > 300) {
    throw new Error('Webhook timestamp too old');
  }

  const secretBytes = Buffer.from(secret, 'base64');
  const expectedSignature = crypto
    .createHmac('sha256', secretBytes)
    .update(payload, 'utf8')
    .digest('hex');

  if (signature.startsWith('sha256=')) {
    signature = signature.substring(7);
  }

  if (!crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(expectedSignature, 'hex')
  )) {
    throw new Error('Webhook signature verification failed');
  }
  return true;
}

Best Practices

  • Always verify signatures to ensure webhooks are from Urtentic
  • Check timestamps to prevent replay attacks
  • Use HTTPS endpoints for webhook URLs
  • Return appropriate HTTP status codes (200 for success)
  • Process webhooks idempotently using the event ID

Retry Policy

Urtentic automatically retries failed webhook deliveries:
RetryDelay
InitialAfter 1 minute
SecondAfter 5 minutes
ThirdAfter 15 minutes
FourthAfter 1 hour
FinalAfter 6 hours
Webhooks are considered failed if: non-2xx response, no response within 10 seconds, network error, or SSL error.

Webhook Configuration

Webhook Settings
Configure your webhook endpoints in the dashboard to receive real-time notifications about verification events.