Skip to main content
Back to Blog
Pricing

How Rising Material Costs Are Changing Construction Bidding

Material costs have settled above pre-pandemic levels and they swing fast. Here's how to bid construction work without giving away your margin.

Tyson Faulkner·May 3, 2026·11 min read

Material costs have settled above pre-pandemic levels and they swing more than they used to. PPI Construction Materials data has shown roughly the entire industry's input costs running well above 2019 baselines, with shingles, lumber, and steel each going through their own cycles of volatility. If you're still bidding the way you were in 2018, you're losing margin you don't have to lose.

I'm Tyson Faulkner. My background is roofing, gutters, soffit and fascia, and occasional siding. I built Piece Work Pro because I needed labor cost predictability when nothing else about a job was predictable anymore. This article is about how to bid construction work in a market where the materials line moves on you between bid and purchase, and why piece rate labor is one of the few fixed inputs you can lean on.

What the Material Cost Picture Actually Looks Like

The Producer Price Index for construction materials is the clearest source for what's been happening. Per BLS PPI data, the index ran roughly flat from the 2010s into 2020, then took a steep climb during 2021-2022, partially corrected in 2023, and has been bumping along at elevated levels with category-specific volatility ever since.

Specific categories tell different stories:

  • Lumber. Big spikes in 2021 and again in 2022, with significant pullbacks but still trading well above pre-pandemic norms. Framing lumber prices can move 20%+ in a quarter.
  • Steel. Tariff effects, mill capacity, and global demand have kept steel prices choppy. Anything with rebar, structural steel, or steel framing is exposed.
  • Asphalt shingles. Tied to oil prices for the asphalt and to the broader supply chain for fiberglass and granules. Shingle manufacturers have pushed multiple price increases in recent years, often 5-10% per increase.
  • Underlayment, ice and water shield, fasteners. Smaller items, but they've all moved.
  • Decking, OSB, plywood. Followed lumber up, came partway back, still elevated.

The pattern isn't "everything went up and stayed there." It's "everything went up, some came back down, and the whole market is moving more than it used to." Bid validity periods designed for a stable market don't work in this one.

Shorter Bid Validity Periods

The first thing rising material costs change is how long your bid is good for. In a stable market, 30-60 days was fine. The materials cost what they cost when you bid, they'd cost about the same when you bought them.

Now your bid sheet should say something like:

"This proposal is valid for 14 days from the date issued. Material pricing is subject to change without notice; if not accepted within the validity period, this proposal must be re-quoted."

Some contractors go to 7 days for material-heavy work. Others use a 30-day window with an explicit material escalation clause. Either approach works. What doesn't work is silently honoring a 60-day bid when shingles went up 8% on day 35.

When you write the bid, also note the date you priced the material. If you priced shingles at $X per square on Tuesday and the customer signs on Friday, that price is still good. If they sign three weeks later and shingles went up, you have documented grounds to update.

Material Escalation Clauses

The cleaner solution for longer projects is a written material escalation clause. The structure is simple: if a covered material moves more than a threshold percentage between bid and purchase, the customer pays the difference.

Sample language:

"If, between the date of this proposal and the date materials are purchased, the price of [shingles, decking, lumber, steel] increases by more than 5%, Contractor reserves the right to pass the increase above 5% through to Customer. Contractor will provide documentation of the price change. Decreases of more than 5% will likewise be credited to Customer."

This protects you from a runaway price spike without making you the customer's commodity hedger. The 5% threshold absorbs normal market noise. Anything bigger is a real move and gets shared.

For commercial work the threshold is sometimes negotiated lower (3%) or higher (10%) depending on contract size and customer sophistication. Residential customers often accept the clause if you explain it as protection against having to back out of the job if shingles take an unexpected jump.

Separating Material from Labor in the Bid

The cleanest bid structure when material is volatile is to break the price into three lines:

  1. Materials
  2. Labor
  3. Overhead and profit

Show the customer all three. The labor line, if you're running piece rate, is genuinely fixed per unit and you can defend it with a rate card. The material line is updateable if needed. The overhead and profit line covers your fixed costs and margin.

