You bid a snow removal contract by pricing one event accurately, then deciding who carries the weather risk. That second decision is the whole job. Most guides treat the pricing model as a menu: seasonal, per push, per inch, hourly. It is not a menu. It is a bet on how many times you will roll out, and the winter of 2025-26 settled that bet violently for a lot of Ontario contractors.
What you are actually bidding
The pricing model decides who absorbs the difference between a normal winter and an abnormal one.
Environment and Climate Change Canada's 1991 to 2020 normals put annual snowfall at the Toronto City station at 121.5 cm, spread across the season as 25.9 cm in December, 34.7 cm in January, 28.8 cm in February and 19.0 cm in March. That is the number a seasonal bid quietly assumes.
Then January 2026 happened. More than 88.2 cm of snow fell at Pearson International Airport in that single month, the snowiest January and the snowiest month since records began in 1937, according to reporting in The Guardian on 26 January 2026. Parts of the city were buried under nearly 60 cm. One month at Pearson delivered roughly three quarters of what an entire normal year delivers at the city station.
If you sold a seasonal flat rate for 2025-26, you performed every one of those pushes for the price you quoted in September.
Watch out
Snowfall totals in centimetres are the wrong unit for a bid. Ten 3 cm dustings that never hit your trigger cost you nothing. One 30 cm storm cleared three times over 24 hours costs you three pushes plus stacking. Count triggered events, not accumulation.
A solo lawn care owner in North Idaho put the underlying question plainly on r/lawncare in September 2025: "some winters we get a TON of snow, some winters barely any... So how do you not starve if it doesn't snow?" The answer is that you pick which side of that variance you are paid to hold, and you charge for holding it.
The number the property manager is comparing you to
Your bid is not being compared to last winter. It is being compared to a five-year average.
That comes straight from the buyers. In a March 2026 thread on r/CommercialRealEstate about a Northeast retail plaza whose snow costs hit roughly $25,000 in one winter, an industrial property manager in the mid-Atlantic explained the method: "since our snow cost is a pass through, we use a 5 yr average in our annual OPEX estimate. That helps at least capture a bad winter or two. Its always classified as an uncontrollable expense."
Two consequences follow. First, a bid priced off the record winter you just lived through will look expensive against a five-year average, and you will lose on a number that felt conservative to you. Second, snow is usually carved out of the operating expense caps in a net lease, as another commenter in the same thread noted, so the manager is not defending a capped budget line. They are defending themselves from tenant complaints, which responds to predictability rather than to the lowest number.
Scale reference points from the same thread, from people paying the bills: roughly $10,000 to $15,000 for an average winter on an 80 to 100 space lot, rising to about $25,000 in a bad one. A Rocky Mountain owner with about 40 spaces reported paying around $7,500 in a season with 30 inches of cumulative snowfall, and about $700 the following season after only two events. Same lot, roughly a tenfold swing.
Build the cost stack before you look at anyone's price
Price one event from the bottom up. Everything else is arithmetic on top of that number.
Take a 45,000 sq ft retail plaza, about 100 spaces and 400 feet of sidewalk. The figures below are an illustration with stated assumptions, not market rates. Substitute your own.
| Line | Assumption | Cost per event |
|---|---|---|
| Plow truck and operator | 2.5 hours at $95 per hour loaded | $237.50 |
| Sidewalk crew with blower | 1.5 hours at $40 per hour loaded | $60.00 |
| Salt, one application | 1.5 tonnes at $150 per tonne | $225.00 |
| Direct cost per event | $522.50 |
Now the part most contractors get backwards. Overhead comes out of your margin, not on top of your cost. A 30% gross margin needs roughly a 43% markup on burdened cost, as set out in how to price a job as a contractor. That gives about $747 per event, call it $750. Run the season three ways at that price:
| Season | Triggered events | Revenue at $750 per event |
|---|---|---|
| Light | 10 | $7,500 |
| Near normal | 18 | $13,500 |
| Record | 28 | $21,000 |
Quote a flat seasonal rate of $13,500 and take 28 events, and you performed $21,000 of work for $13,500. Worse, your direct costs alone reach $14,630 at 28 events, so the contract has gone cash-negative before a single dollar of overhead or profit.
By the numbers
Using the cost stack above, a $13,500 seasonal contract stops covering even direct costs at about 26 events, and your margin is gone well before that. Calculate both numbers for every seasonal bid and write them on the worksheet before you sign.
Published ranges are no substitute. A February 2026 guide from Get Tiny Lawn puts mid-size commercial lots of 10,000 to 40,000 sq ft at $300 to $600 per push, while Housecall Pro's January 2026 guide lists commercial plowing at $75 to $200. The gap between those two is wider than most contractors' entire margin, which is the argument for pricing from your own stopwatch.
The collar: how to cap a seasonal contract without losing the bid
If you cap a seasonal contract on the upside only, sophisticated buyers will call it out, and they will be right.
Here is the objection in the buyer's own words, from that same March 2026 thread, on what happened after a bad winter in the Upper Midwest: "nearly every seasonal contract came with a cap on pushes and charged per push after that, which completely defeats the purpose. Basically all the plow companies had no problem taking those big checks on light winters where they averaged $1000 per push, but the first year the variance went the other way they all redid the contracts to cap the seasonals."
That is a fairness argument, and a one-sided cap loses it. The fix is a symmetric collar, with both a ceiling and a floor:
- Seasonal price covers all triggered events up to a stated ceiling, say 22 events, set at roughly 120% of your five-year average.
- Overage above the ceiling bills at a reduced per-push rate, say 80% of standard, because overhead is already recovered inside the seasonal fee.
- Credit below a stated floor, say 12 events, returns a defined amount per unused event, capped at around 10% of contract value.
You keep the middle of the distribution, where you make money and the client gets budget certainty, and you share both tails. When a manager pushes back on the cap, point at the floor: you are the only bidder who put money on the table for a mild winter.
Winning snow contracts is a bidding problem in October and a lead flow problem in August. If you are only bidding the properties that happen to call you, you are competing on price by default. We build the demand side so you get to choose which lots you want to bid.
Salt is the line item that will break a 2026-27 bid
Quote salt separately, or attach an escalator. Do not bury it in a flat seasonal number this year.
During the 2025-26 season CTV News Barrie reported on Ontario contractors facing a mid-season salt squeeze. Terry King, co-owner of Ground Level Contracting, which clears commercial properties in Barrie and Orillia, said his cost had gone from around $100 per tonne to nearly $200 per tonne. "To have two salt shortages in one fiscal year, it's a lot," he said, adding that "a lot of contractors are struggling to pay for their supplies if they could get them. A lot of them are going to struggle, and some of them probably will go bankrupt."
Availability was the other half. John Rubino of Apex Aggregates and Landscaping Supplies, which both uses and supplies salt across Simcoe County, was sourcing from Montreal and as far as Egypt: "If you're ordering four loads, you're maybe getting one."
The structural picture has not improved. Suppliers writing in June 2026 about the 2026-27 season describe domestic production roughly flat for decades against rising demand, heavy reliance on imports from Chile, Egypt and Morocco, and shipments that take weeks to arrive and cannot respond to a storm.
Notice how the City of Barrie handled it: bulk buying on a fixed annual contract, locked in for several years, which is why it pays less per tonne than the contractors around it. You cannot buy at municipal scale, but you can copy the principle. Pre-buy and store what you can, and make sure your contract does not force you to eat a doubling.
Three workable salt structures, in order of how much risk you keep:
- Per application, billed separately. Lowest risk to you, and the structure buyers in the HOA and property manager threads already recognise.
- Included with a tonnage cap. A stated number of tonnes sits inside the seasonal price, with additional tonnage billed at cost plus a stated margin.
- Included with an escalator. Fully bundled, with a clause passing through supplier increases above a threshold, for example 15% over the price at signing.
Trigger, response and scope language that prevents the argument
Most billing disputes come from three undefined words: trigger, event and complete.
An operator with about 30 commercial accounts, posting on r/landscaping in December 2025, described a structure worth copying: "we charge per push up until 3". At 4" an hourly rate is triggered for the type of machine we're using to clear. Per push is the most fair. It's a feast or famine business." The same operator bills a separate flat rate for an "open up" during a daytime storm, and controls dispatch rather than waiting for a call: "Ultimately the client doesn't know snow like we know it. The consistency of the snow, the temps leading after a snow, wind conditions, etc all factor into it and it's best if we make the call."
Client-request dispatch sounds like it protects the client's budget. In practice it produces the complaint an HOA board member described in that same thread: residents wake to an uncleared lot, because a call-in customer sits behind every contracted route. Take dispatch control and say so in the bid. It is a selling point, not a concession.
Define these in writing:
- Trigger depth. Two inches or 5 cm is the common commercial standard. State who measures and where.
- Continuous snowfall. Specify whether you return each time the trigger is hit, service once when the event ends, or return on a fixed interval. Another contributor to that thread noted a 24-hour clause "saves you from getting charged for like 6 separate pushes during those multi-day storms," which is the objection to pre-empt rather than argue about in March.
- Surface list. Drive lanes, stalls, loading docks, sidewalks and entryways, plus what is excluded.
- Response window. Commercial lots typically expect the site open before the business day starts.
- Stacking and relocation. Where snow goes, and when hauling becomes a separate charge.
- Damage waiver. Pre-season walkthrough, staked hazards, photographed existing damage, signed.
Liability: the Ontario statute names you directly
If you plow commercial property in Ontario, you are not standing behind the property owner. You are standing beside them.
Section 6.1 of the Occupiers' Liability Act, added by Bill 118, the Occupiers' Liability Amendment Act, 2020, requires written notice of a snow or ice injury claim within 60 days. The persons who can be served are listed in subsection (2) as, first, "an occupier" and second, "an independent contractor employed by the occupier to remove snow or ice on the premises during the relevant period in which the injury occurred."
Three details in that section change how you should operate:
- Subsection (7) states that once notice is given to any person on the list, the 60-day limitation no longer applies "even if the action is to be brought against a person that did not originally receive the notice." Notice served on the property owner alone preserves a claim against you. You may hear about it much later.
- Subsection (4) puts a duty on you: a contractor who receives notice must serve a copy on the occupier who employed them.
- Subsections (5) and (6) carve out exceptions where the injured person died, or where a judge finds a reasonable excuse for late or insufficient notice and no prejudice to the defence.
The practical consequence is that a service record you cannot produce nine months later is a service record that does not exist. Log arrival and departure times, measured depth, product applied and quantity, photos, and a third-party weather record tied to the site. Brokers say the same thing from the underwriting side: contractors who keep detailed time-stamped logs get better pricing, because those logs are what defends the claim.
Two more items to settle before you quote anything commercial:
Your general liability policy probably excludes this work. Most standard general liability policies explicitly exclude commercial snow removal unless you add a winter operations endorsement or buy a standalone policy, and bundled business owner's policies commonly exclude it too. Ask specifically about completed operations coverage, the piece that responds when someone falls hours after your crew salted and left.
Price the premium into the bid. Canadian brokers quoting 2025 and 2026 rates put small contractors running one or two trucks at roughly $5,000 to $12,000 a year for $2 million in liability, and mid-size contractors servicing commercial lots and medical offices at roughly $12,000 to $25,000 for $5 million. One national brokerage notes Ontario contractors may see commercial general liability starting around $3,800 a year, against about $2,500 outside Ontario for a comparable truck-and-plow operation. Retail clients frequently require $5 million and institutional clients $10 million or more, so read the insurance requirement in the RFP before you spend a day measuring the lot.
Tip
Watch the hold harmless clause. Property managers routinely push all winter injury liability onto the contractor, including conditions you did not create, such as ice from a failed roof drain. Run the indemnity wording and the required limits past your broker before you bid, because a contract requiring coverage your policy excludes is worse than no contract.
Where the bids come from, and when
Bidding season for the 2026-27 winter is now, not November.
Commercial property managers and condo or HOA boards build winter budgets in late summer and early fall, and incumbents are usually renewed before the first snowfall. The paperwork gate is slower than the bid itself: certificate of insurance, additional insured endorsement, workers compensation clearance, licences and references. If managed properties are your target, getting on a property manager vendor list is a separate project that should run in parallel.
Route density decides the rest. Two lots four minutes apart at the same trigger depth are worth far more than three lots spread across a city, because drive time is unbilled on a per-push contract and pure loss on a seasonal one. Bid the cluster you can service in one shift and decline the outlier, even when the number looks good. The same logic in how to get work in the slow season applies here: the contracts that carry you through February are signed in September, which is why steady inbound demand beats chasing whoever calls, and why we built our lead generation work around it.
The pre-submit checklist
Run this before the bid leaves your hands:
- Site measured and timed, not estimated from satellite imagery.
- Stacking locations identified, hauling priced or excluded in writing.
- Per-event direct cost built from your own loaded labour and equipment rates.
- Markup applied that reaches your target margin, with overhead inside the margin.
- Event count taken from your service logs, not snowfall totals, and break-even count recorded.
- Ceiling, overage rate and floor credit stated if the bid is seasonal.
- Salt quoted separately, capped by tonnage, or covered by an escalator.
- Trigger depth, continuous snowfall rule, response window and surface list defined.
- Pre-season walkthrough booked, hazards staked, existing damage photographed.
- Insurance limits and indemnity wording confirmed against your actual policy.
- Payment terms and installment schedule stated, with a late fee.
The short version
Snow is one of the few trades where the quantity you deliver is decided by weather after the price is agreed. Every structural decision in the bid, seasonal versus per push, the trigger depth, the salt clause, the collar, is a decision about who holds that variance.
Contractors go broke on snow for two reasons: they price the average and get the tail, and they carry a liability their insurance quietly excluded. Both are fixable in the bid document, before the first flake.
