Embedded Orders vs Bridge Token
Truv offers two integration methods. Choose based on your use case:| Embedded Orders | Bridge Token | |
|---|---|---|
| When to use | You don’t know the user’s employer upfront, or you need Truv to manage the order lifecycle (notifications, reminders, status tracking) | You already know the employer and want full control over the UI and data flow |
| Create via | POST /v1/orders/ | POST /v1/users/{user_id}/tokens/ |
| Products parameter | products array: ["income"], ["assets"], ["income", "assets"] | product_type string: "income", "employment", "assets" + optional allowed_products array |
| Bridge initialization | Pass bridge_token from order response, set isOrder: true | Pass bridge_token from token response, isOrder not set |
| Notifications | Truv can send email/SMS to the user with a verification link | You handle all user communication |
| Webhooks | order-status-updated + task-status-updated | task-status-updated only |
| Data retrieval | Via order ID or link ID | Via link ID only |
| Best for | Hosted flows, multi-employer orders, caseworker-initiated verification | Inline embedded flows where you control the full UX |
Most integrations use Embedded Orders. Use Bridge Token only when you need direct control over the connection flow and already have the employer identified. See Embedded Orders overview and Bridge Widget overview for full implementation guides.
Create an order
Request the right products
Specify only the products your use case requires. When you includeincome in the products array, employment data is automatically included. You do not need to pass both.
Use external_user_id for user continuity
Pass your internal user identifier as external_user_id when creating orders. This maps to a persistent Truv user and carries forward across every order you create for that person.
external_user_id, the user’s previous connections are remembered. For example, if a user connected to ADP on their first order and you create a new order with the same external_user_id, the orders landing page will already show their ADP connection, reducing friction and improving completion rates.
Optimize conversion
Skip search with deeplinking
If you already know the user’s employer or payroll provider, pass acompany_mapping_id when creating the order. This skips the search screen and drops users directly into the login flow, one of the highest-impact conversion improvements you can make.
company_mapping_id values using the Companies API.
Deeplinking guide →
Send follow-up reminders
When a user leaves without completing verification, Truv can automatically send email and SMS reminders. Suppress notifications during the in-app session, then enable them after the user exits.Refresh data without re-authentication
When you need updated income or employment data for an existing user, create a data refresh order instead of asking them to reconnect. Truv reuses existing account links. The user doesn’t need to do anything.User experience
Wait for the right event
Use theCOMPLETED event with source: "order" before advancing the user in your application. Don’t use onSuccess or onClose. The order may still have pending connections.
Handle errors gracefully
Listen forERROR events from the connection widget (source: "bridge"). The error payload uses the error object with error_code. See Bridge Events for all codes.
Webhooks
Process tasks as they complete
Handletask-status-updated webhooks to process data as each connection finishes. Don’t wait for the full order to complete.
Validate webhook signatures
Always verify theX-WEBHOOK-SIGN header to confirm requests are from Truv. Use the raw request body. Never use parsed JSON.
See Webhook Security for full verification examples in multiple languages.
Security
- Never expose API credentials in client-side code. Use
bridge_tokenfor frontend operations only. - Don’t log sensitive data (SSN, income figures, account numbers)
- Encrypt verification data at rest
- Implement data retention policies. Don’t store data longer than needed.
- Validate webhook signatures on every request
Monitoring
Track these metrics to monitor integration health:- Order completion rate: percentage of orders where the user finishes at least one connection
- Average connections per order: indicates whether users are connecting all requested accounts
- Error rates by type: identify provider-specific or credential issues
- Webhook delivery success: ensure you’re receiving all status updates
- Time to completion: how long users take to finish the verification flow
Next steps
Embedded Orders Guide
Complete implementation walkthrough
Deeplinking
Skip employer search for higher conversion
Follow-up
Automatic email and SMS reminders
Data Refresh
Refresh data without re-authentication