Overview
Work Reports cover the operational side - what's waiting to be scheduled, what got finished, whether your crews completed their checklists, and whether the jobs made money.
Four reports in this group. Three are working lists; one, Job Costing, is where you find out whether the work was worth doing.
Available in the Web App. See Reports: Overview and Where to Find What for the shared controls.
When to Use This Group
You're planning next week's schedule and need to know what's outstanding.
You want to confirm your crews are completing their checklists properly.
You need to know whether a type of job is actually profitable.
You're reviewing what got done over a period.
A job felt like it lost money and you want to check.
Unscheduled Jobs
List of all unscheduled jobs.
Accepted work with nothing on the calendar - jobs the customer has already said yes to that nobody has booked in. Each row shows the work order number, title, account, service location, accepted date, last appointment, and the job's value.
The Value column is the one to sort by: it turns the list from "jobs to book" into "revenue waiting on scheduling." The Accepted Date tells you how long each customer has been waiting.
Filterable by account, service area, tag, business unit, job type, project manager, and account manager.
The report and the Schedule drawer serve different purposes. Use the drawer when you're actively booking work - you can drag jobs straight onto the calendar. Use this report when you want a list to review, export, or share. See Unscheduled Jobs Panel: Drag to Schedule.
Completed Appointments List
List of all completed appointments for jobs.
Every appointment marked complete in the period - when it was scheduled, when it was completed, who completed it, which job and account it belonged to, the service location, and the team members assigned.
Completed By is worth noticing: it records who actually marked the visit done, which isn't always the person assigned. Useful for verifying crew output, checking a customer's claim about when you were on site, and confirming visit counts on recurring work - Per Appointment billing counts completed appointments. See Recurring Jobs & Automatic Invoicing.
Only counts appointments marked completed. A visit that happened but was never marked won't appear, which is worth remembering before concluding a crew did less than they did.
Checklists
List of all checklists.
Checklist completion across your jobs. Each row shows the checklist name, how many items it has, a Progress figure of completed items against the total, and the work order and account it belongs to - so you can go from a gap straight to the job.
The value here is spotting patterns rather than individual misses. If the same item gets skipped across many jobs, the problem is usually the checklist - the item is unclear, unnecessary, or asks for something techs can't easily do. That's a template fix, not a training issue.
See Checklists for templates and item types.
Job Costing
Costs, collected amounts, and gross profit across jobs.
The most important report in this group, and the only one in the whole Reports section that tells you whether work was profitable rather than just how much of it there was.
Each job shows:
Approved Value - the work order total, from the accepted proposal plus any change orders.
Cost to Date - the labour and material costs recorded on the job so far. Labour comes from your team's compensation on their logged hours; materials come from the expenses recorded against the work order.
Collected Amount - payments received against the job.
Gross Profit Margin - see below.
Remaining to Collect - Approved Value minus Collected. What's still owed on the job.
Because Cost to Date is built from what's recorded, it's only as complete as your team's habits. A receipt nobody logged and hours nobody clocked are costs this report can't see - and every missing cost makes the job look more profitable than it was.
Remaining to Collect makes this double as a collections view: sort by it and you have your outstanding money ranked by job.
How the Margin Is Calculated
The formula is: 100 × (Collected − Cost to Date) ÷ Collected. When nothing has been collected, it shows 0% rather than an error.
Margin divides by collected revenue - money actually received - not by the job's approved value. This matches how job costing works on an individual work order, so the report and the job agree.
That has a practical consequence worth internalising: a finished job that hasn't been paid will show 0% or a negative margin. The costs are in and the revenue isn't yet. That isn't a loss - it's an unpaid invoice. Check Remaining to Collect and Invoice Aging before concluding a job went badly.
It also means margins on recent work look worse than margins on older work, simply because recent jobs have had less time to be paid. Compare like-aged periods rather than this month against last quarter.
Four Things That Move the Numbers
Unassigned team members still count. Someone unassigned from a job keeps their logged hours in its cost. Someone removed does not. See Unassign vs. Remove a Team Member from a Job.
Break and drive time only count if you pay for them. Your Time and Payroll settings decide which hours carry labour cost.
Jobs cost at historical rates. A job is costed using the pay rate in effect when the work happened, not today's. See Compensation History & Change Logs.
Materials count where they're recorded. An expense logged against the wrong job moves cost between jobs - one looks worse than it was, the other better. See Expense Reports for finding misfiled costs.
Job Costing is permission-gated. Not everyone will see it. Full detail in Job Costing & Compensations.
Pipeline Snapshots
Two simple counts round out the operational picture:
Work Order States - how many jobs are open versus closed for the dates you choose.
Proposal Statuses - where every proposal sits: Draft, Pending, Upcoming, Ongoing, Accepted, Completed, Rejected, Canceled, and Disputed.
Proposal Statuses is your sales pipeline in one view. A pile-up in Draft means quotes aren't going out; a pile-up in Pending means they're going out and not being answered - two different problems with two different fixes.
Tips & Best Practices
Clear Unscheduled Jobs weekly, highest value first. Treat it as a queue. A number that only grows means a bottleneck between selling and scheduling.
Look for repeated checklist misses, not one-offs. A single skipped item is a person. The same item skipped fifty times is a badly written checklist.
Check Remaining to Collect before judging a job's margin. Unpaid work always looks unprofitable here.
Record costs promptly so the margin means something. Unlogged receipts and unclocked hours inflate every margin in this report.
Review Job Costing on your biggest jobs first. That's where a thin margin costs you the most money.
Insist appointments get marked completed. Two reports here depend on it, and so does recurring billing.
Pair Job Costing with Revenue by Job Type. Revenue tells you what sells; Job Costing tells you what's worth selling.
Things to Know
Cost to Date includes both labour and materials recorded on the job.
Gross Profit Margin is 100 × (Collected − Cost to Date) ÷ Collected, and shows 0% when nothing has been collected.
Completed but unpaid jobs will show 0% or negative margin until payment is received.
Remaining to Collect is Approved Value minus Collected - your outstanding money per job.
Unscheduled Jobs supports filters for account, service area, tag, business unit, job type, project manager, and account manager.
Completed Appointments List only counts appointments actually marked completed, and records who completed each one.
The Checklists report shows per-checklist progress with the work order and account against each.
Job Costing is permission-gated and won't appear for every role.
Unassigned team members' labour cost remains in Job Costing; removed members' does not.
Whether break and drive time count toward labour cost depends on your Time and Payroll settings.
All reports here export to CSV, XLS, and XLSX.
Troubleshooting
A finished job shows 0% or negative margin.
Check whether it's been paid. Margin is based on collected revenue, so a completed job awaiting payment shows its full costs against little or no revenue. Remaining to Collect and Invoice Aging will confirm.
This month's margins look much worse than last quarter's.
Recent jobs have had less time to be paid, and unpaid work depresses margin here. Compare periods of similar age.
A job's margin looks too good to be true.
It probably is. Check whether all its materials were recorded and all hours clocked - missing costs are the usual reason a job looks unusually profitable.
A job I know is unscheduled isn't in the report.
Check whether it's closed or cancelled, and check your filters. The Schedule drawer and this report apply different defaults, so a job can appear in one and not the other.
A crew's completed appointment count looks too low.
Appointments that happened but were never marked completed don't count. Check the work order's appointments directly.
Job Costing shows labour cost higher than the people on the job.
Someone was unassigned rather than removed. Their hours still count. Show unassigned members on the work order to see whose.
A team member's cost is missing from a job entirely.
Either they were removed from the job, or their compensation is overridden to no compensation on it.
Labour cost looks lower than the hours logged.
Break or drive time is set as unpaid in your Time and Payroll settings, so those hours don't carry cost.
I can't see Job Costing at all.
It requires permission. Ask an admin to review your role.
Have questions? Reach out via the support chat or email support@motionops.com.
