For AI agents: a documentation index is available at /llms.txt. A markdown version of this page is available at the same URL with .md appended (or via Accept: text/markdown).
Skip to main content

User details in ID token

The User Details in ID Token setting controls whether personally identifiable information (PII) such as email, name, and profile picture is included in the JWT identity token issued by Embedded Wallets.

Web SDK v11 (@web3auth/modal for JavaScript, React, and Vue) also surfaces a richer user object that includes linked accounts and authentication methods across every wallet the user has connected, not just the one they used to sign in.

User details settings

Richer user object (Web SDK v11)

When you call getUserInfo() or use useWeb3AuthUser, the returned UserInfo object can include a linkedAccounts array. Each entry describes a wallet linked to the same Embedded Wallets user:

FieldDescription
idLinked account identifier
isPrimaryWhether this is the user's primary account
eoaAddressExternally owned account address
aaAddressSmart account address, if configured
connectorConnector name for this account
activeWhether this account is the active connection
import { useWeb3AuthUser } from '@web3auth/modal/react'

function UserProfile() {
const { userInfo } = useWeb3AuthUser()

return (
<div>
<p>Primary login: {userInfo?.typeOfLogin}</p>
<ul>
{userInfo?.linkedAccounts?.map(account => (
<li key={account.id}>
{account.eoaAddress} ({account.connector}){account.active ? ' (active)' : ''}
</li>
))}
</ul>
</div>
)
}

Use this object to unify analytics, CRM records, and support tooling under one user ID. See Multi-wallet linking and switching for linking and switching APIs.

The dashboard User management section lists users and their linked accounts for your project. See Access control.

ID token configuration

Navigate to Project SettingsAdvancedUser details and choose one of three modes:

ModeAdditional claims in token
DisabledNone; only sub, wallet_address, standard JWT fields
Email only (userIdentifier: email)email
Enabled (all PII)email, name, picture, provider fields

The sub (user identifier), wallet_address, aud, exp, and iat claims are always present regardless of this setting.

Reading the token

Retrieve the identity token using getIdentityToken():

const { idToken } = await web3auth.getIdentityToken()

The returned idToken is a signed JWT. Verify it server-side using the JWKS endpoint or project verification key before trusting any claims.

Sample token payloads

Disabled (minimal claims only):

{
"sub": "google|user_unique_id",
"wallet_address": "0x1234...abcd",
"aud": "<YOUR_CLIENT_ID>",
"exp": 1640995200,
"iat": 1640908800
}

Enabled (full PII included):

{
"sub": "google|user_unique_id",
"wallet_address": "0x1234...abcd",
"aud": "<YOUR_CLIENT_ID>",
"exp": 1640995200,
"iat": 1640908800,
"email": "user@example.com",
"name": "Jane Doe",
"picture": "https://profile-pics.example.com/user.jpg",
"provider": "google"
}

Privacy considerations

Only enable PII in tokens when your dapp needs it. Ensure your privacy policy discloses what user data you process. For GDPR-regulated users, obtain explicit consent before persisting any PII sourced from the token.

Next steps