# User Onboarding

### User Onboarding <a href="#user-onboarding" id="user-onboarding"></a>

Joining Zodor is as easy as it gets. New users are walked through a step-by-step process to learn the Zodor ecosystem before they start their investment journey.

**Step 1:** A user signs up on the Zodor website or mobile app.

**Step 2:** A wallet is created automatically. The web app uses passkey/WebAuthn; mobile uses the device Secure Enclave (FaceID/TouchID). Behind the scenes, an EIP-7702 delegate (`ZodorDelegateAccount`) is set on the user's EOA preserving the user's address while enabling smart-wallet features.

**Step 3:** The user is asked to complete KYC. This step may be skipped initially but is mandatory before redeeming loyalty points or purchasing any asset token. KYC is performed off-chain by Sumsub, and the resulting attestation is committed on-chain as a Masque ID claim by `ZKKYCGate`.

**Step 4:** The full Zodor ecosystem becomes available Hub, Portfolio, Wallet, Community, Loyalty, and the Capital marketplace.

**Step 5:** The user joins the Loyalty Program, completes daily quests, refers friends, and starts earning AR Points, NFT Shards, and Level-Up Badges.

The first call after signup is `fullOnboard()` in the server SDK, which atomically:

1. Creates the Masque ID through `MasqueIdFactory`
2. Registers the identity in `ZodorIdentityRegistry` with jurisdiction
3. Deploys the smart wallet through `ZodorAccountFactory` (or sets the EIP-7702 delegate)
4. Issues the first claim through `ZodorClaimIssuer`

If any step fails, a backend cron (`reconcileIdentityOnboard`) retries until convergence users never see a half-onboarded state.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://whitepaper.zodor.io/user-experience/user-onboarding.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
