Ask a cabinet shop owner what a quote is built on and you usually get one of three answers: a price per linear foot, a price per box, or a spreadsheet somebody built years ago and has been nudging upward ever since. All three work until something changes — sheet goods jump, you add a CNC, the mix shifts toward more complicated work — and then the same quote that used to make money quietly stops.
The reason is almost always the same. The quote is carrying material and labor, but it isn’t carrying overhead — or it’s carrying overhead twice.
Every quote has to carry three things
Direct cost, overhead, and profit. Direct cost is the part shops track well: sheet goods, hardwood, hardware, edgebanding, finish, the hours your people put into machining, assembly, and finishing, plus delivery and installation.
Overhead is everything else that has to be paid whether or not a given job exists: shop rent, utilities, the dust collection system, equipment payments, the spray booth, shop supervision, the office, insurance, software, and your own compensation. It does not belong to any one job, which is exactly why it gets left out of quotes.
Profit is what’s left. If overhead isn’t deliberately built into the price, profit is whatever happens to survive — and in a busy year that number can be surprisingly close to zero.
The real question: what do you attach overhead to?
Overhead has to get onto jobs somehow. Since no part of it belongs to any single job, you have to pick something measurable that each job consumes, and let that thing carry the overhead. Accountants call it an allocation base. On the shop floor it’s simpler than that: what do you divide your overhead by?
There are only two sensible answers for a cabinet shop, and that is why you’ll see two methods. They aren’t competing theories. They’re two different things to divide by.
Method A — attach overhead to direct cost dollars
Divide annual overhead by annual direct job costs, add your target profit, and you get one markup percentage that goes on top of every direct cost on the quote. A job that costs twice as much absorbs twice the overhead.
Its great advantage is that it needs no data you don’t already have. If you know your direct costs and your overhead from last year’s P&L, you can calculate it this afternoon. No time tracking required.
Method B — attach overhead to productive shop hours
Divide annual overhead by the hours your shop can actually sell, and every hour of shop time carries a slice of overhead. A job that occupies the shop twice as long absorbs twice the overhead, regardless of what its materials cost.
Take a shop with $620,000 of annual overhead and six production employees. Six people at 2,080 paid hours each is 12,480 hours. But paid hours are not sellable hours. Cleanup, maintenance, material handling, rework, meetings, and waiting on selections all consume paid time no customer pays for. If 75% of paid hours land on jobs, you have 9,360 productive hours.
$620,000 ÷ 9,360 = $66.24 of overhead per productive shop hour. If shop labor costs $55.56 per productive hour, your loaded shop rate — labor plus its share of overhead, before any profit — is $121.79.
Quoting shop time at $85 an hour because that’s what the shop across town charges isn’t competitive pricing. It’s a loss you’re paying for out of the next job’s deposit.
Why the choice of base matters
A good allocation base tracks how the cost is actually consumed. Here’s the test: does an extra dollar of your overhead get used up by spending more on material, or by occupying the shop longer?
Rent, the CNC, the spray booth, dust collection, and shop supervision are consumed by time. A job built from expensive rift-sawn white oak does not wear out your equipment faster than the same job in prefinished maple, and it doesn’t occupy the booth any longer. Under Method A, though, the expensive job absorbs far more overhead — purely because the material cost more.
That is the entire argument for Method B, and in a pure manufacturing setting it wins. But most cabinet shops aren’t a pure manufacturing setting, which is where the recommendation turns.
Both methods recover exactly the same dollars
Before choosing, it’s worth seeing that this is not a choice between more money and less money. Same shop as above — $1,640,000 of direct costs including $520,000 of shop labor, $620,000 of overhead, a 12% net profit target.
Method A: ($1,640,000 + $620,000) ÷ 0.88 = $2,568,182.
Method B: shop hours sold at the loaded rate grossed up for profit come to $1,295,455. Everything else — materials, field labor, outsourced work, freight — carries a profit-only markup of 13.6% and comes to $1,272,727. Total: $2,568,182.
Identical, to the dollar. Same overhead recovered, same profit earned. What differs is where the recovery shows up on the quote — which matters when a customer asks you to itemize, and which changes how fairly overhead lands across a mix of different jobs.
Which method fits your shop
The answer turns almost entirely on one thing: whether you install what you build.
Mostly manufacturing, little or no installation — use Method B
If you build cabinets and a builder or a dealer installs them, you are a manufacturer. Essentially all of your overhead is shop overhead, shop capacity is what limits your revenue, and hours are the honest base. Absorbing overhead on productive shop hours is standard manufacturing cost accounting, and it will price your work more accurately than a markup ever will — particularly across jobs with very different material costs.
Materials then carry a profit-only markup, because overhead has already been recovered in the hour.
You manufacture and install, and most jobs go out installed — use Method A
This is the majority of cabinet shops in the $1M–$15M range, and for them the simpler method is also the better one.
Once you install, your overhead has two drivers, not one. The shop drives rent, machines, the booth, and dust collection. The field drives trucks, fuel, install tools, field supervision, general liability, and the callbacks nobody budgets for. A single shop-hour rate would take all of that field-driven overhead and load it onto shop hours — which systematically overprices your supply-only work and underprices your installed work. That’s backwards, and it’s the exact opposite of what a shop-rate advocate is trying to achieve.
A markup applied to all direct costs spreads both pools across both kinds of work without asking you to run and maintain two separate rates. For a shop where nearly everything ships installed, the mix is consistent enough that the theoretical accuracy you give up is small, and the simplicity you gain is real.
Mostly supply with occasional installs — Method B, with install priced separately
Absorb shop overhead on shop hours, then quote installation at its own loaded field rate. That keeps install carrying its own cost instead of hiding inside the cabinet price, and it tells you whether installs are worth taking at all.
You don’t track shop time by job yet — Method A, and start tracking
Method B is arithmetically impossible without reliable hours by job. If your payroll goes in as one lump, Method A is the only defensible answer available to you today. Time tracking by job and by department is the prerequisite for ever pricing by the hour — and it’s worth starting now even if you never switch methods.
Even if you price with Method A, calculate Method B once a year
The shop rate is a diagnostic even when the markup is the pricing tool. If your loaded rate says an hour in the shop costs $122 and your estimator has been building quotes on $85, the markup isn’t what’s wrong — your estimated hours are. No markup percentage can rescue a quote built on hours that were never realistic.
Utilization is the number owners overestimate most. Assuming 85% when the truth is 70% understates your cost per hour by roughly a fifth, and every quote inherits the error. Measure it before you trust it.
Whichever you pick, don’t run both
Quoting the loaded shop rate and applying the full overhead markup on top charges for the same overhead twice. You’ll lose bids you should have won and never understand why. Absorbing overhead into the rate and then applying no markup at all to materials does the opposite — it leaves your profit on the table. Pick a method, write it down, and make every estimator use the same one.
Markup is not margin
One more number shops lose money confusing. Markup is what you add on top of cost. Margin is what’s left as a share of the sell price.
The price above required a 56.6% markup on direct costs and produced a 36.1% gross margin. Same job, two very different-sounding numbers. A shop quoting “cost plus 35%” in the belief it’s earning a 35% margin is roughly twenty points of markup short of its own target.
The conversion is worth memorizing: Margin = Markup ÷ (1 + Markup).
And a single blended markup is a starting point, not the finish. Sheet goods, outsourced doors, and freight rarely deserve the same markup as your own shop hours. What matters is that the cost-weighted average of your category markups equals the single required rate, so the same overhead and profit dollars come home either way.
Free Tool: Cabinet Shop Markup & Shop Rate Calculator
Download the same workbook used in the examples above. Enter your prior-year figures once and it runs both methods side by side — overhead absorbed per productive shop hour, your loaded shop rate, the markup you need on direct costs to hit your target profit, and the gross margin that markup actually produces. It proves the two methods reconcile to the dollar and includes a decision table for choosing the one that fits how your shop operates.
Getting Mozaik data into JobTread without retyping it
Whichever method you price with, the estimate still has to get built — and if you design in Mozaik, the detail already exists. Mozaik Manufacturing generates cut lists, door and drawer box lists, hardware requirements, and material reports, and it exports customizable cut lists through CSV. The problem has never been getting data out of Mozaik. It’s that the data lands in a format built for the shop floor, not for your books, and somebody retypes it into a quote.
There is no native Mozaik-to-JobTread integration, and it’s worth saying that plainly before anyone goes hunting for one in a settings menu. But the import is being done today — we work with a cabinet shop that runs it — using AI as the bridge between the two systems. There are two routes to it.
Route 1 — JobTread’s own AI Connector
JobTread runs an MCP server that lets an AI assistant like Claude or ChatGPT work directly inside your JobTread account, and the Open API is included for every subscriber at no additional fee. You export from Mozaik, hand the file to the assistant, and have it build the estimate against your Cost Catalog. This is the do-it-yourself route: no added software cost, but you own the setup and the quality control.
Route 2 — DATAx, a JobTread marketplace partner
DATAx is a JobTread Marketplace partner offering AI and back-office automation built around JobTread, and this is the route the shop we work with uses to move Mozaik data in. If you’d rather buy the capability than build it, this is the shorter path.
Go in knowing what you’re buying. The Mozaik import is not a checkbox on their published feature list — their advertised integrations are tools like CompanyCam, Google Drive, and Dialpad, with a general-purpose MCP connector still marked as coming soon. The Mozaik workflow is configured on top of their AI platform rather than picked off a menu. So treat it as a setup project: ask to see it running on a real cut list, agree who maintains it when Mozaik changes an export format, and get the scope in writing.
One point worth raising as your accountant: DATAx runs its own privately hosted model rather than passing your data to a third-party AI provider. Your cost catalog, your margins, and your customer list are competitively sensitive, and where they travel is a fair question to ask of any vendor — including whichever assistant you’d use on the do-it-yourself route.
Either way, the practical workflow looks like this:
- Export the material, hardware, and cut list reports from Mozaik as CSV
- Map each line to the matching item in your JobTread Cost Catalog
- Build the estimate in JobTread against your cost groups, with quantities carried from the Mozaik output
- Review every line before it goes to a customer
That last step isn’t a formality. JobTread says it directly in their own documentation: AI can produce results quickly, but it can also make mistakes, miss context, or generate incomplete information, and you remain responsible for validating the output. In an estimate, a mis-mapped line item doesn’t announce itself — it just quietly shows up as a margin miss six weeks later. Check the mapping carefully the first several times, until you trust how your catalog names line up with Mozaik’s.
The payoff is that your shop drawings and your budget stop being two separate acts of data entry, and the estimate arrives already structured the way your job costing needs it.
Cost groups for a shop that fabricates and installs
JobTread’s Cost Catalog is where this either works or doesn’t. Most shops inherit a generic contractor structure and then wonder why the reports don’t answer their questions. A cabinet shop needs categories that separate what happens in the building from what happens at the jobsite:
- Design & engineering — drafting, shop drawings, selections time
- Sheet goods & lumber, kept apart from hardware and finish materials, because they move on different price cycles
- Shop labor, ideally split into machining, assembly, and finishing
- Field labor — delivery and installation, never mixed with shop labor
- Outsourced — doors, drawer boxes, countertops, outside finishing
- Freight & delivery
Splitting shop labor from field labor is the one that earns its keep immediately, and it’s what makes the method question answerable in the first place. It’s the only way to compute a shop rate at all, and it’s how you find out whether installation is subsidizing the shop or bleeding it. Shops running both supply-only and installed work often discover the two lines have margins twenty points apart, hidden inside a single blended number.
Build the catalog with unit costs attached — per sheet, per linear foot, per hour by department — so estimates assemble from the same components every time and get more accurate as you correct them.
Closing the loop: job costing and reporting
An estimate is a hypothesis. Job costing is the test, and the test only works if actual costs come back tagged the same way the estimate was built.
In practice that means purchase orders raised against the job and coded to the cost group they were estimated under, supplier bills matched to those POs, and shop time tracked by job and by department rather than as a lump payroll entry.
Once that’s in place, JobTread’s budget-to-actual reporting answers questions you couldn’t previously ask: which department overran, whether the overrun was hours or rate, whether a customer type is systematically underpriced, and how estimated hours compare to actual hours by job. That last comparison is what makes next year’s utilization assumption real instead of hopeful — and it’s what tells you whether it’s time to move from Method A to Method B.
JobTread syncs to QuickBooks Online, and that division of labor is the right one: JobTread is where job cost detail lives, and QuickBooks Online stays the complete financial book of record — general ledger, balance sheet, payroll, and the basis for your tax return. See how we support JobTread users for how that connection gets set up.
The takeaway
Two methods exist because there are two honest things to divide overhead by — direct cost dollars or shop hours. Neither is a trick, and both recover the same money. If you mainly manufacture, use shop hours. If you manufacture and install most of what you build, which describes most shops this size, use the direct cost markup and keep the shop rate as your annual sanity check.
The arithmetic takes an afternoon. Knowing your overhead per productive shop hour and the markup that hits your target profit puts you ahead of most shops your size, and it turns pricing from a gut call into a decision you can defend to a customer, a banker, or yourself.
If you want help choosing the right method for how your shop actually operates, calculating your real shop rate, or restructuring your JobTread cost catalog, that’s the work we do with cabinet shops and millwork businesses.

Leave a Reply