Construction inventory management software: what it must do
Most inventory software is designed around a shop or a warehouse: stock arrives, waits on a shelf and leaves through a checkout or on an order, and the software's job is to say how many are left.
A building business works differently. Materials are bought for a particular job, delivered to a site, carried in vans, cut, wasted, borrowed by the next job and sometimes brought back. The question that matters isn't "how many do we have?" It's "what did this job use, what did it cost, and where did the rest go?"
This guide is for contractors and trades (electrical, plumbing, HVAC, building and remodelling) who buy materials for jobs and keep some stock in a yard and in vans. It follows materials from yard to van to site to job, sets out what a stock system has to record at each step, and ends with a trial script for construction inventory management software.
Four kinds of stuff, and only two are inventory
Walk through a contractor's yard and you'll find four kinds of thing. They need tracking in different ways, and a lot of bad software choices start with treating them as one.
| Kind | Examples | Used up? | What you need to know | Cost usually goes to |
|---|---|---|---|---|
| Materials | Lumber, drywall, pipe, cable, conduit, light fixtures | Yes, built into the work | How many, where, and which job used them | The job |
| Consumables | Screws, anchors, tape, sealant, saw blades, gloves | Yes, a little at a time | Enough on hand to reorder before you run out | Overhead, or a set allowance per job |
| Tools | Drills, saws, laser levels, ladders, crimpers | No | Which one, who has it, when it's coming back | Overhead |
| Equipment | Mixers, generators, scaffolding, lifts, excavators | No | Where it is, hours used, when it's due for service | The job, at a daily or hourly rate |
Materials and consumables are inventory: a quantity that goes down when you use it and up when you buy more. Tools and equipment are assets: you track one particular item, who has it, and when it's due back or due for service. That's a different record and usually different software, sold as tool or asset tracking. (Overhead here means the general running costs of the business rather than one job.)
So decide which problem you have first. If drills keep walking off, you need a tool tracker; an inventory system won't fix it. If jobs look profitable until the supplier bills arrive, you need inventory that charges materials to jobs; a tool tracker won't fix that. Some products try to do both, so check which one a product was built around.
Three grey areas to settle up front:
- Big-ticket items bought for one job, like a water heater, an electrical panel or a run of cabinets, are materials that often never sit in stock. Record them against the job anyway. A serial number for the warranty belongs in the job's records; it isn't a reason to track the item like a tool.
- Wear parts like drill bits and blades are consumables.
- Offcuts need a rule: keep anything longer than a set length and scrap the rest, or your counts will never agree.
Where stock lives: the yard, the vans and the sites
A shop has a stockroom. A contractor usually has three kinds of place where materials sit, and each behaves differently.
| Location | What's there | Who takes from it | What goes wrong |
|---|---|---|---|
| Yard, shop or warehouse | Common stock, bulk buys, returns, offcuts | Anyone heading to a job | Things leave and nobody writes down where they went |
| Vans and trucks | What each tech uses every week | The tech who drives it | It drifts from the list, and restocking is done from memory |
| Job sites | Materials delivered for that job, sometimes in a locked container | The crew | Surplus never comes back; weather damage and theft |
A fourth place exists only in the records: in transit, meaning materials on a truck between the yard and a site. If your system can't show stock in transit, the records put it at one end while it's actually on the truck. That's harmless for an hour and confusing for a two-day transfer.
Each van is a location of its own. Give every van a stock list: what it should carry, a minimum for each item, and a level to restock it to. Materials used on a job come off the van, and the van is restocked from the yard as a transfer. Done weekly, that's the whole van-stock routine, and it means you know what a van is carrying without walking out to it.
A job site is usually a destination, not a location. If materials go to a two-day job and get used, issue them to the job: they leave stock and land on the job's cost. Make a site a stock location only when materials stay there for weeks and get drawn on over time, such as a lockup (a locked container or room on site) on a long project. Every location you add is one more that somebody has to count.
Eight movements cover everything
Once the places are clear, every change to a contractor's stock is one of eight movements:
| Movement | From → to | Example |
|---|---|---|
| Received | Supplier → yard or van | A delivery against a purchase order |
| Received to site | Supplier → site, charged to the job | The drywall delivery for one job |
| Transfer | Yard → van, van → van, yard → site | Monday's van restock |
| Issued | Yard, van or site → job | Cable taken for a job |
| Returned | Job → yard or van | The part coil that came back |
| Returned to supplier | Yard or site → supplier | Unopened boxes sent back for credit |
| Adjusted | Anywhere → written off, with a reason | Drywall ruined by rain |
| Counted | Records → what the count found | Three fewer breakers than the records said |
Record all eight, each with a date, a quantity, a location, a job where there is one, and a name, and you can answer almost every question in the rest of this article. Record only deliveries and a running total, and you can answer none of them.
Issuing materials to a job
The central movement is the issue: stock leaves a location and is charged to a job. It's a contractor's equivalent of a sale, and it's what makes job costing possible.
Job costing means adding up what each job actually cost (materials, labour, equipment and subcontractors) and comparing it with what you priced it at. Cost codes are labels for the parts of a job, so you can see which part went over. An electrician might use rough-in (wiring before the walls are closed up), trim-out (devices and fixtures once the walls are finished) and service; a builder might use foundations, framing, drywall and finishes. You don't need cost codes to start. A job number on every issue gets you most of the way.
Here's a week of materials on one electrical job:
| Item | Qty | From | Job | Cost code | Unit cost | Value |
|---|---|---|---|---|---|---|
| 12/2 NM cable (ft) | 500 | Yard | J-118 | Rough-in | 0.40 | 200.00 |
| Old-work box, single gang | 30 | Van 2 | J-118 | Rough-in | 0.85 | 25.50 |
| 20A receptacle, tamper-resistant | 14 | Van 2 | J-118 | Trim-out | 3.40 | 47.60 |
| 20A single-pole breaker | 4 | Yard | J-118 | Trim-out | 11.50 | 46.00 |
| 12/2 NM cable (ft), returned | −160 | Back to yard | J-118 | Rough-in | 0.40 | −64.00 |
The job's materials come to 255.10. Without the return on the last line, J-118 would carry 64.00 of cable it never used, and the yard would have 160 feet of cable nobody could explain.
The unit cost an issue carries decides whether job totals can be trusted. If a job's materials are worked out by multiplying quantities by today's cost, every price rise quietly re-prices every past job, including ones you've already invoiced. A sound system records the cost on the issue when it happens. Stock in the yard is money you still have; stock issued to a job is money that job has spent, and that figure shouldn't change later.
Materials are only one part of a job's cost. If you're tracking the whole job (budgets per cost code, committed purchase orders and subcontracts, change orders), construction management in Excel builds that tracker. This article stays with the materials.
Returns, and why everyone over-orders
Crews take more than they need, and that's usually the right call. Running out mid-task means a crew standing around or a trip to the supplier, and either costs more than a spare box of fittings. Estimators build the same instinct into their quantities as a waste allowance: a percentage added to the measured amount to cover cuts, breakage and mistakes.
Over-ordering isn't the problem. The problem is the surplus, which has four possible futures, each recorded differently:
| What happens to the surplus | What should be recorded | If it isn't |
|---|---|---|
| Back to the yard or a van | A return from the job: the job is credited, the stock goes back | The job looks more expensive than it was, and the yard has stock nobody can explain |
| Straight to the next job | A return from the first job and an issue to the second | The first job carries cost the second job used |
| Back to the supplier | A supplier return against the original order, and the credit | You pay for material you no longer have |
| Left on site, thrown out or taken home | An adjustment with a reason, if anyone knows | It disappears |
Make bringing materials back as easy as taking them, or they come back physically and never on paper. A simple habit helps: whoever closes out a job lists what came back.
Returns are also where units bite. A crew takes a 250-foot coil and brings back 90 feet. If you stock that cable by the coil, there's no honest way to record the return; stock it by the foot and it's one line. Stock each item in the unit you issue and return it in, even when you buy it in another. The section on pack sizes below covers the conversion.
Supplier returns depend on each supplier's terms. Unopened standard stock can often go back, sometimes with a restocking fee; special orders often can't. Check before you rely on returns as the safety valve for over-ordering.
Waste, theft and shrinkage on site
Shrinkage is the gap between what your records say you have and what's physically there. On a building business it has four sources, and only one of them is a thief:
- Waste: cuts, breakage, a pallet of drywall left out in the rain.
- Unrecorded use: materials that went into a job and were never written down. Rule this out before you blame theft.
- Recording mistakes: the wrong item, the wrong quantity, a delivery booked in twice.
- Theft: from open sites, from vans, and sometimes from inside.
You won't stop all of it, but you can make each kind visible:
| What you see | Likely causes | The record that catches it |
|---|---|---|
| A job used more material than estimated | Waste, a bad estimate, or material leaving the site | Issues to the job compared with the estimate |
| The yard comes up short, but jobs look cheap | Materials went to jobs without being issued | A job or a reason on every movement out |
| A van is short every month | Unrecorded use, or theft | A van count at each restock |
| Stock turns up that shouldn't exist | Unrecorded returns, or a delivery booked twice | Returns recorded against jobs; deliveries checked against orders |
Four habits help:
- Deliver close to when it's needed. Material sitting on an open site for three weeks is exposed to weather and theft for three weeks.
- Record damage and theft as adjustments with a reason, not as a quiet correction at the next count. "Damaged, weather" on the same site every week is a pattern worth seeing.
- Count what's worth stealing more often. Copper and cable are worth stealing for scrap; a box of screws isn't.
- Limit who can adjust stock. If anyone can type a number over a shortfall, the shortfall stops being visible.
Buy per job, or keep it in stock?
Contractors buy two ways, often for the same job: to the job, ordered for it and often delivered straight to site, and from stock, common items kept in the yard and vans. Getting that split right keeps a yard from filling up with dead stock, meaning items nobody has used in months.
| Keep it in stock when… | Buy it per job when… |
|---|---|
| Most jobs use it: fittings, cable, fasteners, standard studs | The client chose it: a particular tile, fixture or finish |
| Running out costs more than holding it | It's bulky, so handling it twice costs more than a delivery: drywall, lumber, block |
| Your supplier is slow or unreliable for it | It's expensive and only a few jobs a year need it |
| You use a steady amount every week | The quantity comes from that job's takeoff |
A takeoff is the list of quantities measured off a job's drawings. If the quantity depends on the drawings, buy it for the job.
Supplier pack sizes
Buying per job still creates stock, because suppliers sell coils, cartons and bundles, not the 180 feet or seven lengths you need. The leftover lands in the yard whether you meant to stock it or not. The fix is two units per item, the one you buy in and the one you issue in. For example:
| Item | Supplier sells | You issue | On receipt |
|---|---|---|---|
| 12/2 NM cable | 250-ft coil | Feet | 1 coil becomes 250 ft |
| Old-work boxes | Carton of 50 | Each | 1 carton becomes 50 |
| Drywall screws | 5-lb box | Box | No conversion: issue whole boxes |
Reordering then takes two numbers per item, per location. A reorder point is the level at which you order more; an order-up-to level is how far you restock to. A sensible reorder point covers what you'll use while you wait for the delivery, plus a buffer, and the order rounds up to the supplier's pack:
| Old-work boxes in the yard | Qty |
|---|---|
| Use while you wait for delivery (40 a week, 1-week lead time) | 40 |
| Plus a buffer | 20 |
| Reorder point | 60 |
| Order-up-to level | 150 |
| On hand today (nothing on order) | 55 |
| Needed to reach the order-up-to level | 95 |
| Suggested order, rounded up to cartons of 50 | 100 |
Count what's already on order before reordering, or you'll order the same thing twice. And give each van its own reorder points: that's what turns a van stock list into a restock run.
Delivery straight to site
A lot of material never touches your yard. The lumber package, the drywall and the fixtures for one bathroom go straight from the supplier to the site. Treat those deliveries as outside the stock system and the surplus later turns up in the yard with no history, while the job's material cost exists only as a pile of supplier invoices.
Put the job on the purchase order. A purchase order (PO) raised for J-118 and delivered to the site gets checked on site: someone confirms what arrived, notes anything short or damaged, and the cost lands on J-118. Partial deliveries are normal (two drops, a short line, a cracked sheet), so receiving has to work line by line, and the order stays open until everything has arrived or been cancelled.
Counting a yard
Counting a yard is harder than counting a stockroom. Lumber sits in part bundles, pipe in lengths and offcuts, cable in part coils. Some of it is outside, unlabeled or buried under something else, the vans are out all day, and materials keep leaving while you count. A count people trust follows a few rules:
- Give everything a fixed, labelled place: a bay, rack or bin, with a barcode if your system scans. A count becomes a walk instead of a hunt.
- Count one location at a time, and count vans when they're back, ideally on restock day.
- Freeze movements in that location while it's counted, or an issue made mid-count gets counted twice or missed.
- Hide the expected quantity from the counter if you can. Someone who can see the number they're meant to find is tempted to find it.
- Review the differences before they're posted, recount anything expensive, then post each difference as a movement with a reason, never by typing over the old quantity.
- Apply your offcut rule. Below the cut-off it's waste, not stock.
You don't need to count everything at once. Counting a slice of the stock on a rolling schedule is called cycle counting, and it can catch a problem months before an annual count would:
| What | How often | Why |
|---|---|---|
| Vans | Monthly, or at each restock | Small and quick, and where unrecorded use shows first |
| Copper, cable, anything with scrap value | Monthly | The most expensive to get wrong, and the most tempting to steal |
| Site lockups on long jobs | Before the job closes out | So the surplus is returned, not abandoned |
| The whole yard | Once or twice a year, and whenever your accountant needs a stock value | The full reset |
| Cheap consumables | At the full count only | Counting screws costs more than losing a few |
What a spreadsheet handles, and where it breaks
For a small contractor (one yard, a few vans, one person keeping the records), a spreadsheet is a perfectly good construction inventory system, as long as it's built as a log of movements rather than a list of quantities people type over. Inventory management in Excel explains that design and the general ways spreadsheets fail.
Our free inventory spreadsheet template is built that way and suits a trade business as it comes: up to five locations (a yard and four vans, say), an "Issued to job" movement type with a column for the job number, returns, transfers between locations, a reorder list that allows for stock already on order, purchase orders that track what has arrived, and a stock count sheet you run one location at a time. It opens with example plumbing and electrical stock.
Where any spreadsheet runs out on a building business:
1. Records get made on Friday
Materials move in vans and on sites; the spreadsheet lives on the office computer. Issues get scribbled on delivery tickets and typed in at the end of the week, if at all. Every day between the movement and the record is a chance to forget it.
2. Old jobs get re-priced
The easy way to total a job in a sheet is each issued quantity times the item's cost, but that's today's cost. Update it after a price rise and every past job changes. The workaround, copying the unit cost onto each issue row as it happens, works until someone forgets.
3. Pack sizes live in someone's head
With one unit per item, someone converts coils to feet in their head at every delivery, and suggested orders don't round up to the supplier's pack.
4. Vans and sites outgrow the columns
A stock-by-location view usually means a column per location, and our template has five. Six vans and two long jobs means rebuilding formulas.
5. Deliveries to site skip the sheet
Whoever takes a delivery on site isn't at the spreadsheet, so short lines get reported by phone, if at all, and the order is marked received in full because that's what the invoice says.
Add the general failures (two people saving over each other, a history anyone can edit), and the signal to move is usually the vans: once the people moving stock can't record it where it moves, the spreadsheet stops being the truth.
What construction inventory software must do
Turn all of that into a trial script. Run one real job through each product you're considering, from purchase order to close-out, and check:
| It must… | Test it by… |
|---|---|
| Hold stock per location: the yard, each van, sites when needed | Setting up the yard and two vans, and checking each van's stock on its own |
| Transfer between locations, with stock in transit | Sending stock to another location: the yard should drop at once, the other end only when it's received |
| Issue to a job from any location | Issuing from a van, on a phone, standing next to it |
| Take returns against the job | Returning part of an issue, and checking the job's cost goes down |
| Show materials cost per job | Changing an item's cost, and checking last month's job total doesn't move |
| Receive a job's purchase order in parts | Receiving half a PO and noting a damaged line |
| Order in supplier pack sizes | Checking that suggested orders round up to the pack |
| Hold reorder points per location | Setting a van minimum, issuing below it, and finding it on the reorder list |
| Count on a phone, with differences reviewed before they post | Counting a van, and checking nothing changes until you approve |
| Record every change with who, when and why | Trying to type over a quantity, and seeing what it leaves behind |
| Let staff issue and count without seeing costs | Logging in as a tech |
| Export everything, history included | Exporting the movement history, not just the item list |
Half a day of that tells you more than any comparison table. If tools and equipment matter too, test them separately (check-out, due dates, servicing), because a product that handles materials well may not track tools at all.
Which kind of software fits
Inventory management software for the construction industry isn't one category. It's several kinds of product, each covering part of the job. We don't rank vendors; the examples are there to show what each kind looks like, and what we say about them comes from their own websites as of October 2026.
| Kind | Built around | Fits when | One example |
|---|---|---|---|
| Construction accounting with an inventory module | The books and job costing | You run, or are moving to, that accounting system | FOUNDATION: receives inventory to warehouses, trucks or worksites, tied to job costing |
| Job management for the trades | Estimates, jobs and invoicing | You want quoting, jobs, invoicing and stock in one place | Knowify: assigns parts from storehouses and vans to project phases or service jobs |
| Materials purchasing platforms | Buying: orders, suppliers and invoices | Buying and supplier invoices are the bigger mess | Ply: inventory across warehouses, trucks and job sites, plus purchase orders, invoice matching and supplier payments |
| Tool trackers | Individual tools | Tools go missing and servicing gets missed | ShareMyToolbox: check-in and check-out, overdue alerts, maintenance reminders |
| General inventory apps | Items, locations and stock movements | You want stock, buying and counts done properly without changing how you quote or keep the books | Ours is one; see below |
| A spreadsheet | Rows you control | One yard, a few vans, one person recording | Our template, above |
Whichever kind you look at, check two things: whether inventory is included in the plan you'd actually buy (in some products it's an add-on or a higher tier), and whether the product was built for materials or for tools, because it will be better at the one it was built for.
We're building one of the general inventory apps ourselves: an inventory app that starts from your spreadsheet, in early access and not for sale yet. It's our product, so weigh it like any other. Contractors and trades are one of the groups it's built for, and the parts of its first version that matter here are several locations (a warehouse or yard, vans, sites) with transfers between them, issuing stock to a job with returns and the cost of what each job used, a full stock history, reorder points per location, purchase orders in each supplier's pack sizes with partial receiving, stock counts on a phone, barcode scanning, and CSV import and export. Its price and location limit are on the same page.
What it doesn't do: tool check-out with due dates, tool maintenance, equipment tracking, estimating or takeoff, serial numbers, or QuickBooks and other accounting sync. There's no native mobile app or offline mode either; it runs in the phone's browser and needs a connection, which matters on sites without signal.
Where to start
Whatever you end up using, the setup is the same:
- Split tools and equipment out, and track them separately or later.
- Make the yard and each van a location. Add a site only where stock stays for weeks.
- Put a job number on every issue and every purchase order, and record returns against the job.
- Set reorder points for the items you use every week, and a stock list for each van.
- Count the vans monthly and the yard once or twice a year, and post every difference with a reason.
If that runs comfortably in a spreadsheet, stay in the spreadsheet. When the people moving the stock can't record it where it moves, that's when software earns its price.