Your account

Personal, self-service settings for profile, passkeys, notification preferences, theme, and language, kept separate from the company-wide settings an admin controls.

Everything on the Account screen is yours alone. Your name and photo, the passkeys you sign in with, which topics reach you by email, the theme you look at all day: these are personal preferences, scoped to your user, and changing them touches nothing for anyone else on the team. That's the line to keep in mind. Company-wide switches (locations, integrations, defaults, who can do what) live under Settings and are gated by admin permissions. Your account settings need no special permission at all.

Open it from your avatar in the top bar. The sidebar has two sections, Profile and Notifications (apps/erp/app/modules/account/ui/useAccountSubmodules.tsx:9); landing on /x/account redirects you straight to Profile (apps/erp/app/routes/x+/account+/_index.tsx:4).

Profile

Profile is the one card everyone shares. The description on it says it plainly: "This information will be visible to all users, so be careful what you share." (.../ui/Profile/ProfileForm.tsx:44).

FieldType
Your display name across Carbon. Both are required.
Optional. A phone-formatted field, blank by default.
A short bio, capped at 160 characters (ProfileForm.tsx:62).
Your avatar. Uploading routes the image through Carbon's image-resizer before it's saved (.../ui/Profile/ProfilePhotoForm.tsx); you can also remove it and fall back to your initials.
Shown, but read-only — the field is disabled (ProfileForm.tsx:53). You can't change your sign-in email from here.

Saving writes only to your own user row (updatePublicAccount, .../account.service.ts:161), so the edit is always self-scoped.

NOTE

Email is your identity, not a profile field

Your email is how you sign in and how Carbon addresses notifications to you, so it isn't editable as a casual profile field. Changing it is an identity change handled outside these self-service settings.

Signing in — passkeys

Carbon supports several sign-in methods, and which ones are available is a deployment-wide choice, not a per-user one. The AUTH_PROVIDERS environment variable turns them on and off; the default set is email,google,azure (packages/env/src/index.ts:114). That covers a magic link to your email, and Google and Microsoft (Azure) OAuth. There's no password field on this screen — Carbon signs you in by magic link or OAuth, not by a stored password you type each time.

NOTE

There's no password on the account screen

The codebase carries a password-change form, but it isn't wired into any account route today — the Account sidebar only exposes Profile and Notifications. Password management isn't a live self-service control here. Sign-in is magic link, OAuth, or a passkey.

The one sign-in control you manage yourself is passkeys, and its card only appears when the passkey provider is enabled (isAuthProviderEnabled("passkey"), .../account+/profile.tsx:214). A passkey lets you sign in with biometrics — Face ID, Touch ID, or your device PIN — instead of waiting on a magic-link email. From the Profile page you can:

FieldType
Registers a new credential through your browser's WebAuthn prompt (onAddPasskey, profile.tsx:220). You can hold more than one — a laptop and a phone, say.
Give a credential a recognizable name (up to 100 characters) so you can tell your devices apart.
Deletes it; that device can no longer sign you in. Each row shows when it was added, when it was last used, and whether it's synced across your devices.
TIP

Keep more than one way in

A passkey is tied to a device. If you register only one and lose that device, fall back to the magic-link email or your OAuth provider to get back in — then add a fresh passkey. Registering a second passkey up front saves the round trip.

Notification preferences

Which alerts reach you, and on which channel, is set on the Notifications page — and it's per-user. In-app notifications (the bell in the top bar) are always delivered; the toggles only govern the extra channels, email and, when your company has connected Slack, Slack (.../account+/notifications.tsx). Each row is a topic — Approvals, Jobs, Inventory, Purchasing, Quality, and so on — with a switch per channel.

The default is on: an absent preference row counts as enabled (notifications.tsx:130), so you're opting out of a channel for a topic, not opting in. Two things gate what you see:

  • The Slack column appears only if an admin connected the Slack integration for the company (slackActive, notifications.tsx:47).
  • Email notifications depend on your company's plan. If the EMAIL_NOTIFICATIONS feature isn't in the plan, Carbon tells you so, and your email preferences are stored but only take effect once it's enabled (notifications.tsx:49, :175).

For the full picture of what raises a notification and how Carbon fans it out across channels, see the notifications reference. This page is where you tune it for yourself.

Theme and language

Carbon lets you pick a color theme; the choice is stored in a cookie on your browser, not in the database (.../account+/theme.tsx), so it follows you per-device and applies to nobody else. That's the personal end of theming. Company-wide branding — the logo, the default look a new user starts with — is an admin setting elsewhere, not something you set from your account.

NOTE

Language selection

Carbon ships a translated interface across many locales, and a per-user language preference is part of the account model. In the current build the language picker isn't surfaced on the Account sidebar — the interface follows the app's resolved locale. Treat language as a preference Carbon carries for you rather than a live toggle on this screen.

Personal attributes

Beyond the shared profile, your company can define user attributes — structured fields like a certification date, a shirt size, or a shift preference — grouped into categories. Whether a given attribute lands on your public profile or stays admin-only depends on its category being public, and whether you can edit your own value depends on it being marked . When it is, you can set the value yourself; when it isn't, only an admin can (.../account+/$userId.attribute.tsx:48). Attribute types range from text and numbers to dates, booleans, and pick-lists.

Your account is the small surface you own on a shared system: a profile the team can see, the keys you sign in with, the alerts you let through, and the theme you stare at. None of it reaches past you. For the switches that do — the ones that shape how the whole company works — see the company settings under Settings, and read the notifications reference for how alerts are raised in the first place.