πCosts & Profitability
Log expenses, set labor rates, and see real margins on jobs and customers.
Costs turns Shortcut from "what did I bill?" into "what did I actually make?". Log what you spend, tell Shortcut what labor really costs, and margins show up across the app. Open Costs β
The three sections
Services β what each service costs you to deliver; margins update as you change the numbers.
Costs & expenses β log real spend and set budgets.
Chemicals & materials β material costs for chemical work.

Log an expense
Open Costs β Costs & expenses.
Click Log expense.
Pick a category β Fuel, Vehicle, Equipment, Supplies, Insurance & comp, Software & phone, Other β enter the amount and date, and optionally attach a note or photo of the receipt.
You'll see budgets vs. actuals per category and a six-month spend trend.
Set your loaded labor rate
Your loaded hourly rate is what an hour of crew time really costs you β not just the wage, but the taxes, workers' comp, and overhead that ride on top of it, plus the drive time between stops. Set each employee's wage in Settings β Users, then answer two questions in Costs: how much rides on top of wages, and how much of the day is windshield time. Owner-operators who don't take a wage can use owner mode, which puts a value on your own time instead.
Measured and estimated labor
Every completed visit's labor is one of three kinds:
Measured β real time: Time Clock punches, the visit's recorded arrival and completion, or billed hours on an hourly service.
Estimated β the visit has no recorded time, so its estimated duration (or the service's time per stop) stands in.
Unavailable β there's no time to go on, or no labor rate to price it with. Shortcut shows a dash, never $0.
Your headline profit numbers use measured labor where it exists and estimated labor where it doesn't. That covers Net margin here in Costs, Net profit on the Dashboard and in Job Costing, and the weekly digest. The Dashboard says so under the tile: "Includes estimated labor when time is missing."
Job Costing in Reports shows the split:
Known labor, with how many visits are measured, estimated, and unavailable
Net profit for all visits, next to Measured net for measured visits only
a Measured margin column for every job, customer, service, or crew
If some visits' labor is unavailable, Job Costing's Net profit reads Unavailable and this page shows the margin before labor, so you never see a total that's quietly missing labor. The usual fix is setting your labor rate (above) and giving each per-stop service a time estimate on the Services tab.
Where your labor numbers come from
To price labor, Shortcut needs to know how many hours a job really took. By default it works that out from how long the visits ran, divided across the day.
If your crews use the Time Clock, Shortcut uses real hours instead. On any day where every person on the crew has a complete shift, it prices that day's jobs using the hours they actually punched.
When that's happening, a small Clock data badge appears on the Effective hourly rate tile in Costs and on the Dashboard. Hover it to see how far it goes: "Hours use recorded clock time on 14 of 20 crew-days; the rest use visit spans." The route efficiency card also switches from Default to Auto and shows the math it used.
Why it's all-or-nothing per day
A crew day only switches over when everyone rostered that day has a complete shift. One person missing means the whole day keeps the visit-based estimate. That's deliberate: half a crew's punches would make the day look like half the labor it really took, and every margin built on it would be too high.
The most common reason a crew never switches over: somebody on the crew never clocks in. An office manager or an owner listed on a crew who doesn't punch will hold that crew on estimates indefinitely. The "N of M crew-days" figure in the tooltip is how you spot it β if it's stuck near zero for one crew, check who's on the roster.
What clock data doesn't change
Days with no punches keep the visit-based estimate. Nothing goes to zero and no margin goes blank because a crew forgot to clock in.
A combined visit is still one visit's worth of labor. If a crew does mowing and hedge trimming in one stop, the time on site is counted once, whether the hours came from the clock or from an estimate.
The twelve-month service margins under Revenue by service on the Dashboard still come from how long visits ran, not clock data. Hover the "visits Β· 12 mo" line and it says so.
Service margins are measured, never guessed
Shortcut shows a margin for a service only when it can actually measure it β from visits where that service was done on its own (or where a clean comparison exists). Each margin shows what it's based on: under each service in Revenue by service on the Dashboard you'll see 5 of 8 visits Β· 12 mo.
If there isn't enough real data yet, you'll see a dash; hover it for "Needs more single-service or comparable visits." (If the blocker is a missing rate instead, it says "Add a loaded hourly rate in Costs to measure margins.") That's expected, not broken β as more visits complete, the margin fills in.
How service margins are counted:
Combined visits count labor once. If a crew does mowing and hedge trimming in one stop, the hour on site is one hour of labor β not one hour per service.
Add-ons count toward their own service. A hedge add-on's revenue shows under hedge trimming, not under mowing.
Products count toward the service they were sold under. Three shrubs on a planting visit add their price and their cost to planting. See Materials from products.
Service margins never use estimates. A service's margin is either measured from real visits or not shown. (Your overall profit works differently β see Measured and estimated labor.)
Materials from products
Every service can carry a default material cost, which Shortcut uses as an allowance on each visit. When a visit has products on it (mulch, plants, a sprinkler head), Shortcut uses what those products actually cost you instead: quantity Γ unit cost for each product line. That replaces the service's default material cost for that visit. Visits without products keep using the default.
You can see which one a visit used in its Cost breakdown card (click the customer name in Dispatch to open the stop's detail panel). The Materials row says:
Materials Β· measured β the cost came from the visit's products, with a note such as "Materials from 2 product lines (replaces the service default of $12.00)".
Materials Β· modeled β no products, so the service default applies (Service default).
Materials Β· incomplete β at least one product on the visit has no unit cost.

A product's price counts as revenue for the service it was sold under, and its cost counts as that service's materials. That's true here in Costs, in Job Costing, and on the customer's Profitability tab.
When a product has no cost
A product line with no unit cost adds nothing to materials, so a margin built on it would look better than it is. Shortcut marks it incomplete instead:
The top of Costs reads Margin incomplete Β· 1 product line(s) missing cost, with the known materials, labor and overhead underneath.
Net margin says "1 product line(s) missing cost".
Net profit on the Dashboard reads Incomplete.
Margin badges on estimates and visits say "1 product line has no cost".
Known labor is still counted. To fix it, add the cost on the visit's product (Dispatch β stop detail β Products β Edit) before the visit's invoice goes out. To stop it happening, give every product a Unit cost in Settings β Products so new lines start with one.
Where margins show up
Dashboard β Net profit with its margin (and links to your loaded rate, route efficiency, and per-stop overhead), Effective hourly rate, and Revenue by service with each service's margin.
Reports β Job Costing β profit for every completed visit, or by customer, service, or crew, with measured and estimated labor side by side. See Reports.
Dispatch β a stop's detail panel has a Cost breakdown card per service: revenue, labor, materials, overhead and net, estimated and actual.
Estimates β each product line shows its margin as you build the estimate, and the estimate's margin includes the products, counted once.
Jobs page β a small margin dot per job (green/yellow/red) so you can spot money-losers while scheduling. (Turn it off in Costs if you don't want it.)
Customer profile β Profitability tab β revenue, costs, and margin for the last 12 months, month by month and visit by visit.
Weekly digest
Shortcut emails you a weekly cost & profit digest: Revenue earned, Revenue paid, Net profit, and Outstanding for the week, plus customers who became at-risk or recovered, and a button to open your Dashboard. The numbers follow the same rules as the Dashboard β your local calendar week, revenue on the day the work was completed, and net profit that includes estimated labor where time is missing.
Change the day it arrives, or turn it off, in Costs.
Last updated