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
| Page | Covers |
|---|---|
| Entry modes | Who sends users here, and the URL parameters that decide how a screen behaves |
| Sign in | Password, second factors, exceptions, email-link landings |
| Sign up | Create account and confirm |
| Reset password | Code, second factor, recovery key, new password |
| OAuth relying party | /authorization, branding, exits |
| Google / Apple | Third-party sign-in round trip |
| Extra setup steps | Two-step setup, recovery key, set password, welcome |
| Pairing / CAD | Connect another device, pairing v1 and v2 |
| Settings | The account page and its sub-pages |
| Emails | Which 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.
| Route | Flow page | Notes |
|---|---|---|
/ | Sign in | Email-first entry |
/oauth | OAuth relying party | Email-first with RP context |
/authorization | OAuth relying party | |
/signin | Sign in | |
/oauth/signin | Sign in | |
/force_auth | Sign in | |
/oauth/force_auth | Sign in | |
/signin_passkey_fallback | Sign in | |
/signin_passwordless_code | Sign in | |
/oauth/signin_passwordless_code | Sign in | |
/signin_token_code | Sign in | |
/signin_totp_code | Sign in | |
/signin_recovery_choice | Sign in | |
/signin_recovery_code | Sign in | |
/signin_recovery_phone | Sign in | |
/signin_unblock | Sign in | |
/signin_bounced | Sign in | |
/complete_signin | Sign in | Email link |
/signin_confirmed | Sign in | |
/signin_verified | Sign in | |
/report_signin | Sign in | Email link |
/signin_reported | Sign in | |
/signin_permissions | OAuth relying party | Legacy Backbone |
/confirm_signin | Sign in | Legacy Backbone |
/confirm | Sign in | Legacy Backbone |
/signup | Sign up | |
/oauth/signup | Sign up | |
/confirm_signup_code | Sign up | |
/signup_confirmed | Sign up | |
/signup_verified | Sign up | |
/signup_confirmed_sync | Sign up | |
/primary_email_verified | Sign up | |
/signup_permissions | OAuth relying party | Legacy Backbone |
/verify_email | Sign up | Legacy Backbone, email link |
/verify_primary_email | Sign up | Legacy Backbone |
/verify_secondary_email | Settings | Legacy Backbone |
/secondary_email_verified | Settings | Legacy Backbone |
/choose_what_to_sync | Sign up | Legacy Backbone |
/would_you_like_to_sync | Sign up | Legacy Backbone |
/reset_password | Reset password | |
/confirm_reset_password | Reset password | |
/confirm_totp_reset_password | Reset password | |
/reset_password_totp_recovery_choice | Reset password | |
/confirm_backup_code_reset_password | Reset password | |
/reset_password_recovery_phone | Reset password | |
/account_recovery_confirm_key | Reset password | |
/complete_reset_password | Reset password | Email link |
/account_recovery_reset_password | Reset password | |
/reset_password_verified | Reset password | |
/reset_password_with_recovery_key_verified | Reset password | |
/post_verify/third_party_auth/callback | Google / Apple | |
/post_verify/third_party_auth/set_password | Google / Apple | |
/post_verify/set_password | Extra setup steps | |
/post_verify/service_welcome | Extra setup steps | |
/inline_totp_setup | Extra setup steps | |
/inline_recovery_setup | Extra setup steps | |
/inline_recovery_key_setup | Extra setup steps | |
/inline_passwordless_sync_setup | Extra setup steps | |
/post_verify/password/force_password_change | Extra setup steps | Legacy Backbone |
/post_verify/newsletters/add_newsletters | Extra setup steps | Legacy Backbone |
/post_verify/secondary_email/add_secondary_email | Extra setup steps | Legacy Backbone |
/post_verify/secondary_email/confirm_secondary_email | Extra setup steps | Legacy Backbone |
/post_verify/secondary_email/verified_secondary_email | Extra setup steps | Legacy Backbone |
/connect_another_device | Pairing / CAD | Email link |
/pair | Pairing / CAD | |
/pair/unsupported | Pairing / CAD | |
/pair/failure | Pairing / CAD | |
/pair/success | Pairing / CAD | |
/pair/auth/allow | Pairing / CAD | v1 |
/pair/auth/totp | Pairing / CAD | v1 |
/pair/auth/wait_for_supp | Pairing / CAD | v1 |
/pair/auth/complete | Pairing / CAD | v1 |
/pair/supp | Pairing / CAD | v1 |
/pair/supp/allow | Pairing / CAD | v1 |
/pair/supp/wait_for_auth | Pairing / CAD | v1 |
/pair/supp/complete | Pairing / CAD | v1 |
/pair/authority/scan_qr | Pairing / CAD | v2 |
/pair/authority/continue_on_mobile | Pairing / CAD | v2 |
/pair/authority/approve_signin | Pairing / CAD | v2 |
/pair/authority/sync_success | Pairing / CAD | v2 |
/pair/authority/timeout_and_cancel | Pairing / CAD | v2 |
/pair/authority/download_firefox | Pairing / CAD | v2 |
/pair/supplicant/ready_to_scan | Pairing / CAD | v2 |
/pair/supplicant/connect_this_device | Pairing / CAD | v2 |
/pair/supplicant/approve_signin | Pairing / CAD | v2 |
/pair/supplicant/sync_success | Pairing / CAD | v2 |
/pair/supplicant/timeout_and_cancel | Pairing / CAD | v2 |
/pair/supplicant/download_firefox | Pairing / CAD | v2 |
/oauth/success/:clientId | Pairing / CAD | |
/post_verify/cad_qr/get_started | Pairing / CAD | Legacy Backbone |
/post_verify/cad_qr/ready_to_scan | Pairing / CAD | Legacy Backbone |
/post_verify/cad_qr/scan_code | Pairing / CAD | Legacy Backbone |
/post_verify/cad_qr/connected | Pairing / CAD | Legacy Backbone |
/poc_deep_link | Pairing / CAD | Proof of concept |
/poc_pair_init | Pairing / CAD | Proof of concept |
/poc_pair_start | Pairing / CAD | Proof of concept |
/settings | Settings | |
/settings/display_name | Settings | |
/settings/avatar | Settings | |
/settings/avatar/change | Settings | |
/settings/emails | Settings | |
/settings/emails/verify | Settings | |
/settings/change_password | Settings | |
/settings/create_password | Settings | |
/settings/passkeys/add | Settings | |
/settings/account_recovery | Settings | |
/settings/two_step_authentication | Settings | |
/settings/two_step_authentication/change | Settings | |
/settings/two_step_authentication/replace_codes | Settings | |
/settings/recovery_phone/setup | Settings | |
/settings/recovery_phone/remove | Settings | |
/settings/recent_activity | Settings | |
/settings/clients | Settings | |
/settings/delete_account | Settings | |
/security_events | Settings | Legacy Backbone |
/subscriptions | OAuth relying party | Legacy redirect to Subscription Platform |
/clear | Entry modes | Utility |
/cookies_disabled | Entry modes | Utility |
/web_channel_example | Entry modes | Development only |
/update_firefox | Entry modes | Server-rendered |
/download_firefox | Entry modes | Server redirect |
/.well-known/change-password | Settings | Server 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.