Branches
Open Settings → Branches in Thermal →
What it's for
Branches are the locations or divisions of your shop — each one carries its own technicians, customers, and P&L view. This is where you create a branch, set its address and timezone, mark it the default, and override the organization's scheduling, billing, and automation defaults just for that location. A single-branch shop can mostly ignore this screen; a multi-branch shop uses it to make each location behave a little differently without duplicating settings everywhere.
Reach it from Settings → Organization → Branches in the sidebar, at
/settings/branches.
Tabs
This screen has no tabs. Branches are listed as cards, one per branch, each expandable to a Defaults section underneath.
Panels and controls
The branch list
Live and archived branches both show here — this is the management surface itself, so an archived branch doesn't just disappear, it shows an Archived badge with a Restore action. Each card shows the branch name, its code, a Default badge if it's the org's default, and a one-line summary of timezone and address.
Row actions: Edit opens the same field set as creation, inline. Set default appears on any non-default, non-archived branch — exactly one branch is always the default, the landing spot for new records created with no branch chosen. Archive hides a branch from pickers; Restore brings it back. Archiving is blocked on the org's default branch — set another branch as default first.
New branch
New branch opens a dialog with the same fields as editing: name, code, timezone (or inherit the org's), country, and address. An optional checkbox sets the new branch as default immediately.
Branch defaults
Each card's Defaults section overrides the organization's own settings for that one branch, field by field — leaving a field blank inherits the org value:
- Scheduling — a default job duration override (minutes), and what happens when a tech is assigned with no scheduled time.
- Business hours — open and close hours, and quiet hours, for this branch specifically; both ends of a pair must be set together or left on "use the organization default."
- Not-to-exceed (NTE) — a warn threshold percent and enforcement mode (warn only, or block over cap) for this branch's time-and-materials work.
- Price Book — a margin floor percent and Member/Commercial tier discount percentages, for pricing previewed under this branch.
- Tax rate — a flat sales-tax percentage override.
- Automation ceiling — for each module the organization has turned on above Off, a per-branch ceiling that can only narrow it (more conservative), never raise it past what the org allows.
What it accepts
| Field | Format | Required | Rule |
|---|---|---|---|
| Branch name | Text, up to 120 characters | Yes | "Branch name is required."; over 120 characters is rejected |
| Code | Text, up to 20 characters | No | Short dispatch/reporting code, e.g. TUL |
| Timezone | Pick from the list, or inherit | No | Defaults to the org's timezone |
| Country | 2-letter code | No | Defaults to US |
| Address lines, city, state, postal code | Free text | No | |
| Set as default | Checkbox | No | New records land here when no branch is chosen |
| Default job duration | Whole minutes | No | "Default job duration must be a whole number of minutes between 15 and 480." |
| Open / Close hours | Hour pair | No | "Set both open and close hours (with close after open), or leave both on 'Use the organization default'." |
| Quiet hours start / end | Hour pair | No | "Set both quiet-hours fields, or leave both blank to use the organization's quiet hours." |
| NTE warn threshold | Whole percent, 0–100 | No | "NTE warn threshold must be a whole number between 0 and 100." |
| Tax rate | Percent, e.g. 8.25 | No | "Tax rate must be a percentage between 0 and 100 (e.g. 8.25)." |
| Price Book margin floor | Whole percent, 0–100 | No | "Margin floor must be a whole number between 0 and 100." |
| Member / Commercial tier delta | Whole percent, -100 to 1000 | No | Signed — negative is a discount |
A duplicate branch name within the org is rejected: "A branch with that name already exists for this org." Archiving the org's default branch is refused until another branch is set as default; restoring an archived branch whose name collides with a live one is refused until you rename one of them.
How to configure it
- The organization-level versions of every override above live on the main Settings page (scheduling, business hours, NTE, Price Book, billing) — a branch override only applies once it's filled in here; blank always falls back to that org value.
- Automation module levels are turned on org-wide first (under the relevant module's own settings); a branch can only narrow that ceiling, not raise it.
- Capabilities decide which modules exist for the org at all — a module a branch has never seen turned on won't appear in its automation list here.
Who can see it
- Owners see Branches in the Settings sidebar and can create, edit, archive, restore, and set defaults.
- Office managers have access to the Settings area, so the screen and its actions are open to them if they navigate directly, even though the sidebar link is shown to owners.
- Dispatchers and technicians cannot reach Settings at all. Every action here is checked on the server, so the gate holds regardless of what the sidebar shows.
The full role matrix is on Roles & permissions.