Event Notifications & Webhooks
FrankieOne uses webhooks to send real-time notifications about events in your system, such as a workflow completing or an entity’s risk profile changing. This allows you to build automated, event-driven integrations.Setup
To configure webhook endpoints, contact [email protected] with:- Your designated webhook endpoint URL(s)
- Your contact email
Webhook endpoints are configured by FrankieOne. There is no self-service API for webhook management.
Available Notifications
Workflow Events
| Function | Description |
|---|---|
WorkflowComplete | Sent when a workflow execution finishes, providing the final status and outcome. Also sent when there is an error during workflow execution — use the functionResult field to distinguish success from error. |
IDV Biometrics Events
| Function | Description |
|---|---|
TOKEN_REQUESTED | Sent when a token is requested for IDV biometrics. |
ONB_URL_GENERATED | Sent when an onboarding URL is successfully generated. |
RESULTS_RETRIEVED | Sent when IDV biometrics results are successfully retrieved. |
OCR_PROCESSED | Sent when OCR processing is completed. |
functionResult field to distinguish success from error.
Entity Profile Events
| Function | Description |
|---|---|
EntityStatusChanged | Sent when the overall status of an entity profile changes. |
EntityRiskChanged | Sent when the risk level of an entity profile changes. |
EntityProfileUpdated | Sent when an entity profile is updated. |
EntityAssigneeChanged | Sent when the assignee of an entity profile changes. |
Migrating from V1? Some webhook function names differ from their V1 counterparts and do not follow the same naming conventions. For example, V1’sEntityStatusChangeisEntityStatusChangedin V2. Refer to the tables above for the correct V2 function names.
Webhook Payload
Base Payload Fields
These fields are present on every webhook notification.| Field | Type | Description |
|---|---|---|
version | string | The API version of the webhook payload. |
notificationType | string | The category of notification (e.g., EVENT). |
function | string | The specific event that triggered the notification (e.g., WorkflowComplete). |
functionResult | string | The outcome of the event. See functionResult Values below. |
requestId | string | The unique identifier of the API request that initiated the event. |
entityId | string | The unique identifier of the entity related to the event. |
entityType | string | The type of entity (e.g., INDIVIDUAL). |
entityCustomerReference | string | Your customer reference identifier, used for linking notifications to your internal records. |
serviceName | string | The name of the service profile involved. |
message | string | A human-readable summary of the event. |
channel | string | The channel source from which the webhook was triggered. |
functionResult Values
ThefunctionResult field indicates the outcome of the event.
| Value | Description |
|---|---|
SUCCESS | The event completed successfully. |
ERROR | Unexpected System Error contact support |
FAILURE | Unexpected System Failure contact support |
Event-Specific Fields
Depending on thefunction, additional fields may be present in the payload.
| Function | Additional Fields | Description |
|---|---|---|
WorkflowComplete | workflowExecutionId, workflowName, overallStatus | Identifiers and final status of the completed workflow. |
EntityStatusChanged | overallStatus | The new overall status of the entity profile. |
EntityRiskChanged | overallRiskStatus | The new risk level of the entity profile. |
overallStatus corresponds to the workflow execution result. Possible values from the OpenAPI spec (Workflow-Execution-ResultEnum):
UNCHECKED · IN_PROGRESS · REVIEW · PASS · FAIL · COMPLETE · INCOMPLETE · NEEDS_APPROVAL · APPROVED · REJECTED · BLOCKED · CLEAR · URGENT · MONITOR
overallRiskStatus corresponds to the risk level. Possible values from the OpenAPI spec (Risk-Level):
UNKNOWN · LOW · MEDIUM · HIGH · UNACCEPTABLE
Endpoint Format
FrankieOne appends therequestID to your configured webhook endpoint:
Payload Examples
Workflow Complete (Success)
Entity Risk Changed
Handling Notifications
1. Receive the Webhook
Your endpoint should respond with a200 or 202 HTTP status code to acknowledge receipt.
- If your endpoint returns a
5xxor4xxstatus code (other than400), the system retries delivery. - A
400response stops retries immediately.
2. Process the Notification
Use thenotificationType and function fields to determine the appropriate action. Use functionResult to distinguish successful events from errors.
3. Retrieve Workflow Execution Results
After receiving aWorkflowComplete notification, retrieve the full workflow execution results by calling:
entityId, serviceName, workflowName, workflowExecutionId) are provided in the webhook payload.
Required headers:
| Header | Description |
|---|---|
api_key | Your FrankieOne API key. |
X-Frankie-CustomerID | Your FrankieOne customer ID. |
Security
HTTPS and IP Whitelisting
All webhook payloads are delivered over HTTPS. FrankieOne supports IP whitelisting so you can restrict incoming requests to known FrankieOne IP addresses.JWT Authentication (Optional)
You can enable JSON Web Token (JWT) signing for additional payload verification. Contact [email protected] to enable JWT verification for your account. When enabled, webhook payloads include a JWT with the following structure: Header:| Field | Description |
|---|---|
sub | The subject. Present for portal-triggered notifications only. |
iat | Issued-at timestamp (UTC epoch, seconds). |
iss | Issuer. Fixed value: io.frankiefinancial.kycaml. |
- RSA-4096 bit private key encryption.
- A customer-specific public key is provided for verification.
- HTTPS transport with secure algorithms.
Retry Mechanism
FrankieOne retries failed webhook deliveries using the following approach:- Initial Retry: Immediately after the first failure.
- Exponential Backoff: Subsequent retries occur at increasing intervals.
- Maximum Retries: Up to 50 attempts over approximately 24 hours.
Best Practices
- Respond quickly. Return a
200or202from your webhook endpoint as fast as possible. Perform any heavy processing asynchronously after acknowledging receipt. - Handle duplicates. Due to retries, your endpoint may receive the same notification more than once. Use the
requestIdfield to deduplicate. - Check
functionResult. The samefunctionname (e.g.,WorkflowComplete,TOKEN_REQUESTED) is used for both success and error events. Always checkfunctionResultto determine the outcome. - Use the retrieval endpoint. Webhook payloads contain summary information. For full workflow execution details, always call the retrieval endpoint using the identifiers provided in the payload.
Migrating from V1
Key differences between V1 and V2 webhook notifications:| Aspect | V1 | V2 |
|---|---|---|
| Function names | EntityStatusChange | EntityStatusChanged |
EntityRiskChange | EntityRiskChanged | |
EntityProfileChange | EntityProfileUpdated | |
EntityAssigneeChange | EntityAssigneeChanged | |
IDVTokenRequested | TOKEN_REQUESTED | |
IDVResultsRetrieved | RESULTS_RETRIEVED | |
IDVOCRProcessing | OCR_PROCESSED | |
Per-operation names (e.g., CreateCheckEntity) | WorkflowComplete (single event for all workflow completions) | |
| Payload fields | checkId present in some payloads | workflowExecutionId, workflowName, entityType, entityCustomerReference, serviceName, version, channel added |
| Result retrieval | GET /v1/retrieve/{requestID} | GET /v2/individuals/{entityId}/serviceprofiles/{serviceName}/workflows/{workflowName}/executions/{workflowExecutionId} |