> This page is for Financial Rider Flow.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://infonite.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://infonite.dev/_mcp/server.

# On Flow Started

POST 

Triggered when your customer opens the Financial Rider experience and the session goes live.

`data` is the browser context it was opened with — origin, user agent, address —: the first line of the session's audit trail. Nothing has been connected yet.

**The schema below describes `data` decrypted — on purpose**, so this reference has a model you can read and code against. What arrives at your endpoint depends on how the session was created:

* **With an `aes_key`**: `data` is a single string, `aes::Base64(IV + Ciphertext + Tag)`. Decrypt it and you get exactly the object documented below. The walkthrough and the code are in [Payload Encryption](/guides/payload-encryption).
* **Without an `aes_key`**: `data` is **not in the body at all** — absent, not `null`. The event still tells you what happened.

Events are delivered **at least once**: deduplicate by `session_id` and `event`.

**Answer `2xx` as soon as the payload reaches you**, whatever your processing does with it afterwards: any other status is recorded as a failed delivery even though the event arrived. [Answering a delivery](/guides/webhooks#answering-a-delivery) has the handler to copy.

Reference: https://infonite.dev/flows/financial-rider/api-reference/financial-rider-api/webhooks/webhook-financial-rider-started

## Request

### Payload

- `event_class` ("FinancialRiderV1FlowEvent", required) — Payload class discriminator — always this value for Financial Rider events.
- `app_id` (string, required)
- `customer_id` (string, required)
- `session_id` (string, required)
- `producer` ("financial-rider", required) — The flow that produced the event.
- `event` ("financial-rider:started", required) — The event type: `started`.
- `status_code` (enum, required) — Describes the status of a flow.
  - Allowed values: `READY`, `WAITING`, `COMPLETED`, `FAILED`, `SYSTEM_CANCELLED`, `CLIENT_CANCELLED`, `CUSTOMER_CANCELLED`, `TIMED_OUT`, `CONFIGURATION_ERROR`
- `date` (string, optional)
- `status_message` (string, optional, nullable)
- `data` (FlowOpenContext, optional) — The browser context the session was opened with. Documented decrypted: on the wire it is the `aes::…` string of this object when the session carries an `aes_key`, and absent when it does not.

## Types

### FlowOpenContext

Where your customer opened the experience: the first line of the session's audit trail — the published shape of `FlowOpenCtx`, under a name of its own so a reference never calls it `Out`.

- `origin` (string, optional) — The page the experience was opened from, as the browser reported it.
- `user_agent` (string, optional) — The browser and device, as they reported themselves.
- `browser_session` (string, optional) — The browser's own session identifier, when it sent one.
- `user_ip` (string, optional) — The address the request came from.