How Poor Roofing Job Costing Cuts Your Profit Margin

 Krista Moon  0 Comments

You priced the job at 30%, and it came in at 19%. Here's where roofing material and inventory costs quietly disappear.

Leftover bundles of shingles stacked in a roofing company yard next to a trailer

Walk through the yard behind most roofing companies, and you'll find the same thing. Bundles of shingles in four different colors. A partial pallet of underlayment. Boxes of pipe boots. Two rolls of ice and water shield that have been through a full summer.

Ask what's out there, and you'll get a shrug and a rough guess.

Meanwhile, an order is going in on Thursday for a job next week, and some of what's on that order is already sitting forty feet from the office.

That's a revenue leak, and it's the same kind as the handoff and the schedule. The job is sold. What leaks is the gap between the margin you priced and the margin you keep.

What's missing is knowing what materials you have, what each job actually consumed, and what it really cost you. Not a warehouse operation — just an honest answer to a simple question.

Here's the size of it. On a $12,000 roof, materials are commonly around 40% of the job. If 5% of that gets over-ordered, wasted, or never returned, it's about $240 a job. At 150 jobs a year, that's $36,000, and none of it appears anywhere you'd notice.

This article covers where roofing material costs actually go, why job costing is usually fiction, what it adds up to, and how to check your own numbers.


Table of Contents


Key takeaways

  • Materials are commonly around 40% of a residential roofing job, which makes small percentage losses expensive across the year.
  • Over-ordering, unreturned material, and untracked yard stock are the three most common ways material margin disappears.
  • Supplier price increases erode margin silently when estimating templates don't get updated.
  • Most roofing companies can't say what a specific job actually costs in materials, which makes job-level profitability a guess.
  • A spreadsheet works until you have a yard with stock in it. After that, you need something that tracks what you have.

Back to Top

Why material cost is half your margin problem

A roofing job has two big cost buckets, and most owners watch one of them.

Labor gets attention because it's visible. You see the crews, you sign the payroll, you feel it when a job runs long.

Materials get ordered, delivered, and installed, and then the invoice arrives and gets paid. It feels fixed — you needed 32 squares, you bought 32 squares plus waste, what is there to manage?

Quite a lot, as it turns out, and it compounds differently than labor does. A crew wasting ninety minutes costs you that day. A material practice that's 5% loose costs you on every single job, forever, without anyone noticing a bad day.

The other reason it matters: material cost is what makes job costing real or fake. If you don't know what went onto a specific roof, you don't know what that roof earned, which means you don't actually know which kinds of jobs make you money.

Back to Top

Over-ordering and the waste factor nobody revisits

Every roofing company adds a cushion to material orders, and almost nobody has checked in years whether the cushion is still the right size.

The logic is sound. Running short mid-tear-off is expensive — a crew waiting, a truck run, possibly a day lost. Ordering a little extra is cheap insurance.

Then the cushion becomes a habit. Ten percent on everything, regardless of whether it's a simple gable or a cut-up hip with six valleys. One of those genuinely needs the extra. The other doesn't, and the difference goes in the yard.

The honest questions are narrow and answerable:

  • What waste percentage are you actually using, and who decided it?
  • Does it vary by roof complexity, or is it one number for everything?
  • When you run over, how often is it genuinely the measurement versus a change in scope?
  • How often do you actually run short? If the answer is almost never, your cushion is probably bigger than it needs to be.

Aerial measurement has made this easier than it used to be. The measurement is more accurate than a guy with a tape, which means the safety margin on top of it can be smaller, but most companies kept the old cushion and added the new precision.

Back to Top

The returns that never go back

Unopened material that stays on a trailer is money you already spent and can still get back, until you can't.

Here's how it usually goes. The job finishes with three unopened bundles and a partial roll of underlayment. The crew loads it up. It rides around for a week. Then it gets dropped in the yard because the trailer's needed. Then nobody thinks about it again.

Suppliers generally take back unopened, undamaged material, sometimes with a restocking fee, and usually within a window. Miss the window, or let it sit outside through a season, and the credit is gone.

Two or three bundles a job doesn't feel like anything. Across 150 jobs at forty-odd dollars a bundle, it's real money sitting in a yard degrading in the weather.

The fix is small: returns are somebody's job, on a schedule, with a place to put them in the meantime. What kills it is that returning material is nobody's priority, and the person who'd do it is busy.

Back to Top

What's in your yard right now?

If nobody can answer that, you're buying things you already own.

Most residential roofing companies aren't running a warehouse. Material goes supplier-to-jobsite, and that's the right model. But almost every company accumulates a working stock anyway: leftover bundles, accessories, fasteners, sealant, boots, drip edge, partial rolls.

That stock has three failure modes.

