Picture a 2x10 working its way through your yard. You bought it by the unit, it sits in the rack as individual pieces, and when a contractor calls for numbers on a framing package you quote it per thousand board feet, because that is how the market talks. Then he pulls up on a Tuesday morning and wants fourteen pieces in three different lengths, plus a cut off a longer board for the header. One board, four ways to count it, all before lunch.

That is the moment software either earns its keep or shows its limits. If the system knows that a piece, a unit, and a thousand board feet are the same 2x10 wearing different hats, the counter keeps moving and your numbers stay square. If it does not, somebody at your counter is doing the math on a notepad, and every notepad calculation is a chance to misquote a job, mis-bill a charge account, or sell material you already promised to someone else.

Why a hardware POS runs out of road at the lumber rack

A hardware POS is built around a simple idea: every item is a thing with a barcode and a price, and you sell it one at a time. That works fine for hammers and hose fittings. It starts to wobble at the lumber rack, because lumber refuses to be one thing. As Ply's guide to lumber inventory software points out, yards track the same material in board feet, linear feet, bundles or units, and individual pieces, and converting between them by hand introduces risk and slows the counter right when the line is longest.

Random lengths make it worse. Cleverence's guide to ERP systems for wood and lumber notes that yards buying or selling random lengths need to price per thousand board feet while quoting by unit, piece, or custom cut, and that getting this wrong produces invoicing errors, margin leakage, and a yard nobody can reconcile. Anyone who has squared a load of mixed-length studs against an invoice knows that is putting it politely.

Then there is the tally. A contractor does not buy "some 2x4s." He buys twelve at eight feet, eight at ten, and four at twelve, and he wants the ticket to show it. If you want a feel for how fast the arithmetic piles up, run a few loads through our board foot calculator and imagine doing it at the counter with three contractors waiting. That is a lot of board feet to carry in one head, and heads go home at five.

The fix is not a fancier cash register. It is software built around how a yard actually counts, prices, and moves material. Here is what to look for.

Eleven things a yard needs from its software

Treat this as a demo script. Any system you are seriously considering should walk through all eleven without anyone saying "well, there's a workaround."

1. Units that live on the SKU, not in someone's head

You buy by the unit, stock by the piece, sell by the piece or the foot, and price per MBF. The conversion between those has to live on the product record, applied the same way every time by everyone. We go deep on this on our units of measure page, but the short version is simple. Test it with: in the demo, sell one 2x10 by the piece, then quote the same item by the thousand board feet. If anyone reaches for a calculator, the conversion lives in a person, and people take vacations.

2. A real tally

Pieces times length, one row per length, as many rows as the load has. The total should land in the product's unit while the breakdown stays on the ticket, so your yard crew can pull it and your customer can check it. Test it with: build one line of studs in three lengths, twelve at eight feet, eight at ten, four at twelve, and look at the ticket. If the rows collapse into a single number with no detail, your crew is back to guessing.

3. Decimals where the material demands them

Selling 14.7 feet of decking is a normal Tuesday. Selling 0.7 of a toilet is not. You want decimals switched on per product where the material calls for them and whole counts where it does not, so receiving and transfers stay clean. Test it with: sell 14.7 feet of decking, then ask to see the setting that stops a new counter hand from selling two and a half faucets.

4. Quotes that run the whole job

A takeoff becomes a quote, the quote becomes a sales order, the sales order becomes an invoice, and nobody retypes anything along the way. For the packages you sell every week, item sets let you drop the whole list onto a quote at once. Test it with: bring a quote from a real job, convert it all the way to an invoice, and count how many times someone re-enters a line. The answer you want is zero.

5. Committed versus available

Material promised to a job should come off your available number the moment it is promised, not the moment the truck leaves the yard. Otherwise the counter sells the same bunk twice and somebody's Friday delivery turns into an apology. Test it with: create a sale for pickup on Friday, then check the item's available quantity today. It should already reflect the commitment.

6. Contractor accounts that act like accounts

Job accounts under one contractor, per-job pricing and limits, monthly statements, and a way for the contractor to pay by card or bank without calling the office. Aging should be a report you pull, not a drawer you dread. Test it with: set up a job account with its own price and a credit limit, run a charge against it, and find it on the statement. Then ask how the contractor pays it. Our buyer's guide to POS charge accounts has the full thirteen-point checklist.

7. Delivery tied to the sale

Schedule it, load it, mark it delivered, all attached to the sale so the office can answer "where's my material?" without radioing the yard. Test it with: from an actual sale, schedule the delivery, build the load, and mark it delivered. The paper trail should never leave the ticket.

8. Every location in one inventory

If you run a yard and a store, or a couple of yards, inventory, sales, and transfers should live in one system. Test it with: look up a treated 2x6 at the other location and start a transfer without making a phone call first.

9. Receiving that respects the purchase order

