MitchellQuote — job quoting software for contractors

Advertisement

Seasonal Snow Contract or Per Push? How to Choose (and Pass Through Salt and Diesel)

Sell a seasonal snow removal contract when your own job tickets tell you how many times you service that kind of lot in an average winter and you have the cash to ride out a heavy one. Sell per push when you have no history on the lot, the trigger depth is loose, or one bad January would put you underwater. Whichever form you pick, salt and diesel belong in their own pass-through clause, because neither form protects you when those two costs jump after the contract is signed.

The snow removal contract vs per push decision comes down to who carries the snowfall count. On a seasonal flat price, you do. The customer gets a fixed budget, you get predictable cash, and every visit past your estimate comes out of your pocket. On per push, the customer carries the count. Your revenue tracks your work, but a light winter leaves the truck payment and insurance with fewer visits to cover them.

Both forms start from the same number, which is what one visit costs you. Get that right first and the rest is multiplication and contract language.

Work out what one visit costs you

Pull these from your own records before you open the job profit calculator.

  1. Get on-site hours from last season's job tickets or GPS logs for that lot or a lot like it. If you have no tickets, time a dry run of the route and add the sidewalk work, then treat the number as a guess until the first few events confirm it.
  2. Set crew size from the job ticket: plow operator only, or operator plus a shovel hand.
  3. Take your loaded labor rate from the payroll report. This is what an hour costs the shop (wage plus payroll taxes, workers' comp, and benefits). It is your cost, and it is lower than any rate you would bill. If you only know the wage, build the burdened labor rate before you price anything.
  4. Read drive time off the route sheet, counting only the share that belongs to this stop. Drive labor is drive hours x crew size x loaded rate.
  5. Take fuel per visit from the fuel card statement. Divide a storm's fuel for that truck by the stops it ran. If the statement lumps trucks together, estimate from one tracked route and correct it after the first billing cycle.
  6. Figure salt per visit from the supplier invoice (price per ton delivered) and the tons the job ticket or spreader log shows for that lot. Enter materials at your cost. Your margin already earns profit on materials. If you also want a materials markup, use the optional Material Markup field: it adds profit on top of your margin, and the calculator shows your effective margin. The examples below leave Material Markup at 0.
  7. Take your overhead percentage from the P&L. If you have never worked it out, calculate your overhead percentage first. Overhead applies to labor, drive labor, and materials at cost. Fuel is added after overhead.
  8. Pick your target margin. Price is total cost divided by (1 minus margin).

Example 1: pricing a single push

This is an example with assumed shop inputs. Say you plow and salt a small commercial lot of about half an acre. Assume 1.0 hour on site, 1 worker, a loaded labor rate of $38.00 per hour, 0.25 hour of drive time, $18.00 of fuel per visit, 0.2 ton of salt at an assumed $100.00 per ton, 20% overhead, and a 25% target margin.

LineArithmetic (example inputs)Result
On-site labor1.0 hour x 1 worker x $38.00$38.00
Drive labor0.25 hour x 1 worker x $38.00$9.50
Salt at cost0.2 ton x $100.00$20.00
Direct cost$38.00 + $9.50 + $20.00$67.50
Overhead20% x $67.50$13.50
Fuelassumed per visit$18.00
Total cost$67.50 + $13.50 + $18.00$99.00
Per-push price$99.00 / (1 - 0.25)$132.00
Profit per push$132.00 - $99.00$33.00

For orientation, Tree Wise Men's Commercial Snow Removal Cost in Wisconsin guide (2026-27 pricing, as listed on Oct 5, 2026) puts smaller commercial lots in Southern Wisconsin and Rock County at $75 to $250 per push. The example lands inside that range. That tells you the inputs are plausible for one region, and nothing more. Your price comes from your tickets and invoices.

Example 2: turning that visit into a seasonal contract

A seasonal snow removal contract is the per-visit cost multiplied by the number of visits you expect, sold as one price. The visit count comes from your job tickets: count the serviced events per season for the last several winters on that route and average them. If you are new to the area and have no tickets, you have no count, and that alone is a reason to sell per push for the first season.

This example uses the same lot and the same assumed inputs as Example 1, with an assumed average of 20 visits per season.

LineArithmetic (example inputs)Result
On-site labor20 hours x 1 worker x $38.00$760.00
Drive labor5 hours x 1 worker x $38.00$190.00
Salt at cost4 tons x $100.00$400.00
Direct cost$760.00 + $190.00 + $400.00$1,350.00
Overhead20% x $1,350.00$270.00
Fuel20 visits x $18.00$360.00
Total cost$1,350.00 + $270.00 + $360.00$1,980.00
Seasonal price$1,980.00 / (1 - 0.25)$2,640.00
Profit at 20 visits$2,640.00 - $1,980.00$660.00

On the assumed half-acre lot, $2,640.00 works out to $5,280.00 per acre ($2,640.00 / 0.5). The same Tree Wise Men guide (as listed on Oct 5, 2026) says full-service seasonal work in Southern Wisconsin often runs $2,500 to $7,500 or more per acre with salt and sidewalks, so the example sits inside that band.

What a light or heavy winter does to that price

Each visit costs $99.00 in this example, so the flat price stops making money at $2,640.00 / $99.00 = 26.67 visits. Visit 27 is where you start paying to plow.

VisitsTotal cost (visits x $99.00)Profit on $2,640.00 flatMargin
12$1,188.00$1,452.0055.00%
20$1,980.00$660.0025.00%
26$2,574.00$66.002.50%
28$2,772.00-$132.00-5.00%

Now the same winters on per push at $132.00. Twelve visits bring in 12 x $132.00 = $1,584.00, which is $1,056.00 less revenue than the seasonal price. Twenty-eight visits bring in 28 x $132.00 = $3,696.00 with $33.00 of profit on every one. Per push never loses money on a heavy winter. The catch is the light one: the 20% overhead figure assumes a normal volume of work, and the truck payment, insurance, and salt bin do not shrink because it snowed 12 times.

Choosing the form for each account

Seasonal flat pays when these are true:

  • You have several winters of job tickets for the route and the visit count is steady.
  • The customer needs a fixed number for a budget (property managers, HOAs, retail).
  • You want money coming in before the first storm to cover salt and equipment bought in the fall.
  • You can absorb a year that runs 30% or more over your average count, or the contract has an event cap.

Per push pays when these are true:

  • The lot is new to you, or the region is new to you.
  • The customer wants a low trigger depth or zero tolerance, which makes the count hard to predict.
  • You are short on cash reserves and cannot fund a loss in a heavy winter.
  • The customer is willing to trade a predictable bill for paying only when it snows.

Many shops run a mix on purpose. Seasonal accounts cover fixed costs in a light year, and per-push accounts make money in a heavy one. Look at the route as a whole and make sure you would survive both ends of the table above.

Check the visit count hidden in any price sheet

Divide a seasonal price by the per-visit price and you get the number of visits the seller expects. In the example, $2,640.00 / $132.00 = 20. Run the same check on published rates. D&D Snow Services in the Kitchener-Waterloo Region of Ontario, Canada lists residential driveway seasonal service at C$650 early-bird and a per-visit price of C$80 (Reserve Your 2026-27 Snow Season page, as listed on Oct 5, 2026, Canadian dollars). C$650 / C$80 = 8.1 visits, so a customer comes out ahead on the seasonal price at the ninth visit. Do this with your own two prices. If the implied count is lower than your ticket average, your seasonal price is too cheap or your per-push price is too high.

Put a cap on the season

An event cap moves the tail risk back to the customer without giving up the flat price. Using the example, assume a cap of 24 visits with visits beyond that billed at the $132.00 per-push price. At 28 visits you collect $2,640.00 + (4 x $132.00) = $3,168.00 against a cost of $2,772.00. Profit is $396.00, a 12.50% margin, where the uncapped contract lost $132.00. Write the cap as a count of serviced events or as inches of seasonal snowfall, and name the weather record that settles disputes.

Forecasts can cut the other way, too. NOAA's Climate Prediction Center said in its Oct 8, 2026 ENSO discussion that a strong to very strong El Niño is likely through January to March 2027, and that El Niño impacts this winter are more likely but not guaranteed; if that means fewer storms where you plow, a seasonal flat price keeps you paid while a per push route goes quiet.

Why salt and diesel need their own clause

The visit count is one risk. Input prices are a second one, and they hit seasonal and per-push accounts equally because both are signed in the fall at a fixed price. Here is how those inputs looked heading into this season.

FigureWhere it appliesSource and date
On-highway diesel at $6.285, $6.529, and $6.382 per gallon for the weeks of Sep 14, Sep 21, and Sep 28, 2026U.S. national average, all taxes includedEIA Gasoline and Diesel Fuel Update, fetched Oct 5, 2026
Seasonal fuel budget of about $15,000 in a typical year, with about $30,000 to $35,000 budgeted this season. Diesel about $6.37 per gallon that daySpezio Property Services, Rochester, NYRochester First / WROC, Sep 21, 2026
Road salt at $111.41 per ton ($256,243 for 2,300 tons, emergency contract with Midwest Salt), against about $72 per ton the prior yearYorkville, Illinois (municipal purchase)$111.41/ton and $256,243: Shaw Local, Sep 15, 2026. 2,300 tons and prior-year ~$72/ton: Shaw Local, Aug 13, 2026 (https://www.shawlocal.com/kendall-county-now/2026/08/13/supply-shortage-yorkville-scrambles-to-secure-contract-for-winter-road-salt/)

The EIA national average moved 24.4 cents in one week ($6.529 - $6.285) and gave back 14.7 cents the next ($6.529 - $6.382). A Rochester operator at least doubled a fuel budget. An Illinois town paid $39.41 more per ton for salt than the year before ($111.41 from Shaw Local, Sep 15, 2026, minus about $72 from Shaw Local, Aug 13, 2026). A municipal salt contract is a different animal from your bulk yard price, but your supplier buys in the same market.

The same push with salt and fuel up by half

This is a stress test on Example 1 with assumed inputs. Say your salt invoice goes from the assumed $100.00 to an assumed $150.00 per ton and fuel per visit goes from $18.00 to $27.00 after the contract is signed.

LineArithmetic (example inputs)Result
On-site labor1.0 hour x 1 worker x $38.00$38.00
Drive labor0.25 hour x 1 worker x $38.00$9.50
Salt at cost0.2 ton x $150.00$30.00
Direct cost$38.00 + $9.50 + $30.00$77.50
Overhead20% x $77.50$15.50
Fuelassumed per visit$27.00
Total cost$77.50 + $15.50 + $27.00$120.00
Profit at the signed $132.00$132.00 - $120.00$12.00
Margin$12.00 / $132.009.09%

A 25% margin became 9.09% with no change in snowfall. On the seasonal contract the result is the same: 20 visits x $120.00 = $2,400.00 of cost against $2,640.00, leaving $240.00, which is also 9.09%. You could have padded the margin in October to cover this, but then you are the high bid in every year the spike does not happen. A clause charges the customer only if the cost shows up.

Writing the pass-through clause

  1. Name the base price for each input. For salt, use the delivered price per ton on your supplier invoice or written quote dated nearest the contract. For diesel, use a published index anyone can look up, such as the EIA weekly U.S. on-highway diesel average, and name the week. A contract signed this week could cite $6.382 per gallon for the week of Sep 28, 2026 (EIA, fetched Oct 5, 2026).
  2. State the quantity the surcharge applies to. For salt this is tons applied to the property, from the job ticket. For fuel it is the fuel dollars per visit that you priced in, from the Fuel line of your estimate.
  3. Set a trigger so small moves do not create paperwork. A percentage band above the base works for both inputs.
  4. Say whether the surcharge is billed at cost or at cost plus a stated percentage.
  5. Say when it is billed (per invoice on per-push accounts, monthly on seasonal accounts) and what proof the customer can ask for (supplier invoice, index printout).
  6. Make it run both ways if you want it accepted easily. A clause that also credits the customer when prices fall below the band is far easier to get signed.

Sample wording, with example numbers you would replace with your own:

Pricing in this agreement is based on bulk salt at $100.00 per ton delivered, per Contractor's supplier quote dated on or near the agreement date. If Contractor's invoiced salt price rises more than 10% above that base, Customer will pay the difference per ton, at cost, for the tons applied to the property that month. Contractor will provide the supplier invoice on request.

Pricing is also based on the U.S. Energy Information Administration weekly on-highway diesel average of $6.382 per gallon. For each full 10% that the published average exceeds that base during a week in which service is performed, a fuel surcharge of $1.80 per visit applies.

The $1.80 is 10% x the $18.00 example fuel line, and the first step would start when the index passes $7.02 ($6.382 x 1.10 = $7.0202). Have your attorney or insurance agent look over the final wording, since contract rules differ by state and province.

At cost, or cost plus?

In the stress test, raw cost rose $19.00 per visit ($10.00 of salt plus $9.00 of fuel). Passing that through at cost makes the price $132.00 + $19.00 = $151.00 against a $120.00 cost. Profit is $31.00 and margin is 20.53% ($31.00 / $151.00). You are mostly whole, though short of 25%, because overhead still applies to the larger direct cost (the salt increase). Holding the full 25% would take $120.00 / 0.75 = $160.00, which is $28.00 over the signed price. At-cost clauses are simpler to explain and easier to audit. If you choose cost plus, print the percentage in the clause so nobody is surprised by the invoice.

Timing, account type, and the border

Early-bird windows and routes filling

Published pages show two versions of the same idea. D&D Snow Services (Kitchener-Waterloo Region, Ontario, Canada, as listed on Oct 5, 2026) prices its residential seasonal at C$650 early-bird and C$750 to C$899 after Oct 31, a step of C$100 to C$249. Tree Wise Men (Southern Wisconsin, as listed on Oct 5, 2026) says quote pricing rises about 5% to 10% in September as routes fill, and that most commercial and HOA accounts sign by Sep 30. A late-signing step is fair, because the last slots on a route cost you the most in drive time and overtime. Applied to the example, a 5% to 10% late step on $2,640.00 would add $132.00 to $264.00, for a price of $2,772.00 to $2,904.00. Print the deadline and both prices on the quote.

Quotes that sit open

A seasonal quote sent in early October and accepted in December was priced on October salt and October diesel. Give every open quote an expiry date, and keep it short while inputs are moving. The guide on how long a contractor quote is good for covers how to set and word that window.

A spike in the middle of the season

If salt or diesel jumps in January and your contracts have no clause, you cannot add one unilaterally. Send the supplier invoice, ask for a voluntary surcharge on remaining visits, and offer per-push accounts a salt-on-request option to bring usage down. Then put the clause in every renewal.

Commercial and residential accounts

Commercial lots use far more salt per visit and carry slip-and-fall exposure, so the salt clause and a written trigger depth matter most there. Residential driveways use little or no salt, and the fuel clause does most of the work. D&D lists commercial seasonal service from C$2,500 against the C$650 residential early-bird price (Ontario, Canadian dollars, as listed on Oct 5, 2026), which shows how far apart the two account types sit even at one company.

Canadian and U.S. rates

Every D&D figure in this post is in Canadian dollars for an Ontario market. The Tree Wise Men, Spezio, EIA, and Yorkville figures are U.S. dollars for Wisconsin, Rochester NY, the U.S. national average, and Illinois. Do not benchmark a U.S. quote against a C$ price sheet or the reverse. Use published rates to check structure (early-bird steps, implied visit counts) and your own costs to set the price.

Mistakes that cost shops the most

  • Guessing the visit count from memory. People remember the big storms and forget the two-inch nuisance events that still trigger service. Count tickets.
  • Using the hourly wage as the labor rate. Winter overtime and comp rates for plow work make the gap between wage and loaded cost wider, so price from the payroll report.
  • Leaving drive labor out because the truck was passing by anyway. Split route drive time across the stops so every account carries its share.
  • Applying overhead to marked-up salt. Overhead goes on materials at cost, with labor and drive labor. Fuel is added after overhead.
  • Writing "per push" without defining a push. State the trigger depth, whether a return trip in the same storm is a second push, and whether salting alone is a billable visit.
  • Signing a seasonal contract with no payment schedule. Bill in equal installments starting before the first event so the salt you bought in the fall is funded.

Checks to run before you send it

  1. Divide your seasonal price by your per-push price. The answer should match your ticket average.
  2. Reprice the season at 30% more visits than average. If the result is a loss you cannot fund, add a cap or sell per push.
  3. Reprice one visit with salt and fuel up by half. If the margin falls the way it did in the stress test, the clause is not optional.
  4. Confirm the base salt price in the clause matches a dated supplier document, and the base diesel price matches the published index for the week you name.
  5. Read the scope as if you were the customer. Trigger depth, cap, surcharge, and expiry date should each appear once and be easy to find. The walkthrough on writing a contractor estimate shows a clean layout for those lines.

To run your own numbers, open the calculator, enter one visit with your hours, crew size, loaded labor rate, salt at cost, drive time, fuel, overhead, and margin, then run it again with season totals. If the cost build is new to you, start with how to price a contractor job, and get the 2026-27 paperwork out before the routes fill.

MitchellQuote — job quoting software for contractors

Advertisement