Skip to main content

FxA Sitemap

Every screen in the Mozilla accounts (FxA) web UI, grouped by flow, with how users arrive and where they leave. Hover a route or a box marked with the eye icon for a live Storybook preview. Click top-level flows to see map in detail.

Map​

Pages​

PageCovers
Entry modesWho sends users here, and the URL parameters that decide how a screen behaves
Sign inPassword, second factors, exceptions, email-link landings
Sign upCreate account and confirm
Reset passwordCode, second factor, recovery key, new password
OAuth relying party/authorization, branding, exits
Google / AppleThird-party sign-in round trip
Extra setup stepsTwo-step setup, recovery key, set password, welcome
Pairing / CADConnect another device, pairing v1 and v2
SettingsThe account page and its sub-pages
EmailsWhich email lands on which screen

Scope: packages/fxa-settings plus the remaining legacy screens in packages/fxa-content-server, and the emails that link into them. Not covered: the Subscription Platform and the admin panel.

All routes

Every route the content server serves and the page that documents it. The freshness banner at the top checks this table against mozilla/fxa main in your browser.

RouteFlow pageNotes
/Sign inEmail-first entry
/oauthOAuth relying partyEmail-first with RP context
/authorizationOAuth relying party
/signinSign in
/oauth/signinSign in
/force_authSign in
/oauth/force_authSign in
/signin_passkey_fallbackSign in
/signin_passwordless_codeSign in
/oauth/signin_passwordless_codeSign in
/signin_token_codeSign in
/signin_totp_codeSign in
/signin_recovery_choiceSign in
/signin_recovery_codeSign in
/signin_recovery_phoneSign in
/signin_unblockSign in
/signin_bouncedSign in
/complete_signinSign inEmail link
/signin_confirmedSign in
/signin_verifiedSign in
/report_signinSign inEmail link
/signin_reportedSign in
/signin_permissionsOAuth relying partyLegacy Backbone
/confirm_signinSign inLegacy Backbone
/confirmSign inLegacy Backbone
/signupSign up
/oauth/signupSign up
/confirm_signup_codeSign up
/signup_confirmedSign up
/signup_verifiedSign up
/signup_confirmed_syncSign up
/primary_email_verifiedSign up
/signup_permissionsOAuth relying partyLegacy Backbone
/verify_emailSign upLegacy Backbone, email link
/verify_primary_emailSign upLegacy Backbone
/verify_secondary_emailSettingsLegacy Backbone
/secondary_email_verifiedSettingsLegacy Backbone
/choose_what_to_syncSign upLegacy Backbone
/would_you_like_to_syncSign upLegacy Backbone
/reset_passwordReset password
/confirm_reset_passwordReset password
/confirm_totp_reset_passwordReset password
/reset_password_totp_recovery_choiceReset password
/confirm_backup_code_reset_passwordReset password
/reset_password_recovery_phoneReset password
/account_recovery_confirm_keyReset password
/complete_reset_passwordReset passwordEmail link
/account_recovery_reset_passwordReset password
/reset_password_verifiedReset password
/reset_password_with_recovery_key_verifiedReset password
/post_verify/third_party_auth/callbackGoogle / Apple
/post_verify/third_party_auth/set_passwordGoogle / Apple
/post_verify/set_passwordExtra setup steps
/post_verify/service_welcomeExtra setup steps
/inline_totp_setupExtra setup steps
/inline_recovery_setupExtra setup steps
/inline_recovery_key_setupExtra setup steps
/inline_passwordless_sync_setupExtra setup steps
/post_verify/password/force_password_changeExtra setup stepsLegacy Backbone
/post_verify/newsletters/add_newslettersExtra setup stepsLegacy Backbone
/post_verify/secondary_email/add_secondary_emailExtra setup stepsLegacy Backbone
/post_verify/secondary_email/confirm_secondary_emailExtra setup stepsLegacy Backbone
/post_verify/secondary_email/verified_secondary_emailExtra setup stepsLegacy Backbone
/connect_another_devicePairing / CADEmail link
/pairPairing / CAD
/pair/unsupportedPairing / CAD
/pair/failurePairing / CAD
/pair/successPairing / CAD
/pair/auth/allowPairing / CADv1
/pair/auth/totpPairing / CADv1
/pair/auth/wait_for_suppPairing / CADv1
/pair/auth/completePairing / CADv1
/pair/suppPairing / CADv1
/pair/supp/allowPairing / CADv1
/pair/supp/wait_for_authPairing / CADv1
/pair/supp/completePairing / CADv1
/pair/authority/scan_qrPairing / CADv2
/pair/authority/continue_on_mobilePairing / CADv2
/pair/authority/approve_signinPairing / CADv2
/pair/authority/sync_successPairing / CADv2
/pair/authority/timeout_and_cancelPairing / CADv2
/pair/authority/download_firefoxPairing / CADv2
/pair/supplicant/ready_to_scanPairing / CADv2
/pair/supplicant/connect_this_devicePairing / CADv2
/pair/supplicant/approve_signinPairing / CADv2
/pair/supplicant/sync_successPairing / CADv2
/pair/supplicant/timeout_and_cancelPairing / CADv2
/pair/supplicant/download_firefoxPairing / CADv2
/oauth/success/:clientIdPairing / CAD
/post_verify/cad_qr/get_startedPairing / CADLegacy Backbone
/post_verify/cad_qr/ready_to_scanPairing / CADLegacy Backbone
/post_verify/cad_qr/scan_codePairing / CADLegacy Backbone
/post_verify/cad_qr/connectedPairing / CADLegacy Backbone
/poc_deep_linkPairing / CADProof of concept
/poc_pair_initPairing / CADProof of concept
/poc_pair_startPairing / CADProof of concept
/settingsSettings
/settings/display_nameSettings
/settings/avatarSettings
/settings/avatar/changeSettings
/settings/emailsSettings
/settings/emails/verifySettings
/settings/change_passwordSettings
/settings/create_passwordSettings
/settings/passkeys/addSettings
/settings/account_recoverySettings
/settings/two_step_authenticationSettings
/settings/two_step_authentication/changeSettings
/settings/two_step_authentication/replace_codesSettings
/settings/recovery_phone/setupSettings
/settings/recovery_phone/removeSettings
/settings/recent_activitySettings
/settings/clientsSettings
/settings/delete_accountSettings
/security_eventsSettingsLegacy Backbone
/subscriptionsOAuth relying partyLegacy redirect to Subscription Platform
/clearEntry modesUtility
/cookies_disabledEntry modesUtility
/web_channel_exampleEntry modesDevelopment only
/update_firefoxEntry modesServer-rendered
/download_firefoxEntry modesServer redirect
/.well-known/change-passwordSettingsServer redirect

