ReferenceSettings & administration

Staff

Open Settings → Staff in Thermal →

What it's for

Staff is the roster of everyone with a login to your shop — owners, office managers, dispatchers, and field technicians. It is where a person gets added to the system, given a role, priced for job costing, and (for office roles) removed when they leave. A technician's own record here is what makes them assignable on the dispatch board.

Reach it from People → Staff in the sidebar, at /staff.

Tabs

The list has no tabs. A row filter along the top narrows by role instead — All roles plus one chip per role in the system. Opening a person takes you to their own record, which does have tabs (Overview and Credentials).

Panels and controls

  • Search matches name, email, or phone.
  • The list shows Name (with a small amber dot if a credential is expiring or expired), Role, Credentials (count on file), Commission plan, Status, Last active, and row actions.
  • Add staff opens a form: First name, Last name, Role, Branch (new hires only), Email, Phone, Hire date, Base rate ($/hr), Burdened labor cost ($/hr) — wage plus payroll taxes, benefits, and overhead, used for job-cost margins — Labor level, and Status (Active or On leave).
  • Resend invite appears only on a person who hasn't signed in yet and has an email on file.
  • Remove takes someone off the roster and revokes their login. It is hidden for the shop's last owner — that seat can't be removed without promoting someone else to owner first.
  • A seat-capacity banner is always visible and shows Clerk's live used and remaining counts. It warns when you're near or at the limit and points you to Settings → Plan to add more.
  • No staff yet is the empty state, prompting you to add owners, dispatchers, and technicians.

What it accepts

FieldFormatRequiredRule
First nameFree textYes"First name is required."; "First name is too long."
Last nameFree textNo"Last name is too long."
RolePick a roleYes"Please select a valid role."; only an owner can assign the owner role; you can't change your own role
EmailEmail addressNo"That email doesn't look right."; "Email is too long."; "A staff member with that email already exists."
PhoneFree textNo"Phone is too long."
Hire dateDateNo"Hire date is not a valid date."
Base rate ($/hr)DollarsNo"Base rate must be a positive number."
Burdened labor cost ($/hr)DollarsNo"Burdened labor cost must be a positive number."
Labor levelFree textNo"Labor level is too long."
StatusActive or On leaveYes

Removing the shop's only owner is blocked: "This is your last owner — you can't deactivate them." Resending an invite to someone already signed in is blocked: "This staff member is already active — there is no invite to resend." Adding staff past your plan's seat cap is blocked: "You're at your plan's seat limit ({used} of {limit} seats used). Add seats in Settings → Plan to add more staff." If Clerk rejects the invite at the quota after the pre-check, the new staff row is rolled back. A transient Clerk outage keeps the staff row and shows that the invitation was not sent so Resend invite can be used later.

How to configure it

  • Settings → Plan shows live capacity from Clerk. Thermal staff manage the same authoritative Clerk limit from Publisher; there is no separate database seat-cap value to drift.
  • Settings → Labor rates defines the labor-level scale a Labor level entry matches against, for pay/cost when a person's own base rate and burdened cost are left blank.
  • Commissions is where a staff member's commission plan is assigned — the plan name shown here links there.
  • Credentials is where trade credentials are added; the count and expiring-soon dot on this list come from that page's records.

Who can see it

This screen sits behind the Staff area.

Owners and office managers can open it. Dispatchers and technicians cannot — a technician's own info and credentials live in the field app, not this roster. The gate is checked on the server, not just hidden in the sidebar, so a direct link does not get around it.

The full role matrix is on Roles & permissions.

On this page