Payload Structure
When email analysis completes, Verisoul sends aPOST request to your configured webhook endpoint.
Example Success Payload
The
identity_intelligence section inside data.result is only present when the request was submitted with identity_intelligence: true.Error Payload
Field Reference
Top-Level Fields
| Field | Type | Description |
|---|---|---|
request_id | string | Unique identifier for this email intelligence request |
batch_id | string | null | Batch identifier, if the email was submitted as part of a batch |
project_id | string | Your Verisoul project ID |
event_type | string | Always email.intelligence.completed |
created_at | string | When analysis started (ISO 8601) |
completed_at | string | When analysis completed (ISO 8601) |
status | string | success or error |
data | object | null | Analysis results (present on success) |
error | object | null | Error details (present on failure) |
data.input
Echo of the submitted request, useful for correlating results.
| Field | Type | Description |
|---|---|---|
email | string | The email address that was analyzed |
claims | object | Claims submitted with the request (if any) |
data.result
| Field | Type | Description |
|---|---|---|
decision | string | Risk decision: high_trust, trusted, moderate, risky, or high_risk |
risk_score | number | Overall risk score from -1 (high trust) to 1 (high risk) |
trust_signals | string[] | List of detected trust signals |
risk_signals | string[] | List of detected risk signals |
Decision Buckets
Every email receives adecision based on the overall risk_score:
| Decision | Score Range | Meaning |
|---|---|---|
| high_trust | below -0.60 | Strong trust signals across multiple dimensions |
| trusted | -0.60 to -0.20 | Positive trust indicators present |
| moderate | -0.20 to 0.20 | Neutral — no strong signals in either direction |
| risky | 0.20 to 0.60 | Some risk indicators detected |
| high_risk | above 0.60 | Strong risk signals — likely fraudulent or invalid |
data.result.domain
| Field | Type | Description |
|---|---|---|
risk_score | number | Domain risk score from -1 to 1 |
fqdn | string | Fully qualified domain name |
apex | string | Root/apex domain |
type | string | Domain classification (see domain types) |
age_years | number | Domain age in years |
country | string | Country associated with the domain |
data.result.email
| Field | Type | Description |
|---|---|---|
username | string | Local part of the email address |
normalized | string | Canonicalized email address |
first_seen_at | string | Earliest known date this email appeared in data sources |
age_years | number | Estimated age of the email address in years |
seen_countries | string[] | Countries where this email has been observed |
data.result.deliverability
| Field | Type | Description |
|---|---|---|
risk_score | number | Deliverability risk: -1 (deliverable) to 1 (not deliverable) |
send_recommendation | string | send, send_with_caution, or do_not_send |
data.result.breach_intelligence
| Field | Type | Description |
|---|---|---|
breach_count | number | Total number of data breaches this email appears in |
trusted_breach_count | number | Number of breaches from verified/trusted sources |
breach_list | object[] | Detailed list of breaches (name, date, data types exposed) |
data.result.identity_intelligence
Only present when identity_intelligence: true was set in the request.
| Field | Type | Description |
|---|---|---|
match_risk_score | number | Identity match risk from -1 (verified match) to 1 (no match / ghost identity) |
online_accounts | string[] | Platforms where the email is registered (e.g., google, facebook, linkedin) |
connected_names | string[] | Names associated with this email across data sources |
connected_phones | string[] | Phone numbers linked to this email |
claim_matches | object | Results of matching submitted claims against identity data |
data.result.identity_intelligence.claim_matches
| Field | Type | Description |
|---|---|---|
name | string | match, partial_match, no_match, or skipped |
phone | string | match, partial_match, no_match, or skipped |
country | string | match, partial_match, no_match, or skipped |
error
| Field | Type | Description |
|---|---|---|
email | string | The email address that failed during analysis |
code | string | Error code (e.g., internal_server_error) |
message | string | Human-readable description of the failure |
