Work order software that gets every job done and billed.

Templates pre-fill the details, statuses match how your shop runs, When-If-Then automation moves each work order along, and an Unbilled list catches finished work that hasn't been invoiced.

Recurring jobs on 6 set frequencies Included in every plan iOS & Android
Forz job detail for an RTU compressor repair with status, assigned tech, contact, parts, labor and a $519.75 total
A job with its status tracker, contact, parts pulled from van stock, labor and total.

The problem with the old way

Work orders scattered everywhere

Job details live on paper tickets, in text threads, and in the dispatcher's head. When a tech asks what the scope is, somebody goes digging.

Every job rebuilt from scratch

Scope of work, line items, and tax rates get retyped for the hundredth time. On a good day it's slow. On a bad one, you get wrong line items and missed details.

Finished work that never gets billed

The job got done, the paperwork didn't. Completed work orders sit unbilled for weeks, sometimes for good, and nobody notices until the bank account does.

How work orders works in Forz

Job templates that pre-fill the work order

Store a job type, description, labels, tax rate, and line items in a template. Choose Use A Template on the New Job drawer, pick the customer, and the rest is filled in. Duplicate a template to build a variation fast.

Statuses and job types you configure

Start from Unscheduled, Scheduled, En Route, In Progress, and Completed, then add your own statuses, sub-statuses, and colors in Settings > Status Options. Job types such as Inspection, Repair, and Maintenance categorize the work for filtering and reporting.

Recurring work orders, generated automatically

Choose Weekly, Biweekly, Monthly, Every 3 Months, Every 6 Months, or Yearly, with a next date and an optional end date. Forz generates each job with the customer, service address, description, and line items, and every generated job gets its own number and enters the normal workflow.

When-If-Then automation on every job

Trigger a workflow when a job is created or updated, or run it by hand. When the conditions match, Forz can send an email, create a job task, add labels, update the status, set a field value, or send a webhook.

Custom fields and labels for your trade

Add job fields in 8 types: Text, Paragraph, Dropdown, Multiselect, Checkbox, Date, URL, and Attachment. A Refrigerant Type dropdown or a Permit Number field captures what your trade tracks, and labels like Warranty or Parts Ordered make jobs easy to filter.

Your own work order numbers

Replace the plain sequence with a format such as WO2609-001, built from a prefix, suffix, year, month, day, and dashes. Set a default for Jobs, and give each recurring schedule its own format for the jobs it generates.

A job list built for dispatchers

Search by job number or title, filter by created date, due date, status, job type, assignee, skills, and labels, and update jobs in bulk. Save any filter combination as a personal view and make it the one that loads by default.

An Unbilled list that protects revenue

Mark the statuses that mean done as billable, and every job in them without a sent invoice lands on the Unbilled list, oldest first, with a note on what it still needs. Warranty, service-plan, and internal visits can be marked non-billable with a reason.

The life of a work order in Forz

  1. Create the job. Click + New under Jobs and pick the customer, service address, system, and job type, or start from a template. Forz titles the job from the system type and job type, for example “HVAC Maintenance”, and you can rename it.
  2. Add the scope. Write the job description, add products and services on the Overview tab, attach files, and fill in any custom fields.
  3. Schedule it. Place it on the calendar, accept an AI schedule suggestion, or leave Exclude from routing unchecked so it shows up in the route planner.
  4. Work it in the field. The assigned technician sees the job on their phone, captures photos and signatures, and runs job timers.
  5. Move it through statuses. Each status change is time-stamped, and workflows can send emails, add labels, set field values, or create tasks as the job moves.
  6. Bill it. Convert > Invoice copies the line items into a draft invoice. Anything done but not invoiced shows up on the Unbilled list.

Still on paper? Start from the free HVAC work order template and move to Forz when you’re set.

What Forz does when you save a job

On save, Forz…Details
Assigns a job numberSequential and unique, or your own format such as WO2609-001
Sets the first statusThe first status in your job workflow, usually Unscheduled
Creates dispatch infoA default time window (Any Day, 6:00 AM–6:00 PM) and a 30-minute duration
Fills smart listsWhen the system has smart list templates configured
Creates an inspectionWhen the job type is Inspection, the Inspection module is on, and a system is selected
Logs the creationA note records who created the job

Three work order setups

HVAC: a Waiting for Parts status

An HVAC shop adds a Waiting for Parts status (orange, active, shown in the status stepper) for jobs paused on a backordered part. Dispatchers filter the job list by that status to follow up with suppliers, and a saved view keeps that filter one click away.

Fire protection: quarterly inspections with their own numbers

A fire protection company sets up a recurring job on Every 3 Months, with inspection labor and standard parts as line items. The schedule carries its own number format, and year and month parts use each occurrence’s scheduled date, so every quarter’s job is easy to find by number.

Warranty callbacks that stay off the billing queue

Open the Warranty Callback job type in Settings > Job Types and set a Non-Billable Reason. Every new job of that type starts non-billable and never clutters the Unbilled list. Any single job can still be switched back to billable from its Billing Status row.

Works with the rest of Forz

Setting it up? The Creating Jobs guide and the Managing Jobs guide walk through each screen.

Frequently asked questions

Yes. Job statuses are set in Settings > Status Options. The default path is Unscheduled, Scheduled, En Route, In Progress, and Completed, and you can add custom statuses such as Waiting for Parts, sub-statuses under a parent status, and a color for each. Unscheduled and Scheduled are locked because scheduling depends on them. When-If-Then workflows then automate the handoffs: when a job is created or updated and your conditions match, Forz can send an email, create a task, add labels, update the status, set a field value, or send a webhook.

With recurring jobs. Choose Weekly, Biweekly, Monthly, Every 3 Months, Every 6 Months, or Yearly, set a next date and an optional end date, and Forz generates standard jobs with the configured customer, service address, job type, description, and line items. Each generated job gets its own number and enters your normal workflow, so quarterly sprinkler inspections or monthly elevator maintenance appear on time for scheduling and billing. Edits to the recurring template apply to future jobs only.

Forz is $50 per user per month billed annually, or $60 month-to-month, with a 10-user minimum. Every module is included in every plan, including work orders, job templates, workflows, custom fields, scheduling, invoicing, and the iOS and Android apps with offline access. One standard data import and guided onboarding are included, and month-to-month billing has no annual lock-in.

Yes. In Settings > Record Numbering you build formats from a prefix, a suffix, the year, month, and day, and dashes, and Forz adds a three-digit counter at the end, so a job becomes WO2609-001 instead of a plain number. Set one format as the default for Jobs or pick a format on each new job. Numbers already issued never change when you add or edit a format.

Add products and services on the job's Overview tab, then click Convert > Invoice. Forz creates a draft invoice with every line item copied from the job, which you review and send. Each job supports one invoice, and a job whose only invoice is still a draft stays on the Unbilled list until the invoice is sent.

Yes. Open the job's Sub Jobs tab and click the + button (New sub job). Each sub-job inherits the parent's customer, service address, system, and job type, and gets its own job number and status, so each piece is tracked separately. For multi-visit work that also needs its own tasks, invoices, and billed and paid totals, group the jobs under a project.

See work orders in action

Get a 30-minute personalized demo and watch how it works on your own workflows.

Free standard data import Free 30-minute demo, no commitment