Type: string (RFC 5321 email address)
email is the user's preferred email address. Available when the 'email' scope is requested. Always check email_verified before trusting the email for authentication decisions – an unverified email could be a different person's address.
Details
The email claim provides the user's email address. It is returned when the 'email' scope is requested.
Always use with email_verified: email_verified: true means the provider has verified that the user controls this email address. email_verified: false means the email was self-reported and may not be valid. Never use an unverified email as a trusted identifier.
Email can change: unlike sub, email is mutable. Users can update their email at the identity provider. Always store sub as the primary key, email as secondary/display data.
Privacy: Apple's 'Hide My Email' feature issues a proxy email address ([email protected]) rather than the user's real email. email_verified will still be true. This is intentional – design for it.
Email uniqueness: email is NOT necessarily unique across identity providers. Two users at different providers can have the same email (one Gmail user and one custom domain user with the same address string). Sub is unique; email is not.
Example Values
| Label | Value |
|---|---|
| Normal email | "[email protected]" |
| Apple proxy email | "[email protected]" |
Validation Rules
Check email_verified = true before using email for authentication
Never use email as primary database key – use sub
Handle Apple private relay email addresses (ends in @privaterelay.appleid.com)
Email uniqueness is NOT guaranteed across providers