When you do this, two things happen. First, the customer sees that labor is the steady part. Material is the line moving. Conversations about price changes become "shingle prices went up 6%, here's the supplier invoice" instead of "we need more money."

Second, you stop carrying material risk you don't have to carry. Lump-sum bids in a volatile market are bets. You either win the bet (material stays flat) or lose it (material spikes and your margin is the buffer). Splitting the bid lets you offload that risk fairly.

For the foundation under any bid, you need to know your fully burdened labor rate. See fully burdened labor rate in construction and how to calculate labor burden in construction.

Why Piece Rate Labor Is the Stable Input

In a market where material is moving, the more you can fix the rest of the bid, the better. Piece rate labor is one of the few inputs you can fix.

If you pay $40 per square to install architectural shingles, that cost doesn't change because shingle prices changed. It doesn't change because the worker is fast or slow. It doesn't change because of an unexpected weather day. The cost per square is $40, period, plus burden.

That predictability matters when you're trying to defend a margin. You know the labor side. You can put it on the bid sheet with confidence. The only thing left moving is material, and material is the line you're already escalating against.

Hourly labor doesn't give you this. Hourly cost per unit varies with crew speed, weather, attitude, and a dozen other things. Two roofers at the same hourly rate can produce a 30% spread in cost per square. Piece rate locks the cost in.

For setup, see setting fair piece rates in construction and the roofing piece rate guide.

Worked Example: $30K Roofing Bid

Let's run an actual example so you can see what material movement does to a bid.

Take a typical asphalt shingle reroof. Original bid total: $30,000. Cost breakdown when you bid it:

  • Materials (shingles, underlayment, ice and water, drip edge, ridge, vents, nails, dump fees): $10,500 (35% of bid)
  • Labor (piece rate at $40/square for 50 squares plus tear-off, plus burden): $9,000 (30% of bid)
  • Overhead allocation: $4,500 (15% of bid)
  • Target profit: $6,000 (20% of bid)

You bid $30,000 lump sum. Customer signs three weeks later. By then, the shingle manufacturer has pushed a 7% price increase, drip edge is up 4%, and underlayment is up 3%. Weighted, your material total is now closer to $11,250. That's a $750 jump.

If you held the lump sum bid at $30,000:

  • Materials: $11,250
  • Labor: $9,000
  • Overhead: $4,500
  • Profit: $5,250 (down from $6,000)

That single material movement just took 12.5% off your profit. And this is a moderate move. A bigger spike (10-15%) would do real damage.

Now run the same job bid with material and labor separated:

  • Materials: $10,500 + price change clause
  • Labor: $9,000 (locked at piece rate)
  • Overhead and profit: $10,500

Customer signs three weeks later. Shingle manufacturer raised prices. You document the change, invoke the clause, and the material line updates to $11,250. Customer pays $30,750. Your margin is intact.

Same job. Same work. Different contract structure. The second one keeps your profit. That's why structure matters.

For more on roofing-specific bid math, how to price roofing jobs accurately and how to calculate roofing labor costs walk through the components.

Working with Suppliers on Price Locks

The other side of this is your supply chain. Bigger contractors have leverage to ask for price locks. Smaller ones can still negotiate within reason.

What to ask for:

  • 30-90 day price holds on bid jobs. When you submit a bid, ask the supplier to hold their pricing on those specific materials for a window. They won't always say yes, but on larger orders they often will.
  • Project-specific holds. For a signed job, ask the supplier to hold prices through the install date. Get it in writing.
  • Volume agreements. Annual or quarterly volume commitments in exchange for stable pricing. This works when you have predictable run-rate.
  • Early purchase. If you have storage and the cash flow, buying material immediately on a signed contract eliminates the price risk. The trade-off is tying up working capital.

What you can't do is assume yesterday's price is today's price. Always confirm before you commit to a bid. Build a habit of pulling current prices the morning you write a quote, especially for the volatile categories.

Cash Flow Implications

Rising material costs also tighten cash flow even when you're getting paid full price. Here's why.

