> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dojah.io/llms.txt
> Use this file to discover all available pages before exploring further.

# How hosted flows work

> How Dojah EasyOnboard hosted flows work — build a verification flow in the dashboard, embed the widget, and receive the result.

A hosted flow is a ready-made, mobile-friendly verification journey you build in **EasyOnboard** — no backend required to get started. Design it once in the dashboard, then drop it into web or mobile.

<Tip>
  **Most teams start here.** Hosted flows handle ID capture, liveness, and document upload UI for you — you only handle the result.
</Tip>

## The lifecycle

<Steps>
  <Step title="Build the flow">
    In EasyOnboard, drag and arrange verification steps — ID types, liveness, document upload — and set rules. No code.
  </Step>

  <Step title="Publish & get a widget ID">
    Publishing the flow produces a `widget_id` that identifies it.
  </Step>

  <Step title="Embed or share it">
    Launch the flow with the web widget, a mobile SDK, or a hosted link — all driven by that `widget_id`.
  </Step>

  <Step title="User completes it">
    The user moves through the branded flow; Dojah runs the checks.
  </Step>

  <Step title="Receive the result">
    You get the outcome via client callbacks and — authoritatively — via a [webhook](/api-reference/core-concepts/webhooks-signatures). Always confirm server-side.
  </Step>
</Steps>

## Widget types

The `type` you launch with sets which experience loads:

| Type             | Use it for                                                  |
| ---------------- | ----------------------------------------------------------- |
| `custom`         | A flow you’ve configured in EasyOnboard (the usual choice). |
| `verification`   | A standard verification experience.                         |
| `identification` | Identity capture and lookup.                                |
| `liveness`       | A liveness-only check.                                      |

## Ways to run a flow

<Columns cols={3}>
  <Card title="Web widget" icon={<span className="dj-card-emoji">🌐</span>} href="/api-reference/hosted-flows-easyonboard/launch-a-flow">
    Embed the JavaScript `Connect` widget on your site.
  </Card>

  <Card title="Mobile & React SDKs" icon={<span className="dj-card-emoji">🧩</span>} href="/api-reference/widget-sdks/react">
    Launch the same flow from React, React Native, Flutter, iOS, or Android.
  </Card>

  <Card title="Results & webhooks" icon={<span className="dj-card-emoji">🔔</span>} href="/api-reference/hosted-flows-easyonboard/flow-results-webhooks">
    Receive and verify the outcome server-side.
  </Card>
</Columns>
