{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-ciam/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["Notification"]},"type":"markdown"},"seo":{"title":"Login identifiers","siteUrl":"https://developers.frontegg.com/","llmstxt":{"title":"Frontegg Developer Documentation","description":"Authentication, authorization, and user management for Customer Identity, plus Agen for SaaS and Agen for Work. Guides, SDKs, and API references.","sections":[{"title":"Customer Identity (CIAM)","description":"Auth, SSO, SCIM, entitlements, and user management — guides, SDKs, and APIs.","includeFiles":["ciam/**/*.md"],"excludeFiles":[]},{"title":"Agen for SaaS","description":"Agentic access and authorization for SaaS products.","includeFiles":["agen-for-saas/**/*.md"],"excludeFiles":[]},{"title":"Agen for Work","description":"Agentic access and authorization for internal and workforce use.","includeFiles":["agen-for-work/**/*.md"],"excludeFiles":[]},{"title":"Platform","description":"Shared platform overview.","includeFiles":["platform/**/*.md"],"excludeFiles":[]}],"excludeFiles":["internal-docs/**","ciam/guides/env-settings/inject-client-ip.md","CLAUDE.md","**/images/**"],"hide":false}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"login-identifiers","__idx":0},"children":["Login identifiers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frontegg supports three login identifiers: ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email"]},", ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["username"]},", and ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["phone number"]},". You can configure which identifiers users provide during sign-up and which they use to sign in, giving you full control over the authentication experience without forcing every user into an email-centric flow."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"why-flexible-identifiers","__idx":1},"children":["Why flexible identifiers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Not every user has an email address, and not every product should require one. Whether you're launching a new app with SMS-first onboarding, migrating users from an existing auth system, or supporting username-based access without email, Frontegg lets vendors choose how users identify themselves — making migration and new deployments simpler."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Common scenarios:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SMS-first onboarding"]}," — Collect a phone number at sign-up and let users sign in with an SMS one-time code, without requiring email."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Legacy system migration"]}," — Import users who authenticate with a username or phone number from your previous provider and match them in Frontegg."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Username-only products"]}," — Offer apps where users pick a handle and password, with no email required."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"supported-identifiers","__idx":2},"children":["Supported identifiers"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Identifier"},"children":["Identifier"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Sign-up"},"children":["Sign-up"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Sign-in"},"children":["Sign-in"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Supported"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Password, magic code, magic link"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Username"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Supported"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Password; magic code and magic link (code or link sent to the associated email)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Phone number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Supported"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["SMS one-time code"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["At least one identifier must be enabled for sign-up. You can combine identifiers — for example, email and username together, or username and phone number without email."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"supported-configurations","__idx":3},"children":["Supported configurations"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Configure identifier combinations in the Frontegg Builder under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Signup"]}," → ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Manage signup form"]},". The table below shows the main patterns vendors use:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Configuration"},"children":["Configuration"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Typical use case"},"children":["Typical use case"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email only"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Default B2B SaaS flow with email verification"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email + username"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Users sign in with either email or username and a password"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email + phone number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email for password or magic link; phone for SMS sign-in"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Username + phone number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No email required; SMS-first or username-first products"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Username only"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Internal tools or communities where email is not collected"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For step-by-step builder instructions, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/login-box/settings/user-signup"},"children":["User signup"]}," and ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/login-box/settings/user-signin"},"children":["User sign-in"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sign-up-behavior-by-identifier","__idx":4},"children":["Sign-up behavior by identifier"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Email"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users register with an email address. If ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/passwords/management#email-verification"},"children":["email verification"]}," is enabled, users must verify before they can sign in."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Username"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users register with a username and password. When username is the only identifier collected at sign-up (no email or phone number), account activation is skipped — Frontegg does not send an activation email, regardless of your environment-level email verification setting. If the sign-up form also collects email or a phone number, standard activation rules apply."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["At sign-up, usernames must contain only letters, numbers, periods (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["."]},"), underscores (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["_"]},"), and hyphens (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["-"]},"), with a maximum length of 255 characters."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Phone number"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users register with a phone number. Verification depends on your field requirements in the builder. If the phone number was not verified at sign-up, users are prompted to verify it on their first SMS sign-in. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/sms#sign-up-with-phone-number"},"children":["SMS sign-in"]}," for details."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When both email and phone number are required on the sign-up form, email verification takes priority; phone verification can be completed during a later sign-in."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sign-in-behavior-by-identifier","__idx":5},"children":["Sign-in behavior by identifier"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Password"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users enter an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email or username"]}," and a password. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/passwords/overview"},"children":["Password authentication"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Magic code and magic link"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users enter an ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email or username"]},". Frontegg sends the one-time code or link to the email address associated with the account. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/passwordless"},"children":["Passwordless authentication"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SMS"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users enter a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["phone number"]}," (or, if configured, can use email or username where supported). Frontegg sends a one-time code via SMS. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/sms"},"children":["SMS sign-in"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"custom-sign-up-forms","__idx":6},"children":["Custom sign-up forms"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you build your own sign-up UI instead of using the hosted login box, call the sign-up API that matches the identifier type:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Identifier"},"children":["Identifier"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Endpoint"},"children":["Endpoint"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Email"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /resources/users/v1/signUp"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Phone number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /resources/users/v1/signUp/phoneNumber"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Username"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /resources/users/v1/signUp/username"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each endpoint is available only when the corresponding identifier is enabled in your environment's sign-up configuration. For a full custom sign-up walkthrough, see ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/use-cases/bring-your-sign-up"},"children":["Bring your own sign-up form"]},"."]},{"$$mdtype":"Tag","name":"Notification","attributes":{"title":"Rate limits","type":"attention"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Sign-up routes are intended for client-side use and are ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/env-settings/rate-limits"},"children":["rate-limited"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"password-reset","__idx":7},"children":["Password reset"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Users can reset a forgotten password using their ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["email"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["phone number"]},". If the user has a verified phone number on file, they can receive a one-time code via SMS to complete the reset. See ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/ciam/guides/authentication/credentials/passwords/management#password-recovery"},"children":["Managing passwords"]},"."]}]},"headings":[{"value":"Login identifiers","id":"login-identifiers","depth":2},{"value":"Why flexible identifiers","id":"why-flexible-identifiers","depth":3},{"value":"Supported identifiers","id":"supported-identifiers","depth":3},{"value":"Supported configurations","id":"supported-configurations","depth":3},{"value":"Sign-up behavior by identifier","id":"sign-up-behavior-by-identifier","depth":3},{"value":"Sign-in behavior by identifier","id":"sign-in-behavior-by-identifier","depth":3},{"value":"Custom sign-up forms","id":"custom-sign-up-forms","depth":3},{"value":"Password reset","id":"password-reset","depth":3}],"frontmatter":{"seo":{"title":"Login identifiers"}},"lastModified":"2026-07-09T12:02:30.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/ciam/guides/authentication/login-identifiers/overview","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}