Web-Hooks (V2)
Web-Hooks (V2)
Web-Hooks (V2) is the cleaner customer-facing web-hook payload for Hybrid Experience journey lifecycle updates.
It keeps the same delivery model as existing Aarthik Labs web-hooks:
- Aarthik Labs sends
POSTrequests to your configured HTTPS web-hook URL. - The event type remains
journey.snapshot. - Deliveries are signed with the existing Aarthik Labs web-hook signature headers.
- Delivery is at least once, so your receiver should be idempotent.
The main difference is the body. V2 sends a cleaner, stage-aware payload that includes only the information that is useful for the lifecycle stage being delivered.
In this page, AA means Account Aggregator.
V2 is opt-in and enabled by Aarthik Labs at the application level. Applications that are not enabled continue receiving the existing web-hook payload.
Delivery Contract
Delivery Headers
Every V2 delivery uses the same delivery headers as existing web-hooks.
For signature verification details, use the same process described in Web-Hooks.
Top-Level Envelope
Every V2 payload uses this top-level envelope.
Use whichever naming style fits your system. For example, JavaScript systems may prefer tenantID, while data warehouses may prefer tenant_id.
Lifecycle Stages
Hybrid Experience can send the following V2 lifecycle stages.
Hybrid Offer Paths
A Hybrid journey can receive both non-AA and AA updates.
Common paths include:
- non-AA offers arrive, then the borrower accepts a non-AA offer
- non-AA offers arrive, then an Account Aggregator URL becomes available, then AA-backed offers arrive
- no non-AA offers arrive, then an Account Aggregator URL becomes available, then AA-backed offers arrive
- no eligible offers arrive after all relevant offer discovery paths complete
Because AA-backed offers can arrive after earlier non-AA offers, your receiver should treat OFFERED as additive. A later OFFERED payload can contain new offers for the same journey.
Stage Contents
V2 includes only the sections that make sense for the lifecycle stage being delivered.
Missing sections are intentionally absent for that stage. For example, if a PROFILED payload does not include lenders, it does not mean lender data was deleted. It means lender data is not part of the PROFILED snapshot.
STARTED Shape
STARTED is intentionally small. It confirms that the journey exists.
PROFILED Shape
PROFILED adds borrower profile information.
ACCOUNT_AGGREGATOR Shape
ACCOUNT_AGGREGATOR is sent when an Account Aggregator URL is available for the borrower.
This stage includes both naming styles:
accountAggregator.expiresAtaccount_aggregator.expires_at
Both objects carry the same values.
Only ACCOUNT_AGGREGATOR includes accountAggregator and account_aggregator.
OFFERED Shape
OFFERED includes lenders and offers that are available for the borrower.
NOT_OFFERED Shape
NOT_OFFERED includes journey, borrower, and lender metadata. It does not include an offers array.
OFFER_ACCEPTED, LENDER_REDIRECTED, And REJECTED Shapes
These stages use the same broad structure as OFFERED:
journeyborrowerlendersoffers, when offers are known for the journey
The main changes are the stage in data.status and journey.status, plus the latest offer flags and verification fields.
For example, an accepted-offer snapshot marks the accepted offer with accepted: true.
For LENDER_REDIRECTED, use the same shape with data.status: "LENDER_REDIRECTED" and journey.status: "LENDER_REDIRECTED".
For REJECTED, use the same shape with data.status: "REJECTED" and journey.status: "REJECTED". Known lenders and offers may still be present to help reconciliation and support workflows.
DISBURSED Shape
DISBURSED is the only V2 stage that includes installments.
Object Reference
journey
journey identifies the borrower journey and the latest lifecycle state. journey.id is present in every lifecycle stage and matches data.journey.id in Hybrid Start/Hosted API responses and data.journeyID in Hybrid Offers API responses.
borrower
borrower is present from PROFILED onward.
accountAggregator And account_aggregator
These objects appear only in ACCOUNT_AGGREGATOR snapshots.
lenders
lenders is an object keyed by borrower-visible lender name.
If two lenders have the same visible name, both entries are included with unique keys.
offers
offers is present for stages where offer details are available.
installments
installments appears only in DISBURSED snapshots.
Recommended Receiver Logic
- Verify the signature before trusting the payload.
- Deduplicate using
X-AL-Event-ID. - Read
data.status. - Upsert the latest
journey,borrower,lenders, andoffersdetails into your system when those sections are present. - Treat
ACCOUNT_AGGREGATORas an action signal to make the AA URL available to the borrower. - Treat
OFFEREDas additive. A journey can receive a laterOFFEREDsnapshot when AA-backed offers arrive. - Treat missing optional sections as intentionally absent for that stage.
- Ignore unknown fields so your receiver remains forward-compatible.
Polling And Web-Hooks
Hybrid offer polling and web-hooks complement each other.
- Polling keeps your borrower-facing UI responsive while the borrower is active.
- Web-hooks give your back-end durable lifecycle updates even if the borrower closes the screen, completes Account Aggregator later, or moves into lender-managed steps.
- When an Account Aggregator URL becomes available, V2 can send an
ACCOUNT_AGGREGATORweb-hook so your back-end can reconcile the same milestone.
Enabling V2
Web-Hooks (V2) is enabled by Aarthik Labs for a specific application. Contact Aarthik Labs to enable it for your integration.
Until V2 is enabled, your application continues receiving the existing web-hook payload.