All articles

2026-08-15 · plumbing

Plumbing Business Operations Checklist: Dispatch to Invoice

Use this plumbing business operations checklist to catch unassigned jobs, late estimates, callbacks, invoice blockers, and owner-only decisions.

Plumbing Business Operations Checklist: Dispatch to Invoice

A plumbing business operations checklist should show which jobs need action today, who owns the action, and what will prove the work is finished.

The useful version is one page. It catches six exceptions: an unassigned visit, a stale job status, a promised estimate that is late, an unresolved callback, a completed job that cannot be invoiced, and an owner-level decision holding up the next step.

Copy the control sheet below into a shared note or spreadsheet. Run it when the office opens and again before it closes. You do not need a new dashboard to test it.

The one-page daily plumbing control sheet

Copy these eight field labels into a shared note or spreadsheet:

Exception | Trigger | Linked record | Next action | Responsible person | Due | Completion proof | Status

Pre-fill six lines:

  1. Schedule exception | Today's visit lacks an assignment, valid address, or confirmed window by the morning cutoff | [job link] | [next action] | [person] | Before the affected window | Assignment or approved reschedule saved; customer update timestamped | Open / Working / Closed / Decision needed
  2. Stale field status | Active job has not moved within the company's limit for that status | [job link] | [next action] | [person] | Before the next customer is affected | Field status and downstream schedule agree | Open / Working / Closed / Decision needed
  3. Late estimate | Promised-send time passed without delivery | [estimate link] | [next action] | [person] | Customer promise time | Delivery timestamp, declined status, or named blocker with owner and deadline | Open / Working / Closed / Decision needed
  4. Callback | Customer reports a concern tied to recent work | [original job and call link] | [next action] | [person] | Company response deadline | Resolution recorded or exact decision with authorized person | Open / Working / Closed / Decision needed
  5. Invoice blocker | Completed job lacks a required billing input or sent invoice by cutoff | [job or invoice link] | [next action] | [person] | Billing cutoff | Invoice delivery timestamp or named blocker with owner and deadline | Open / Working / Closed / Decision needed
  6. Owner decision | Routine work cannot continue within office or AI authority | [source links] | [exact decision needed] | Owner | Before customer or operating deadline | Decision recorded, communicated, and carried through to closure | Open / Working / Closed

Keep the sheet to these six lines for the first week. If one category has no exception, leave it blank. The detailed authority split appears below, so the daily sheet stays usable.

A worked example: missed arrival to sent invoice

This is a hypothetical operating example, not a client result.

At 8:05 a.m., the control sheet finds that Job 1842 has an 8:00–10:00 arrival window but no technician assignment. The source record has the customer's address, a water-heater diagnosis request, and the promised window. The dispatch rules do not allow the AI employee to choose between two technicians with different certifications.

The AI employee opens a schedule exception, gathers each technician's current route and approved skill record, and sends the dispatcher one question: "Job 1842 needs assignment before 8:20. Sam is 18 minutes away and Lee is 26 minutes away. The job type requires the skill flag shown only on Lee's profile. Confirm Lee or choose another technician."

Dispatch confirms Lee. The AI employee assigns the job within its configured permission, sends the approved arrival update to the customer, and records both timestamps. The schedule row closes because the assignment and customer notice are visible.

At 11:40, the job status remains "working" beyond the company's chosen stale-state limit. The AI employee asks for the current state. Lee replies that the diagnosis is complete and an estimate is coming after supplier availability is confirmed. The system updates the job status and creates a late-estimate watch with a 2:00 p.m. promised-send time.

At 1:35, supplier information arrives. The AI employee attaches it to the estimate record and alerts the authorized estimator. The estimator confirms scope and price. The AI employee sends the approved estimate and stores the delivery timestamp. The customer accepts at 2:12.

After the work is completed, the invoice-readiness check finds the required customer signature but no final field note. The AI employee requests that one item from Lee. When the note arrives, the office's billing rule passes. The invoice is created and sent through the connected billing process, then the delivery event closes the invoice-blocker row.

The owner never receives the routine requests. If the customer had asked for a discount outside policy, the AI employee would have paused that action and sent one decision brief. It would then record and carry out the decision.

Why the sheet starts with exceptions

Field-service platforms already expose much of the raw material.

Jobber's dashboard documentation lists overdue scheduled items, unassigned work, unscheduled work, jobs requiring invoicing, and outstanding balances. Housecall Pro's job and estimate list reporting guide describes filtering records by job status, estimate status, dates, value, and invoice-sent information.

Those views answer "what exists?" The control sheet answers "what must happen next?"

ServiceTitan's guide to field-service dashboards covers reporting across technician performance, revenue, fleets, and field activity. It also describes dashboard use from dispatch through final invoice. Monthly reporting may need that breadth. A daily plumbing check should be smaller because the owner needs an action queue, not a tour of every healthy metric.

