In Studio
Users & auth → Sign-in → Sign-in & registration → Registration → Verify email before sign-in. A new account must open the link in its confirmation email first. Also Restrictions → Require a verified email. The message is Confirm your email in Email templates. Without it, people sign in straight after sign-up and the address stays unverified (user.email_verified is false) until they confirm.
The flow
signUpreturnsverificationRequired: trueand no session.- Show “Check your inbox” with a resend button.
- The person clicks the link and lands on your
redirectTopage. - That page confirms the token and the person is signed in.
verifyEmail confirms the address and returns a session. The redirectTo page must be on your redirect list.
Other ways an address becomes verified
- Using an email code or sign-in link proves the inbox.
- A social provider may report the address as verified.
- An administrator creates the user with
emailVerified: true(the default for admin-created accounts). - Company sign-in connections have Trust the email address to treat the provider’s email as verified.
Show verification status
email_verified for sensitive actions through an access rule, not only the UI.
Changing the email later
When someone changes their address withupdateUser({ email }), a link goes to the new address, and the change happens when it’s clicked:
user.email_changed event fires on confirmation, and user.verified when an address is confirmed.
Make landing pages robust
- Links are single-use and expire. If
verifyEmailthrows, show “This link has expired” with a button to send a new one. - Don’t show or log the token.
- After success, send the person where they were going.
Redirect URLs
Allow your landing page.
Email templates
Change the wording.