Skip to main content
Users sign in with email OTP or a passkey. A passkey is enough on its own. Users who used email OTP also verify by SMS or WhatsApp, and are then offered a passkey so they can skip the second step next time.
A flow with a verification step for email OTP or passkey, a method branch that completes for passkey users, and an SMS OTP or WhatsApp verification step followed by an optional passkey enrollment step for everyone else

Passkey users skip the second step

Build the flow

1

Set up the methods

Set up email OTP, passkeys, SMS OTP and WhatsApp on the Authenticators page.
2

Start from the Multi-step verification template

Create a Flows action, such as signIn, and choose the Multi-step verification template. It gives you:
  • A verification step that accepts Email OTP or Passkey.
  • A method branch, which picks a path based on the method the user just verified with. Passkey users go to Complete, and any other method follows Else.
  • On the Else branch, a verification step that accepts SMS OTP, then an optional step that offers a passkey. Users can skip an optional step.
Select the second verification step and turn on WhatsApp, so users can choose SMS or WhatsApp.
3

Publish the flow

Select Publish. Then start and verify the flow from your backend, as in the quickstart.