Not listed because the served route is a pattern: /subscriptions/products/:productId, a legacy redirect to the Subscription Platform.

Keeping this current​

The banner at the top compares the routes listed here with mozilla/fxa main on every visit. Green: in sync. Yellow: a route was added or removed in code, and the banner lists which. Gray: the check could not run.

When it's yellow, add or remove rows for the listed routes:

  • one in the All routes table above
  • one in the flow page's Screens table, with the screen name linked to its Storybook story
  • a box on that page's map, if users see the screen as a step

Or hand it to an assistant:

The FxA Sitemap banner lists routes out of sync with fxa. Update docs/fxa-sitemap following the Keeping this current section of the overview, looking up each new screen in packages/fxa-settings in the fxa repo.
Where things live

Routes: packages/fxa-content-server/server/lib/routes/react-app/content-server-routes.js is the served list; packages/fxa-settings/src/components/App/index.tsx and Settings/index.tsx map routes to components. Screens: the published Storybook, where story titles under Pages/ match component names. Emails: libs/accounts/email-renderer/src/renderer/email-link-builder.ts.

The banner and previews are plain JavaScript in src/js/fxa-sitemap-live.js; src/plugins/fxa-sitemap-screens.js indexes the Storybook links from every page so previews work across pages. If the banner stays gray, the two fxa file paths in the client module have probably moved.