Job Costing | Best Practices

In this article:

Before Job Costing

Job Costing Reporting

 

Job Costing is only available on Professional or Enterprise LMN plans.

Before Job Costing

Step 1: Foundational Categories

Before jumping into LMN setup, make sure you're clear on the foundational categories that make up job costs:

Direct Materials Raw items used on the job (e.g., mulch, sod, concrete)
Direct Labor Wages for field crews or employees directly working the job
Equipment & Subs Usage-based or outsourced costs
Overhead Allocation Indirect costs such as admin, rent, fuel – calculated via your budget

Step 2: Accuracy Checklist

When following the Estimating Workflow for any type of work, if you want to make sure Job Costing is as accurate as possible you are going to need to ensure the following: 

☑️ Ensure all Materials, Equipment, Subcontractors, and Labor are added to the estimate via the Price List

☑️ While it is possible to Job Cost using ‘Time Materials' (Legacy), there are significant caveats to doing so. If you want to make Job Costing as simple as possible it is always best to pull directly from the Price List.

Step 3: Setup Timesheet Settings & Wage Costs

Next, set up your Timesheet Settings and Wage Costs to ensure accurate crew time tracking and precise labor cost data for Job Costing:

Timesheet Settings

  1. First navigate to Settings > Timesheet Settings
  2. Set Daily Hour expectations and overtime alerts

Wage Costs

  1. Navigate to Settings > Manage Users & Staff 
  2. Click on the employee's name
  3. Click Edit Staff Member
  4. Click on Time Tracking & Payroll tab
  5. Click on Add Wage Costs
  6. Set Wage Cost details
  7. When finished, click Save

Doing this will ensure timesheets and reports reflect real labor costs.

💡If an employee has multiple different wages depending on the type of work they are doing (maintenance work vs snow removal), you should add in multiple wage costs and then tie each to a unique payroll code. 

You can then set the default payroll code on the job to ensure accurate job costing. (You can also set default payroll codes for each job type under Settings > Job Types > Payroll)


Step 4: Enable Material Tracking (2 Options)

Enable material tracking at the job level after an estimate has been converted into a job. You can choose to track materials using both available methods, or just one. 

Option A: Tracking via Timesheets Option B: Tracking via Vendor Bills
  1. Navigate into a Job
  2. From the Menu, click on the Materials & Equipment tab
  3. Ensure that the ‘Track on Timesheets’ toggle next to each item is checked ON for all Material & Equipment you need to track for Job Costing.
⚠️ Note: In some cases these are not defaulted to track by default, you will need to ensure that you double check this tab on all of your Jobs to ensure accurate tracking

The other way you are able to track Job Costing is the Vendor Bills tab

  1. Navigate into a Job
  2. From the menu, click Vendor Bills tab
  3. Click + Bill
  4. Create the Vendor Bill / Upload a photo of it to the system
  5. Allocate materials, subs, or equipment to the job
  6. Optional: Export to QuickBooks to avoid double entry
💡Note: When using Vendor Bills to track actuals, it's common to purchase materials for more than one job on a single receipt. In LMN, you can allocate each line item and its quantity to specific jobs, all within one Vendor Bill entry.

Step 5: Set Primary Source of Job Costing Actuals

Set the Primary Source of Job Costing actuals to ensure we are capturing Job Costs in a way that makes most sense for our business needs.

  1. Click on the Job Costing tab within the Job > Overview Tab
  2. Click on the Gear Icon in the top right corner of the screen
  3. Select the source of job costing actuals as Vendor Bills & Timesheets
  4. Make sure you set this as default
⚠️ Make sure to set up material tracking carefully when using this method to avoid double-counting materials or equipment costs.
 ⚠️ Any materials that are coming from Vendor Bills should be set not to be tracked on timesheets. If you do both, the costs will be duplicated.

Generating Invoices Notes:

  • To track actual revenue against a job for job costing purposes, you must generate invoices in your LMN account.
  • Please refer to this section for step-by-step instructions on generating invoices in LMN: Generating Invoices in LMN
  • Once invoices have been generated/created, the revenue will automatically reflect in the Job Cost Overview tab

 

Job Costing Reporting 

Lastly, and most importantly, let’s go over how to use LMN Analytics to report on Job Costing:

Step 1: Monitor Active Jobs Using Job Listing Analytics

  1. Navigate to: Analytics > Jobs > Job Listing
  2. Set Your Filters:
    1. Filter by Job Group or Division to narrow the list and focus your review
    2. Apply a Date Filter to review current jobs or analyze historical performance
  3. To use the Report, scroll across to view Estimated vs. Actuals for each job within the selected group or division. This gives you real-time insight into where your team stands against budgeted expectations

Why It’s Important:

  • Quickly catch overages on labor, materials, equipment, and subcontractor usage
  • Identify lagging performance where crews may be falling behind targets
  • On the flip side, it also shows where you’re ahead on hours and exceeding profit expectations
Use Case:
This report empowers you to take immediate action whether that means stepping in to course-correct a struggling job or recognizing teams that are outperforming.
💡Tip: If you are concerned about missing invoices (because the invoices do not have specific dates) you can use this report to find missed invoices. Simply compare the estimated revenue column to the actual revenue.

Step 2: Get a Macro View with Job Cost Analysis Reports

  1. Navigate to: Analytics > Jobs > Job Cost Analysis
  2. Once in the dashboard, you’ll see several powerful reports that offer a higher-level look at job performance and estimator accuracy.
Top 10 Jobs Most Over by Estimated vs. Actual Hours Top 10 Jobs by Actual Hours
  • Compares estimated hours to actual hours logged
  • Highlights the variance as a percentage
  • Ranks jobs with the highest total hours recorded
  • Great for identifying labor-heavy jobs that may need tighter oversight
Why It’s Important:
Helps spot where estimators may be underquoting labor—leading to lower job profitability and poor resource forecasting.
Why It’s Important:
Useful for analyzing time-intensive work and determining if staffing or scheduling adjustments are needed.

Key Reports for Deep Dive

Actual vs. Estimated Overview Profitability Report
  • Summarizes all job-related estimated vs. actual costs in one high-level view
  • Filter by Job Group, Division, or Crew Lead for more targeted analysis
  • Displays total gross profit and net profit across jobs
  • Can be filtered by any combination of job attributes

Why It’s Important:
Allows you to review:

  • Overall team performance
  • Individual crew or crew lead performance
  • Job that consistently hit or miss their targets

Use this data to coach teams, improve forecasting, and refine labor expectations.

Why It’s Important:
Shows which jobs, and segments (using filters) are actually making you money.
Use it to:

  • Refine your bid strategy
  • Identify high-margin work
  • Avoid job segments that consistently underperform

Other Notable Insights in Job Cost Analysis

Most Profitable Jobs by Gross Profit Lead Profitable Jobs Jobs Most Over on Hours
Great for recognizing high-performing teams and job segments Helps attribute profitability back to specific project leads, managers, estimators, or salespeople Useful for identifying recurring issues with scope creep or inaccurate labor forecasting

By combining insights from Job Listing and Job Cost Analysis reports, you can get a complete picture of your operational health, from real-time job tracking to high-level profitability reviews. These tools are critical for identifying patterns, making proactive adjustments, and ultimately improving your bottom line through more accurate estimating and better job execution.

 


Need more help?  Contact our Support Team by email at lmn-support@granum.com, through Live Chat, or by phone at (888) 347-9864

Signup for our Live Webinars or learn more about attending our in-person Bootcamps HERE

 

Comments

0 comments
Please sign in to leave a comment.