Skip to main content
Once a user has successfully linked their account from a provider app, an account of type: 'cross_app' will be added to the linkedAccounts array of their user object. This crossAppAccount is an object with the following properties: To find a user’s cross-app embedded wallet, first find the account of type: 'cross_app' from their linkedAccounts array. If your app permits users to link cross-app accounts from multiple provider apps, you should also filter the linkedAccounts by the providerApp.id on the cross-app account.
// Replace `providerAppId` with the Privy app ID of your desired provider app
const providerAppId = 'insert-provider-app-id';
const crossAppAccount = user.linkedAccounts.find(
  (account) => account.type === 'cross_app' && account.providerApp.id === providerAppId
);
Next, from the crossAppAccount, inspect the embeddedWallets array to get the user’s embedded wallet address(es) from the source app.
const address = crossAppAccount.embeddedWallets[0].address;
Most users only have one embedded wallet per app. Certain apps, however, leverage multiple embedded wallets (e.g. HD wallets) per user to support certain use cases. In kind, the embeddedWallets field is designed as an array, but generally will be a singleton containing one entry.Similarly, the smartWallets field is designed as an array, but generally will be a singleton or empty depending on whether the provider app has smart wallets enabled.
I