← Help Center

What does the work-order lifecycle look like?

Last updated 2026-04-28

Every work order in TradelyHQ moves through four statuses. The transitions are tracked in audit_log so you can answer "who changed what and when" without SSH'ing into a database.

Open

The default state when a WO is created. No tech assigned yet. Visible to:

Move out of Open by assigning a tech and changing status to progress (Active in the UI).

Hold

Use this for "we know about it, we're not actively working it" — waiting on parts, waiting on access, weather delay, client-side approval pending. Visible to all parties; counts as "in progress" but flags differently in dashboards.

WOs on Hold for > 7 days get surfaced in the admin Reports tab as a "needs attention" rollup.

Active (status='progress')

Tech is en route, on-site, or working. Tech-portal flow on this status:

  1. Pre-arrival: optional intake photos, drive directions
  2. Arrival: GPS check-in stamps lat/lng + timestamp on the WO
  3. On-site: completion diagnosis + fix fields, expense capture, photo upload
  4. Departure: customer signature capture, final completion photos, optional payment-link amount
  5. Flag (optional): "Quote Needed" if the work will exceed NTE

Complete

Tech has marked the work done. Triggers:

Cancelled (separate boolean, not a status)

If a job is cancelled before completion, set cancelled=true with a reason. The WO stays in the audit trail (you don't delete it) but drops out of active queues.

Reopened

A client can request a re-visit on a completed WO if it's within 3 business days. This sets reopened_at + reopened_reason and flips status back to progress. After 3 business days, the WO is locked and a request would have to be a brand-new WO instead.

Why the 3-business-day lock?

To prevent the "client never signs the completion report → indefinite limbo" failure mode. Without the lock, an unhappy customer could leave a WO in a never-confirmed state forever, blocking invoicing and tying up audit reporting. After 3 business days, TradelyHQ automatically marks the signature as waived and treats the WO as fully closed.

Still stuck? Ask for a demo →