Status Options

Define the status workflow for each record type -- including custom statuses, sub-statuses, colors, and stepper progression.

Overview

Status Options control the available statuses for jobs, customers, projects, estimates, invoices, tasks, leads, deals, purchase orders, sales orders, bills, and tickets. Each status has a color, a position in the workflow, and optional sub-statuses. Some statuses are system-locked (required for Forz to function), while others can be customized or added.

Before You Begin

Prerequisites:

  1. You have the Admin role in Forz.

  2. The record type you want to configure is enabled in Settings > Modules.

Understanding Status Options

Each status option has these properties:

Property

Description

Name

The display name shown on records and in dropdowns

Color

A hex color used for badges and visual indicators

Active

Whether this is an "active" status (active statuses keep records in open/working views)

Stepper

Whether this status appears in the status stepper bar (e.g., Draft > Sent > Viewed > Paid)

Lock

Whether this status is system-locked and cannot be deleted

Parent

The parent status (for sub-statuses only)

Default Status Workflows

Forz creates the following status workflows during account setup:

Job: Unscheduled > Scheduled > En Route > In Progress > Completed

Customer: Active > Inactive

Project: Unscheduled > In Progress > Completed > Archived

Invoice: Draft > Sent > Viewed > Partially Paid > Overdue > Paid > Void

Estimate: Draft > Sent > Viewed > Accepted > Declined

Task: New > In Progress > Completed

Lead: New > Contacted > Qualified > Converted > Lost

Deal: Qualified > Proposal > Negotiation > Won > Lost

Note: Statuses marked with lock: true are system-locked. They cannot be deleted because Forz relies on them for core workflows (e.g., job scheduling requires "Unscheduled" and "Scheduled" statuses).

Adding a Custom Status

  1. Click Settings in the sidebar navigation.

  1. Click the Status Options tab.

  1. Select the record type from the dropdown (e.g., Job).

  1. Click Add Status.

  2. Enter a Name for the status (e.g., "Waiting for Parts").

  1. Select a Color.

  1. Set Active to control whether records in this status appear in active views.

  1. Click Save.

Expected result: The new status appears in the list and is available in status dropdowns for that record type.

Adding a Sub-Status

Sub-statuses provide more granular tracking under a parent status. For example, "In Progress" might have sub-statuses like "50% Complete" and "Awaiting Inspection."

  1. Navigate to Settings > Status Options.

  1. Select the record type.

  2. Click Add Sub-Status next to the parent status.

  1. Enter a Name for the sub-status.

  1. Click Save.

Expected result: The sub-status appears nested under its parent. It inherits the parent's color and active state. The full status path displays as "In Progress > 50% Complete."

Note: Sub-statuses automatically inherit their parent's active state. If the parent is deactivated, all sub-statuses are deactivated too. Sub-statuses do not appear in the stepper bar by default.

Editing a Status

  1. Navigate to Settings > Status Options.

  1. Select the record type.

  2. Click the status you want to edit.

  1. Update the Name, Color, Active, or Stepper fields.

  1. Click Save.

Expected result: Forz saves the changes. If you renamed the status, all records currently using the old name are updated to the new name automatically.

Warning: Renaming a status updates all records with that status. The controller calls update_related(old_status, new_status) which runs UPDATE ... SET status = new_status WHERE status = old_status. This happens immediately, not as a background job.

Deleting a Status

  1. Navigate to Settings > Status Options.

  1. Select the record type.

  2. Click the status you want to delete.

  3. Click Delete.

Expected result: The status is soft-deleted to the trash bin and removed from the list. It is no longer available in dropdowns.

Warning: System-locked statuses (shown with a lock icon) cannot be deleted. These include core workflow statuses like "Unscheduled," "Scheduled," "Draft," "Paid," etc.

Stepper Behavior

The stepper is the horizontal progress bar shown on record detail pages. Statuses with stepper: true appear as steps in order of their position.

  • Statuses with stepper: false (e.g., "Void," "Archived," "Declined," "Lost," "Cancelled") are excluded from the stepper. These represent terminal states that are not part of the normal forward progression.

  • The stepper shows the current status highlighted and previous statuses as completed.

Active vs. Inactive Statuses

  • Active statuses (active: true): Records in these statuses appear in default list views and active counts. Examples: "Unscheduled," "Scheduled," "In Progress."

  • Inactive statuses (active: false): Records in these statuses are considered closed or completed. They are excluded from default list views. Examples: "Completed," "Paid," "Void," "Lost."

When a parent status's active state changes, all sub-statuses automatically update to match.

Job Status Logic

Job statuses have special behavior:

  • Unscheduled: Available only when the job has no scheduled events.

  • Scheduled: Available only when the job has at least one scheduled event.

  • The status dropdown for a job excludes the current status and applies these rules automatically.

Common Scenarios

HVAC company adding a "Waiting for Parts" status

An HVAC company needs to track jobs that are paused while waiting for equipment. The admin adds a custom "Waiting for Parts" status (orange, active, stepper enabled) to Jobs. Dispatchers set this status on jobs when a part is on backorder. They filter the job board by "Waiting for Parts" to follow up with suppliers.

Plumbing company adding sub-statuses to "In Progress"

A plumbing company wants more granularity on in-progress jobs. The admin adds sub-statuses under "In Progress": "Rough-In" and "Final Inspection." Technicians update jobs to "In Progress > Rough-In" after initial work and "In Progress > Final Inspection" when ready for inspection. The dispatcher sees the full status path on the job board.

Electrical contractor customizing Lead statuses

An electrical contractor adds "Site Visit Scheduled" and "Proposal Sent" statuses between "Contacted" and "Qualified" in the Lead pipeline. The unlocked Lead statuses ("Contacted" and "Qualified") can be renamed, and custom statuses are inserted at the desired position using drag-and-drop reordering.

Troubleshooting

Problem

Solution

"Cannot delete this status"

The status is system-locked (lock: true). Locked statuses are required for core Forz workflows and cannot be removed.

"Status name already exists"

Status names must be unique per record type. Choose a different name.

"Sub-status disappeared after parent was deactivated"

Sub-statuses inherit the parent's active state. Reactivate the parent status to restore the sub-statuses. They are not deleted, just deactivated.

"Status change not reflected on existing records"

Renaming a status updates all records immediately. If records still show the old name, refresh the page or clear the browser cache.