Callbacks deserve their own row. ServiceTitan's contractor playbook on recalls, callbacks, and warranty issues discusses linking the original technician and job, tracking time and status, and reviewing the operational impact. That history prevents a customer concern from becoming an isolated phone note.

Who completes what

Use this authority split before connecting any automation.

AI completes

  • reads only the records and fields it has been authorized to use;
  • detects one of the six configured exceptions;
  • requests missing routine information;
  • sends approved updates through connected channels;
  • changes permitted status or assignment fields;
  • keeps the exception open until completion proof appears;
  • prepares a decision brief when authority runs out;
  • records the decision and finishes the affected work afterward.

Office confirms

  • technician or dispatcher choices that depend on live field knowledge not present in the system;
  • technical scope, pricing inputs, and invoice readiness under existing company policy;
  • warranty handling that remains within normal policy;
  • corrections when a source record is incomplete or wrong.

Owner decides

  • discounts, credits, write-offs, or disputed amounts outside policy;
  • overtime, subcontracting, or capacity exceptions;
  • complaints with legal or material reputation risk;
  • changes to safety, warranty, pricing, or service policy.

This split is a starting policy, not a universal rule. Adjust it to the licenses, systems, staff roles, and risk limits in your company.

What must connect before the AI employee can act

The workflow needs reliable access to the records that drive each row. In most shops, that means some combination of:

  • field-service schedule, job, estimate, technician, and invoice records;
  • business phone and message threads;
  • email used for estimates and billing;
  • accounting or payment status;
  • company policies for scheduling, communication, callbacks, pricing, and billing;
  • an audit log that records each read, action, message, and status change.

The integration can be direct through an API, an approved browser workflow, or a controlled export and import. Capabilities differ by platform and account. Do not assume the system can write a field, send a message, or create an invoice until that exact action has passed a test in your environment.

If a connection fails, the employee should not guess. It should preserve the exception, identify the unavailable source or action, continue unaffected work, and route a short system-failure notice to the operating owner. The fallback can be a read-only control sheet while write access is repaired.

Set up the manual version in 30 minutes

Minute 0–10: choose the source fields

Open yesterday's schedule and locate the exact fields listed in each row. Write down the system and field name. If the office uses two different definitions of "completed," settle that before continuing.

ServiceTitan's dashboard business metrics documentation distinguishes revenue tied to job-completion dates from sales tied to estimate-sold dates. Your platform may use different logic. The point is to name the date and status behind each rule.

Minute 10–20: set the six triggers

Choose the morning cutoff, stale-status limits, estimate promise rule, callback response rule, billing cutoff, and owner-decision threshold. Use the promises and policies your company already follows.

Minute 20–30: run yesterday's work

Create one line for every triggered exception. Add the next action, responsible person, deadline, and completion proof. Run the sheet again at closing time and mark what finished.

Do this manually for several days. Remove noisy triggers and fix status definitions before automation.

Automate only after the manual check is reliable

Start with read-only detection. Compare the AI employee's exception list with an experienced office manager's list.

Next, permit routine requests and approved customer updates. Test each action with sample records and confirm the audit log.

Add write access one action at a time. A schedule update, estimate delivery, and invoice creation are separate permissions and need separate tests.

Use examples that should stop: missing technician skill data, disputed scope, an unapproved discount, a customer complaint, and a system outage. Confirm that only the affected action pauses and that the employee resumes after an authorized decision.

Keep billing blockers separate from receivables

A completed job that cannot be invoiced and a delivered invoice that remains unpaid need different actions.

Use the invoice-blocker row until the invoice is sent. After delivery, move the account into your receivables process. QuickBooks explains that its accounts receivable aging reports group outstanding balances by aging period and show the underlying customer transactions.

ComfortGrowth's plumbing invoice follow-up workflow covers the next stage. For intake and on-call handling before dispatch, use the after-hours plumbing missed-call workflow.

Measure finished exceptions

Use your first manual week as the baseline. Track:

  • exceptions opened by category;
  • exceptions closed by the promised time;
  • items reopened because the source record was wrong;
  • customer updates sent before a promise was missed;
  • completed jobs still blocked from invoicing at close;
  • decisions that reached the owner without the source records or exact question.

Do not treat messages sent or rows created as success. The completion proof in each row is the measure.

Get a completed map of yesterday's unfinished work

Review the AI employee workflows available for plumbing companies, then request a free business audit. Send yesterday's unfinished-job list. ComfortGrowth AI will return a completed exception map showing what an AI employee could own, what your office should confirm, and which decisions still require you.

Next step

Want this running in your business?

We implement AI employees that do the work—follow-ups, inbox, invoices, scheduling—within the authority and escalation rules set for the job.