You re-buy what you have. Somebody orders ridge vent because checking the yard takes longer than adding a line to the order.

It degrades. Shingles stored badly through a summer, underlayment left in the weather, sealant past its date.

It walks. Not usually dramatically — a few bundles here, tools there, consumables that were always hard to count.

None of that requires a real inventory system to improve. A list on the wall that somebody updates, and a rule that you check it before ordering, recovers most of it.

What it does require is someone owning it, which in most roofing companies is nobody.

Back to Top

Material charged to the wrong job

When material moves between jobs, the costs usually don't move with it, and your job profitability quietly becomes fiction.

This happens constantly and innocently. A crew runs short on the Miller job and grabs two bundles off the trailer that were meant for the Andersons. Leftover underlayment from one job gets used on the next. Somebody pulls accessories from the yard without noting which job they're for.

Every one of those is fine operationally. The work gets done.

But the Miller job now looks more profitable than it was, and the Anderson job looks worse. If you're using job costing to decide which work to pursue — steep versus walkable, insurance versus retail, one neighborhood versus another — you're deciding on numbers that have been quietly shuffled.

The same thing happens with change orders that get done and never billed. The cost lands on the job. The revenue doesn't.

This is the point where a lot of owners realize their job costing has been directional at best. Which is worth knowing, because directional job costing is fine for a gut check and not fine for deciding what kind of work to chase.

Back to Top

Price drift and estimating templates that went stale

Supplier prices move. Estimating templates usually don't, and the gap comes straight out of margin on every job.

This is the quietest one in this article and possibly the most expensive.

You built your pricing on what materials cost when you built it. Then shingles went up. Then underlayment went up. Then, a fastener price changed, and nobody sent an announcement. Your estimate template still uses the old numbers, so every job you quote is a little less profitable than you think.

Nothing alerts you. The invoices get paid because they're correct. The jobs get sold because the price is competitive. The margin just isn't what your estimate said.

The arithmetic is unforgiving. If materials are $4,800 on a $12,000 job and your costs have drifted 8% without a template update, that's about $384 a job. Across 150 jobs, it's $57,600 — and your books will show it as a mysteriously soft year rather than as a pricing problem.

Checking this is a quarterly task that takes an hour: pull your current supplier pricing on your top ten items and compare it to what your estimates assume.

Back to Top

Why your job costing is probably fiction

Most roofing companies can tell you what a job sold for and roughly what it cost, and the "roughly" is doing enormous work.

To know what a job actually earned, you need three things: what materials went onto that specific roof, what labor hours went into it, and what change orders got billed or absorbed.

Most companies have partial answers to all three. Materials are approximated by the order, not by what was consumed. Labor is approximated by crew days rather than hours. Change orders are inconsistently captured.

So the job costing report exists, and it's wrong by an unknown amount in an unknown direction.

That matters because job costing is supposed to answer strategic questions. Are steep roofs worth the premium we charge? Do insurance jobs actually make more than retail? Is the crew we use for the far side of the county costing us more than they produce?

Those are good questions. You can't answer any of them from numbers that have material shuffled between jobs and labor recorded in days.

Back to Top

What does poor roofing material control cost?

It's small on any one job and substantial across a year, which is exactly why nobody catches it.

These are illustrative numbers. Use your own.

Take 150 jobs a year at $12,000, with materials around 40%, so roughly $4,800 per job and $720,000 a year in material spend.

Now the three common losses:

  • Over-ordering and waste at 5% of material spend: about $36,000
  • Unreturned material at two bundles per job, roughly $100: about $15,000
  • Price drift from stale estimating templates at 8%: about $57,000

You won't have all three at full strength. But even one of them at half that rate is a number worth an afternoon's attention.

And unlike lead generation, none of this requires spending anything to fix. It's the cheapest margin available to a roofing company, and it's sitting in a yard.

Back to Top

How to check your own material costs

Most of this you can check in about 10 minutes, and the first test is the one people find uncomfortable.

Test 1: Walk the yard and write down what's there

Not an inventory count — just a list. Bundles, colors, accessories, partial rolls.

Then ask two questions. Roughly what's it worth? And when was the last time anyone checked before placing an order?

Test 2: Compare your estimating costs to this week's supplier pricing

Pull your top ten material line items. Put what your estimate template assumes next to what your supplier charges today.

The gap is coming out of every job you quote right now.

Test 3: Pick one finished job and rebuild the material cost

Take a job from last month. What did you order, what came back, what got pulled from the yard, what went to another job?

Can you land on an actual number? If not, your job costing for that job — and every other one — is an estimate wearing a report's clothing.

Test 4: Ask what happens to leftover material

Ask a crew lead directly. What do you do with unopened bundles at the end of a job?

