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

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://developers.fireblocks.com/feedback

```json
{
  "path": "/docs/embedded-wallet-handling-returning-end-users",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# Handling Returning End Users

<Note>
  For Fireblocks' recommended embedded wallet solution, see [Dynamic Embedded Wallets](/docs/dynamic-embedded-wallets). The documentation below covers the legacy Embedded Wallet APIs and SDKs.
</Note>

# Overview

Let's say that your end user opens your web or mobile app, and you recognize after they log in that they have completed your onboarding (which included MPC key generation) and that their `walletId` is **walletId1** and their `deviceId` is **deviceId1**. What's next?

* Did they previously complete the MPC key generation process with this device?
* Does this device need to run the recovery process now?
* Does this device need to ask to join an existing wallet?

# How to find the status of a user's keys

After you initialize the EW SDK, you can call the `getKeysStatus` function. This function returns a `keyDescriptor`object that contains the status of every ECDSA and EdDSA key associated with that user.

* The **READY** status indicates that the user completed their onboarding and generated their MPC key shares, and their device is ready to perform all MPC-related actions.
* Any other status (e.g., **INITIATED**, **REQUESTED\_SETUP**, **SETUP**, **SETUP\_COMPLETE**) indicates that the user never completed MPC key share generation and that the `generateMPCKeys` function should be called again.

If the `keyDescriptor` object returns as empty, this means the user's mobile device doesn't have a key share and was never in the process of creating a key share for the specified `deviceId`. This indicates that the current device may need to go into recovery mode or join an existing wallet.