Receiving should happen against the purchase order, with partials and backorders handled, and cost and retail updates flowing from what actually arrived. Vendor catalogs should load products with their units and costs so you are not keying in a thousand SKUs by hand. Test it with: receive a partial shipment against a purchase order and watch what happens to cost and retail.

10. Counts from the yard, not the office

Counting should happen on a phone, by category, standing next to the rack, because that is where the lumber is. Weekly counts on the risky categories beat one painful annual wall-to-wall. Test it with: start a count for one category from a phone while standing out in the yard, because if the demo only works from a desk, it will not survive your first truck day.

11. A counter that still sells paint and screws

Most independent yards are also the hardware store, and plenty run a tint room besides. The same system that prices per MBF has to check out a gallon of paint and a box of screws without blinking. Test it with: put a gallon of paint, a box of deck screws, and a unit of studs on one ticket for one contractor. If the paint has to live in a second system, you will be reconciling two systems forever.

Shrink in the yard

Lumber does not walk off on its own, but it does disappear. LBM Advantage's guidance on yard shrink lists the usual suspects: mis-pulls and short ships, receiving errors, theft, and damage in handling and storage. Their recommended control is cycle counting your high-risk categories weekly, which is exactly what the phone-based counting above is for.

Pay special attention to the back row. The racks nobody walks past every day are where weather-damaged boards quietly become unsellable, where mis-pulled lengths land and stay, and where cull lumber piles up instead of getting marked down and moved. An LBM Journal dealer survey quoted one dealer who went from 10 to 20 percent shrink to almost none after tightening grades and yard stacking. That is one dealer's story, not an industry average, but it shows how large the number can get before anyone looks at it. Our guides to cycle counting for retail stores and to measuring retail shrink walk through setting up a weekly cadence without shutting the yard down.

The numbers a yard should watch

The NHPA 2025 Cost of Doing Business Study, covering fiscal 2024 across 1,082 stores, gives lumber and building material outlets a few figures worth measuring yourself against. Comparable sales were up 1.57%, purchase rebates of 2.0% were the highest ever recorded in the study, and sales per employee hit $521,494, the third highest since the study began.

Read those as three monthly habits. Comparable sales tells you whether last month beat the same month last year, which is the honest way to read a seasonal business. Purchase rebates are earned by buying well, and you only capture them if your purchasing and receiving data is accurate enough to prove what you bought. Sales per employee is really a counter-speed number: every hour your crew spends re-keying quotes or reconciling a tally by hand is an hour that drags it down. Your software should surface all three without a spreadsheet marathon.

How Rundoo handles a yard

Rundoo is the AI-first POS for independent supply stores, and lumber is one of the trades it is built for. Here is what that looks like against the eleven items above, verified against our public pages.

Units are a company list (EA, PC, LF, BF, MBF, unit, pallet, anything you count) with per-product conversions carried as a factor back to the base unit, plus a default unit for each flow: stocking, pricing, sale, order, transfer. Units arrive with the vendor catalog or by CSV import, so you are not building the list by hand. Pricing treats the pricing unit and the sale unit as two separate settings: price per MBF and sell by the piece, link a unit to the base price and every price tier follows the conversion ($4.99 a piece is $935.63 per MBF), give a unit its own price when the market says so, let the counter switch the pricing unit on a sale where you allow it, and set quantity breaks by unit.

The tally takes pieces times length per row, as many rows as the load has, with three tally types (length, length plus width, and area), and the total lands in the product's unit while the breakdown stays on the ticket. Decimals are a switch per product, while counts, receiving, and transfers happen in the stocking unit. One sales order runs from takeoff to quote to invoice, with item sets for the repeat packages. On hand, committed, and available are tracked separately, and delivery runs as sale, schedule, load, delivered, tied to the ticket. Inventory, sales, and transfers work across locations, and your charge account customers see invoices and statements and pay by card or bank in the Customer app. Dooey, Rundoo's AI, answers questions about your numbers and drafts the next step. On the roadmap, as direction rather than promise: payment at the jobsite as part of the delivery, and kits and bills of materials for doors, windows, and millwork. Rundoo runs in 500+ independent stores across the US and Canada, and you can see the full picture on our lumber page or the side-by-side in our lumber yard POS comparison.

Who Rundoo is not for

Rundoo is retail-first. It fits independent yards with a retail counter, contractor accounts, quotes, and deliveries, from one yard to a few, including yards that sell hardware and paint across the same counter. It is not built for truss and component manufacturing, remanufacturing and milling, configured window and door packages that need bill-of-materials kits, or large enterprise dealers running many branches and a distribution center. For those operations, BisTrack, Spruce, or Agility are built for the job, and if you are on Spruce or Epicor Eagle today and weighing a move, our Spruce switch page and Epicor Eagle switch page lay out what that looks like. On the buying side, Rundoo partners with LBM Advantage, with program integrations on the roadmap rather than live, and Rundoo lumber clients order through distributors such as Horizon and Orgill today.