Guides
Onboarding
A new workspace picks the one problem it came to fix. The product opens on exactly that part, with a handful of believable example records that can be removed in one click; everything else is one “Turn on” away and nothing is ever deleted or charged for the choice.
Setup wizard
Opens once, for a brand-new workspace (organizations.onboarding_completed = falseand no stored progress). Six steps; progress is kept per step id, so a step added later never renumbers someone mid-way.
| Step | What it collects | Required |
|---|---|---|
| 1. Welcome | Nothing — sets expectations | — |
| 2. Profile | Full name | Yes |
| 3. Organization | Name, currency, timezone, default bill and cost rates | Yes |
| 4. Business type | Pipeline stage labels that fit the work (personalisation only) | No |
| 5. The door | “What do you want to fix first?” — Getting paid · Delivering work · Winning work · All of it — and “How many people work with you?” (1–3 · 4–12 · 13 or more) | One card, or Skip = All of it |
| 6. Invite | Team emails; who takes a seat and who is free | No |
Finishing the door writes org_settings.onboarding_door and team_size_band, switches off the parts the door does not need (rows in feature_flags, listed per door in docs/onboarding/door-ledger.md), loads the example records for the parts that are on, and lands on that part's page. The deployment switch is quattora.config.ts → onboarding.door (default on); off, the wizard has five steps and writes nothing.
To reset the wizard for testing or re-onboarding:
UPDATE public.organizations
SET onboarding_completed = false
WHERE id = 'your-org-uuid';Example records
Fictive companies and people on example.com, invoices numbered EXAMPLE-001… (the real counter is untouched), a project with milestones, tasks and this week's hours, a signed retainer, a draft form. Every row carries a source_batch_id pointing at one import_batches row per workspace. They appear in lists, dashboards and reports with a banner that says so; they are excluded from the checklist, plan caps, exports, the accounting export, the receivables digest, the KPI snapshot and every scheduled job; sending, reminding, signing, paying or enrolling an example record is refused. Remove examples (owners and admins) deletes the batch child-first through one database function and keeps any example the customer built on, saying so. An owner can load them again later from any module's empty state.
Settings → Modules
Owners and admins switch parts on and off here — Clients (with Leads & deals and Email sequences as sub-switches), Invoicing (Invoices as a sub-switch; Smart Files follow the module), Projects, Resources, Contracts, Forms, Supplier bills, Reports, Analytics, Automation; Dashboard is always on. Turning off a part others need turns them off too after a confirmation; turning a part on brings its parents with it. A switched-off part is hidden from the sidebar, the command palette, search, quick-add, Reports and Analytics, the checklist, notifications and the Loop Health Score; owners and admins keep a “Turn on more” group at the foot of the sidebar, and a direct URL lands on a page that says “You switched X off” with a one-click Turn on. A part your plan does not include shows a lock and a plan badge instead of a switch.
Get-started checklist
Reachable from Settings → Get started. Shows only the steps for parts that are on and counts real rows only (example records never tick a box):
| Item | How it's completed | Shown when |
|---|---|---|
| Add a contact | contacts count > 0 | Clients on |
| Create a deal | deals count > 0 | Leads & deals on |
| Add a lead | leads count > 0 | Leads & deals on |
| Create a project | projects count > 0 | Projects on |
| Create a workflow | workflow_triggers count > 0 | Automation on |
| Set team cost rates | a member has hourly_cost_cents OR the workspace default cost rate is set | always |
Server action: getOnboardingChecklistStatus(orgSlug)
Guided tours
Short walkthroughs powered by driver.js, on more than thirty pages. Three start by themselves, once: the door tour on the landing page right after the wizard (it ends on the page's “New …” button — Create your first invoice — and opens that dialog), and a two-step “{Part} is on” tour the first time a part is turned on. Every other tour is offered by a New to …? Take a tour banner on its page and can be re-run from the user menu (Show me around this page). Steps that point at a switched-off part, a part outside the plan, or anything not on screen are skipped. Progress is remembered for the person in user_tour_progress — a second device does not start over. Settings → Get started has the Guided tours on/off switch and Reset tours. The full list is docs/onboarding/tour-ledger.md.
Guides
A tour explains one page; a guide leads you across pages to a result — Create your first invoice, Win your first deal, Deliver your first project. Each step is done when the data says so (a company exists, a cost rate is set, an invoice exists — example records do not count), so a guide skips what you already have, can be stopped and resumed on any device, and ends by itself when the goal exists. Start one from the command palette (Guide: …), from Settings → Get started → Guides, or from a link: /org/<workspace>/dashboard?guide=create-invoice — the same link a support reply or an assistant can hand over. A chip at the bottom of the screen shows the goal, how far you are and the next step; on the step's page a popover points at the button and Let's do it opens the form. Steps whose part is not in the plan or switched off are left out; owner-only steps (cost rates, working hours) are left out for other roles and the chip says an owner is needed. The full list, with every check, is docs/onboarding/guide-ledger.md.
Recommended plan
The “Start free trial” dialog marks the plan that matches the team-size answer — Studio for 1–3, Team for 4–12, Firm for 13 or more — with a “Recommended for … people” badge. It is a hint, not a gate; nothing about the trial or the checkout changes.
Private instance customization
- Skip the wizard entirely by setting
onboarding_completed = truein SQL after seeding the client's workspace; setorg_settings.onboarding_doorto"all"so nothing is switched off. - Turn the door off for every new workspace with
onboarding: { door: false }inquattora.config.ts. - Pre-populate the workspace name and logo before the client's first login.
- On white-label paper the plan recommendation is never shown (one plan) and switched-off parts still get the “Turn on” page.