Account states, with real meanings

One shared vocabulary — active, inactive, paused, suspended, banned, scheduled for deletion — each with a stated operational meaning and a rule about whether the account still counts as one you manage.

What it is

A status list with metadata per value: a label, a one-line description of what it means operationally, whether the account is 'managed' (a real client you administer), and its chip styling. Two legacy values that predate the list stay recognised rather than being rewritten. Unrecognised values render honestly as unknown instead of crashing a screen.

Also called: account status · paused account · suspended · banned · scheduled for deletion

See it
Account states, with real meanings
Apr
May
Jun
Jul
Marlin Hoover — Barndominium
Framing
Delia Yoder — Equipment Storage
Concrete
Ivy Brubaker — 30×40 Garage
Trim
Marlin Hoover — Hobby Shop
Framing
Ivy Brubaker — Hobby Shop
Concrete
Framing crewConcrete crewTrim crew
The status picker in the account Overview tab showing each value with its one-line description underneath. src/lib/orgStatus.ts rendered in src/components/platform/tenant/TenantModal.tsx. Sample data — no customer information appears here.
How it works
  1. 1ORG_STATUSES defines the settable values; ORG_STATUS_META carries the label, description, managed flag and chip for each.
  2. 2Legacy values from before the list are marked legacy and kept readable.
  3. 3isManagedStatus() is the default filter on admin surfaces, so parked test accounts and banned ones stop cluttering the work.
  4. 4statusMeta() returns a safe fallback for any value this build has never seen.
  5. 5The status drives routing: a suspended account's subdomain stops resolving, and its branding stops being served.
Why we built it

The module opens by admitting the column's history: it 'is a free-text column with no CHECK constraint, and it already carries two legacy values from before this list existed. Those stay recognized rather than being rewritten — a migration that silently reinterpreted someone's account state would be worse than a slightly longer list.' The managed flag is the practical part: 'MANAGED vs not is the distinction that matters day to day.' Each description is written for an operator rather than a developer — 'paused' means 'temporarily on hold at the client's request — billing paused, data intact'; 'suspended' means 'access cut off by us'.

The problem
  • A free-text status column meant every screen invented its own interpretation.
  • Test and banned accounts cluttered the operator's working list.
  • Rewriting historic status values would have silently changed what an account's state meant.
Sound familiar?
What you get
Every state says exactly what it means for access, billing and data.
Real clients are separated from parked accounts by default.
Historic values keep their original meaning.
What's inside

See it on your own jobs

Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.

or keep browsing features →