> **Can't find what you're looking for?** Use `search_docs` on the docs MCP server at `https://www.openfort.io/api/mcp` to find what you need.
>
> **Have feedback?** Use `submit_feedback` on the same MCP server.

# Migrating to Openfort

Migrating from one auth and embedded wallet provider to another involves moving users, wallets, and assets. This guide covers migration strategies depending on your use case. At the end, you'll find tips and techniques to ensure the migration goes smoothly.

:::tip
Migrations can get complex. You can [book a call with us](https://cal.com/joalavedra) for guidance.
:::

:::info
If you don't want to migrate yet, but want to start using Openfort alongside your existing provider, you can evaluate our SDK independently or run both providers in parallel during a transition period.
:::

Use this flow chart to identify the right migration strategy:

![Migration guide decision flow](https://www.openfort.io/images/blog/migration_fd640f8de5.png?updated_at=2026-01-23T12:41:58.681Z)

## Migration path A: You only have a front-end "connect wallet" flow

You built your own front-end wallet connector or use Rainbowkit/ConnectKit. There is no SIWE, no issuing JWTs, and mostly a front end.

### Recommended approach

Swap out the modals. If you use wagmi, Openfort integrates with your existing setup through the [wagmi connector](https://www.openfort.io/docs/products/embedded-wallet/react/wallet) and the [Rainbowkit guide](https://www.openfort.io/blog/migrate-from-rainbowkit). After the initial update, you can stay on connect-only mode and not store any user info with Openfort, or start adding features like gas sponsorship and session keys.

## Migration path B: You store wallet info somewhere and a wallet is a user

You built your own front-end wallet connector or use Rainbowkit/ConnectKit, and implemented SIWE on your own, authenticating users and creating sessions for them.

### Recommended approach

For front-end changes, follow path A above. In addition, switch your SIWE flow to Openfort's [Ethereum wallet authentication](https://www.openfort.io/docs/configuration/wallet-auth). You don't need to import these users ahead of time: the first time a user signs in with their wallet, they verify ownership via SIWE, Openfort creates the user with that wallet address linked and returns a JWT, and the migration is complete.

## Migration path C: You have users, but no embedded wallets

You use Supabase, Firebase, or another user management system, or created something on your own. You store your users' emails and basic info.

### Recommended approach

Move your users to Openfort:

1. **Keep or switch your auth** - If you keep Supabase, Firebase, or another provider, connect it as a third-party auth provider (for example, [Supabase](https://www.openfort.io/docs/configuration/external-auth/supabase) or [Firebase](https://www.openfort.io/docs/configuration/external-auth/firebase)). Otherwise, your users sign in with Openfort Auth.
2. **Pregenerate wallets for your users** - Optionally, call the [pregenerate endpoint](https://www.openfort.io/docs/products/embedded-wallet/server/pregenerate-wallets) once per user with their email or third-party user ID. It creates the Openfort user and its embedded wallets, so addresses exist before the user logs in. Keep any other profile data in your own database.
3. **Seamless re-authentication** - When they log in via Openfort, their email addresses or social login credentials are verified independently as part of the auth flow, and a JWT is issued upon successful login.

When your users log in again, Openfort verifies their identity and issues secure tokens.

## Migration path D: You have users, and they have embedded EOA wallets

You use an embedded wallets provider such as Privy or Turnkey, or have built a simple KMS-based key management system on your own.

### Recommended approach

**Two options:**

1. Keep current users in their existing embedded wallets and generate Openfort wallets for new users
2. Migrate existing wallet users to Openfort

**Keep current users:**

1. Switch to Openfort auth
2. When user logs in with email, check if they have an existing account:
   * If so, redirect them to old login flow (for legacy users with assets)
   * If they don't, create an Openfort-powered embedded wallet for them

## Migration path E: You have users, and they have smart wallets (accounts)

Your users have an EOA embedded wallet, but it only serves as a signer for an smart account (7702, Safe, ZeroDev, Thirdweb,and so on). You need to add the Openfort-powered embedded wallet as a second signer to the AA layer, or swap signers from the old embedded wallet to the Openfort one.

Hence, you’ll want to add the Openfort-powered embedded wallet as a second signer to the smart account, or alternatively swap signers from the old embedded wallet one to the Openfort one.

:::tip
This is non-trivial. [Book a call](https://cal.com/joalavedra) before starting this process.
:::

## Extra migration techniques and tips

### Asset transfers

If your users have assets in their existing embedded wallets, ensure they move those to their new Openfort-powered embedded wallets. Build a migration flow for your users using your own UI to prompt asset transfer, or provide instructions to transfer assets manually.

### Webhooks

As you import your users into Openfort, you can notify other systems and take further action with webhooks. Available events include `user.created`, `user.updated`, `account.created`, and more.

Set them up by providing a URL to post to in the [Openfort Dashboard](https://dashboard.openfort.io/webhooks) and selecting which events to subscribe to. See the [webhooks guide](https://www.openfort.io/docs/configuration/webhooks) for details.

## Provider-specific migration guides

Select the guide based on your current provider for detailed, step-by-step instructions:

* [Migrate from Web3Auth](https://www.openfort.io/docs/products/embedded-wallet/migration/web3auth) — Step-by-step migration guide. Migrate from Web3Auth (now MetaMask Embedded Wallets) to Openfort embedded wallets.
* [Migrate from Privy](https://www.openfort.io/docs/products/embedded-wallet/migration/privy) — Step-by-step migration guide. Migrate from Privy embedded wallets to Openfort embedded wallets.
* [Migrate from Turnkey](https://www.openfort.io/docs/products/embedded-wallet/migration/turnkey) — Step-by-step migration guide. Migrate from Turnkey embedded wallets to Openfort embedded wallets.
* [Migrate from Dynamic](https://www.openfort.io/docs/products/embedded-wallet/migration/dynamic) — Step-by-step migration guide. Migrate from Dynamic embedded wallets to Openfort embedded wallets.

## What you gain with Openfort

After migration, you'll have access to Openfort's full feature set:

* [Gas sponsorship](https://www.openfort.io/docs/configuration/gas-sponsorship) — Eliminate user friction. Cover gas fees for your users with flexible sponsorship policies.
* [Session keys](https://www.openfort.io/docs/products/embedded-wallet/react/wallet/actions/session-keys) — Background transactions. Delegate signing with session keys for seamless UX.
* [Smart wallets](https://www.openfort.io/docs/products/embedded-wallet/react/wallet) — Account abstraction. ERC-4337 smart contract wallets with recovery options.
