Configure webhook endpoints separately for Sandbox and Production.
Set up webhooks
Configure webhook endpoints in the Truv Dashboard:- Navigate to Development → Webhooks
- Enter your endpoint URL
- Save the configuration
Test webhooks
- Use Truv Bridge in the Dashboard Emulator to trigger webhook events in sandbox
- Use tools like ngrok to expose a local development server:
Webhook payload structure
All webhook requests include these standard fields:Headers
| Header | Value |
|---|---|
User-Agent | Truv-Webhook-Service/2.0 |
X-WEBHOOK-SIGN | HMAC-SHA256 signature for verification |
HTTP header names are case-insensitive per RFC 7230.
Body Fields
Every webhook payload includes these common fields:| Field | Description |
|---|---|
webhook_id | Unique identifier for this webhook request |
event_type | The event classification (see Events Reference) |
event_created_at | Timestamp when the event occurred |
updated_at | Timestamp for sequencing events |
user_id | Associated Truv user identifier |
template_id | Associated template, if applicable (nullable) |
Example Payload
Event types
Truv sends webhooks for these categories of events. See the dedicated event reference pages for full payloads and field descriptions.Order Events
order-status-updated, order-refresh-failedTask Events
task-status-updated and all data object events (employment-created, statements-created, etc.)Account Link Events
link-connected, link-disconnected, link-deletedSecurity
Every webhook includes anX-WEBHOOK-SIGN header with an HMAC-SHA256 signature. Verify it against the raw request body using your Access Secret before processing the event.
See Webhook Security for verification code examples in Python, Node.js, Go, Ruby, and C#, along with IP allowlisting and delivery behavior details.
Timeouts and retries
| Behavior | Detail |
|---|---|
| Timeout | Your endpoint must respond with a 2xx status within 10 seconds |
| Redirects | 3xx responses are followed |
| Retries | 4xx and 5xx responses trigger up to 3 retry attempts at 30-second intervals |
| Blocking | After 3 consecutive failures, webhook delivery to your endpoint is blocked |
Event ordering
Webhooks are delivered in event order. For example,full_parse fires before done. However, network conditions can cause delays in delivery.
Handle webhooks
Best Practices
Respond within 10 seconds
Respond within 10 seconds
Return a
200 response quickly. Process the webhook data asynchronously if needed:Handle duplicates with idempotency
Handle duplicates with idempotency
Webhooks may be delivered more than once. Use the
webhook_id field for idempotency:Always verify signatures
Always verify signatures
Never process a webhook without verifying the
X-WEBHOOK-SIGN header. See Security above.Track the task-status-updated event
Track the task-status-updated event
The
task-status-updated event is the primary signal for monitoring connection progress. Key statuses to handle:done: All data has been downloaded and processed. Fetch verification reports.login_error: Authentication failed. The user may need to retry.mfa_error: MFA verification failed.config_error: Provider configuration issue.
Troubleshooting
| Issue | Solution |
|---|---|
| Not receiving webhooks | Verify your URL is configured under Development → Webhooks for the correct environment |
| Signature verification failing | Ensure you’re using your Access Secret (not Client ID) and hashing the raw body |
| Timeouts | Respond with 200 immediately, process asynchronously |
| Blocked endpoint | Check for 3+ consecutive failures. Fix the issue and reconfigure the endpoint |
Endpoints
Use the endpoints below to manage webhooks programmatically.Next steps
Connection Lifecycle
Understand task status flow and error states