Supported Networks: Civic embedded wallets support 18+ EVM-compatible chains including Ethereum, Base, Polygon, BSC, Arbitrum One, Avalanche, and many more. See the complete list for all supported networks.
Currently, we don’t support connecting users’ existing self-custodial wallets. This is coming soon.Right now, we only support embedded wallets, which are generated on behalf of the user by our non-custodial wallet partner. Neither Civic nor your app ever has access to the wallets’ private keys.
Quick Start
Sign up for Civic Auth at auth.civic.com and make sure to select the “Web3 wallet” option.If you already have an account, just log in and select the Web3 wallet option in the configuration to enable Web3 wallets.
Code ExamplesSome complete examples for Solana and EVM can be found on Github here.The Ethereum and Solana pages have links to specific examples.Also see the code examples in this documentation.
Installation
Install the Civic Auth Web3 SDK:Integration
Choose your framework for instructions on how to integrate Civic Auth Web3 into your application.NOTE - Web3 wallets are available for React and Next.js environments.If you are interested in using Civic’s Web3 wallet feature in other environments, please contact us in our developer community.
Choosing Your Integration
Before diving in, pick the path that matches your blockchain and setup. The hooks and packages you use depend entirely on this choice — mixing them up is the most common source of errors.| Scenario | Chain | Package | Hooks to interact with the wallet | Full guide |
|---|---|---|---|---|
| Ethereum / EVM | Ethereum + 18 other EVM chains | @civic/auth-web3/wagmi | useAccount(), useBalance(), useSendTransaction() from wagmi | Ethereum & EVM → |
| Solana — without wallet-adapter | Solana | @civic/auth-web3/react | useWallet({ type: "solana" }) from @civic/auth-web3/react | Solana → |
| Solana — with wallet-adapter | Solana | @solana/wallet-adapter-react + @civic/auth-web3 | useWallet() + useConnection() from @solana/wallet-adapter-react | Solana → Wallet Adapter |
Creating vs using a walletNew users don’t have a wallet by default. Before the hooks in the table above will return an address or balance, a wallet must be created. How that happens depends on your integration:
- Ethereum/EVM: call
createWallet()then connect via wagmi, or useuseAutoConnect()which handles both steps in one. - Solana without wallet-adapter: call
createWallet()explicitly after the user logs in. - Solana with wallet-adapter: wallet creation is triggered by the user selecting Civic Auth in the
WalletMultiButtonmodal — no explicitcreateWallet()call is needed in your code.
Using the Wallet
Follow these guides to set up Web3 wallets for your users:Server-Side Integration
To access a user’s embedded wallet address on the server side, usegetWallets() from @civic/auth-web3/server. A full working example is available here: express-with-wallet.
Installation
CivicAuth with cookie-based storage per request, and attach it to each Express request via middleware:
getWallets() from @civic/auth-web3/server to retrieve the user’s embedded wallet address(es):
getWallets() returns an array of wallet objects, each with a walletAddress property.
Auth Middleware
About Embedded Wallets
What are Embedded Wallets?
Embedded wallets are cryptocurrency wallets provided directly by an app or website, rather than requiring the user to supply their own. This approach is a powerful tool for onboarding non-crypto users into Web3, enabling apps to cater to both crypto-native users and newcomers alike. By removing the need for complicated wallet setup, remembering seed phrases etc., embedded wallets are a vital tool for bridging the gap between Web2 and Web3.Civic’s Embedded Wallets
The Civic Embedded Wallet Service is non-custodial, meaning neither Civic nor Civic’s customers have control over users’ wallets or assets. Each wallet is linked to a user’s SSO (Single Sign-On) provider, such as Google, ensuring that only authenticated users can sign transactions. Civic’s wallets are EOA (Externally Owned Account) wallets, rather than smart contract (AKA account abstraction) wallets. This has benefits in terms of simplicity and lower gas costs. However, they can be upgraded to support account abstraction, for example to support gas sponsorship. Contact us in our developer community if you’re interested in this feature.Metakeep uses industry-standard security measures such as Hardware Security Modules (HSMs) and FIPS 140-2-validated cryptographic silicon to maintain strict key isolation. Each wallet is linked to the user’s email, and signatures require user consent. This design ensures that Metakeep cannot take control of a user’s wallet or move assets without their approval — preserving true non-custodianship by design. The private keys never leave the secure hardware; even MetaKeep operators do not have access to the raw key data.
Recovery
Civic embedded wallets use automatic recovery through reauthentication. Unlike traditional wallets that require seed phrases or manual backups, your users’ wallets are recovered transparently when they log in again with their registered identity (email or phone). Key points:- No seed phrases or recovery codes to manage
- Wallets are automatically accessible after reauthentication via SSO
- Recovery is handled seamlessly by our wallet provider MetaKeep