If your typical job is 35% material and you used to lay out $10,000 in material per $30,000 job, now you're laying out $11,500 on the same scope. You don't see that money back until the job is invoiced and paid. Across multiple active jobs, the working capital required to run the business has gone up.

Two things to do about this:

  1. Get deposits. A 25-50% deposit on signed jobs covers most or all of the material out-of-pocket. Customers in a high-cost-material environment generally understand the request.
  2. Invoice progress. On larger jobs, don't wait until completion to bill. Progress invoices at material delivery, dry-in, and completion smooth out the cash cycle.

These aren't new ideas. They're just more important now than they were when material was cheap.

What This Means for the Customer Conversation

A lot of contractors are nervous about putting material escalation language in front of residential customers. It feels like opening a can of worms.

The way to handle it is to lead with the structure, not bury it. When you walk through the bid, say something like:

"I price this in three pieces. Materials, labor, overhead and profit. The labor is locked because we pay our crews piece rate, so a square of shingles costs the same to install no matter what. The material number is current as of today. Manufacturers have been pushing prices up, so I include language that if shingles move more than 5% between today and when we order, we share that cost. If prices come down, you get the credit. That's how I keep my pricing honest."

Most customers respond well to this. It's transparent, it's fair, and it shows you're running a real business not a guessing game.

The customers who push back hardest on the clause are usually the ones who would have squeezed you on change orders anyway. Better to know upfront.

Notes

  • Pull current material prices the morning of any bid. Don't reuse pricing from a quote you wrote three weeks ago.
  • Stamp the date and the supplier you priced from on every bid sheet. Documentation matters when you invoke an escalation clause.
  • Track your material costs monthly so you can see trends. If shingles are up 6% over 90 days, plan to update your default bid pricing.
  • Keep one or two backup suppliers. If your primary jacks prices, you have alternatives.
  • Don't try to absorb material increases to win bids. You'll bid yourself out of business in a year.
  • A free piece rate calculator can help you confirm your labor cost per unit before you build a bid.
  • Be aware of compliance details on the labor side. See common piece rate payroll mistakes.

Closing

Rising material costs aren't going back to 2019. The smart move is to bid for the market you're in: shorter validity periods, escalation clauses, separated material and labor lines, and piece rate on the labor side so you have at least one input you can fix. Customers who understand fairness will accept the structure. Customers who don't would have eaten your margin on change orders anyway.

Piece Work Pro handles the piece rate side: rate cards, payroll, hours, regular rate calculations, and minimum wage make-up. If you want to lock in your labor cost so you can bid with confidence, sign in here to see how it runs.

For more, piece rate vs hourly construction covers the labor model side, and crew management tips covers the field operations side.

Frequently Asked Questions

How long should a construction bid stay valid?

In a stable material market, 30-60 days was standard. With current volatility, 14-30 days is more realistic, with explicit language that material prices over a certain threshold trigger a re-quote. Some contractors are dropping to 7 days for material-heavy bids.

What is a material escalation clause?

A contract clause that lets you pass through material price increases above a certain percentage to the customer. Typical structure: if a key material rises more than 5-10% between bid date and purchase date, the customer pays the difference. It protects you from holding the bag when prices spike.

Why does piece rate labor help when material costs swing?

Piece rate labor is fixed per unit. A square of shingles costs you $40 in labor regardless of what's happening to shingle prices. That predictability is one of the few stable inputs you have when material is moving. It also makes it easier to separate material from labor in a bid, which is the right structure when materials are volatile.

Should I quote materials and labor as one number or separately?

Separate them. Showing the customer 'materials $X, labor $Y, overhead and profit $Z' is more transparent and lets you adjust the material line if costs change without renegotiating the labor. Lump-sum bids assume material risk you may not want to carry in this market.

Free Guide

How to Pay Your Crew 20% More and Double Your Profit

The math most contractors never run — and the mistakes that cost them $93K+ a year. This free PDF breaks down the math in ten minutes. Plus, you'll understand the payroll traps that can wipe you out.