Then ask the office who handles returns and how often. If the two answers don't connect, you've found where the credits go.

Test 5: Check your waste factor against reality

How often did you actually run short in the last six months? If the answer is almost never, your cushion is bigger than it needs to be, and you've been paying for that certainty on every job.

Found a material cost gap?

The free Roofing Revenue Leak Check looks for the other places where job costs and margin may be slipping through your business.

Check your roofing revenue leaks →

Back to Top

What does good roofing material control look like?

You know what you have, what each job consumed, and what it cost you this week rather than last year.

What that takes depends on how much material sits still in your business.

One to three crews, mostly supplier-to-jobsite

If material goes straight from the supplier to the roof and very little accumulates, this is a habit problem.

Keep a simple running list of what's in the yard and check it before ordering. Make returns somebody's weekly job rather than an afterthought. Revisit your waste factor once a year and vary it by roof complexity. Update estimating costs quarterly against real supplier pricing.

A spreadsheet handles all of that. What it can't handle is nobody owning it.

Four or more crews, a yard with real stock, or subcontractors

Once material is being pulled from stock by multiple crews across multiple simultaneous jobs, a spreadsheet stops reflecting reality within about a week.

At this size, the capabilities worth having are specific: knowing current stock without walking out to look, allocating material to a job so costs follow the material, letting crews record what they used from a phone in the field, and tying actual consumption back to job costing so profitability by job is real rather than directional.

This is the point where a field service or production system genuinely earns its cost, and it's worth being clear that a CRM won't do it. Sales systems track the deal. Inventory is a different job, and running a yard on memory past a few crews is expensive in ways that never show up as a line item.

Either way

One number is worth knowing regardless of size: material cost as a percentage of job revenue, tracked monthly. When it drifts, something in this article is the reason — assuming somebody is watching it drift.

Back to Top

How does this fit into the bigger revenue picture?

Material control is the last place margin leaks before a job is finished, and it completes a picture the other two started.

Lead source → Lead capture → Response → Qualification → Appointment → Estimate → Follow-up → Sale → Measurement

Everything before the sale decides whether you get the work. After it, three things decide what you keep.

The handoff determines whether the crew arrives ready. The schedule determines what the labor actually costs. And materials determine the other big half of the cost, plus whether you can measure any of it afterward.

That last part is why this one lands at measurement as well as production. Without real material costs, job-level profitability is a guess, which means the reports you'd use to decide what work to chase are built on sand.

This is one of fifteen revenue leaks that waste good roofing leads, and it's the one sitting in your yard right now.

Back to Top

Find your roofing revenue leaks

You may not need more leads. You may need to find out why the jobs you win earn less than you priced them at.

The free Roofing Revenue Leak Check looks across your lead-to-revenue process to find where opportunities and margin may be slipping through — from how homeowners find and contact you through response, appointments, estimates, follow-up, sales, and measurement.

We start with one short call. Then I look at what's public and, where it helps, what's happening inside your process. You get a plain-English list of what may be leaking, roughly what it may be costing you, and what I'd fix first. If nothing's leaking, you'll know that for certain instead of guessing. No pitch buried inside it.

Check your roofing revenue leaks →

Back to Top

Roofing material and inventory FAQs

What waste factor should a roofing company use?

It should vary by roof complexity rather than being one number applied to everything. A simple gable and a cut-up hip with six valleys generate very different waste, and applying the same cushion to both means overbuying on the simple ones. A useful check: if you almost never run short, your cushion is larger than it needs to be, and you're paying for that certainty on every job.

How should a roofing company track material costs by job?

Costs need to follow the material, not the order. When a crew pulls bundles from the yard or takes material from another job, that has to be recorded, or your job costing shifts profit between jobs invisibly. With a few crews, a disciplined spreadsheet works. With several crews pulling from stock simultaneously, you need something that records consumption in the field.

Should roofing companies return leftover material?

Yes, and the obstacle is almost always that it's nobody's specific job. Suppliers generally accept unopened, undamaged material within a window, sometimes with a restocking fee. Two or three bundles per job doesn't feel like much, but across a year of jobs, it's a meaningful amount of money sitting in a yard, degrading in the weather.

How often should roofing estimates be updated for material prices?

Quarterly at a minimum, and immediately after a supplier price increase. Estimating templates built on older costs erode margin on every job you quote, and nothing in your books will flag it — the invoices are correct, the jobs sell, and the year just comes in softer than expected.

Does a roofing company need inventory management software?

Not if the material goes supplier-to-jobsite and almost nothing accumulates. Once you have a yard with real stock and several crews pulling from it across simultaneous jobs, a spreadsheet stops matching reality quickly. A CRM won't solve this either — tracking deals and tracking inventory are different jobs, and the second one needs a system built for it.

Back to Top

Comments