Winter hits and the phone stops ringing.
If you run a roofing company in a northern market, you know that feeling. November comes around, emergency calls drop off, and suddenly you're staring at payroll with no new jobs on the schedule. That's the feast-famine cycle most roofing contractors live in. Most of them accept it like bad weather. Just something that happens.
It doesn't have to be.
Roofing maintenance contracts are the fix. Not a complicated fix. Not an expensive one. But most roofing owners either don't offer them at all, or they pitch them wrong and wonder why nobody bites.
This article breaks down how to build a roofing maintenance contract program from scratch, what to charge, how to sell it, and what actually keeps homeowners renewing year after year.
What is a roofing maintenance contract?
A roofing maintenance contract is a scheduled service agreement between a roofing contractor and a homeowner. The contractor visits the property one or two times per year to inspect the roof, clean gutters, remove debris, and handle minor repairs. The homeowner pays a fixed monthly or annual fee. That's it.
The scope is defined upfront. The visit schedule is set. The price doesn't change mid-year. No surprises for the homeowner. No scrambling for you.
If someone asks you "what does a roof maintenance plan actually cover," you should be able to hand them a one-page checklist and they'd have their answer in two minutes.
Why roofing maintenance contracts matter more than you think
The roofing industry runs on emergency calls. Leak in a storm. Damage after hail. Shingles peeling after a hard winter. That's reactive work. And the margin on reactive work is lower than most contractors expect, because emergency dispatches eat truck time, pull techs off scheduled work, and leave your revenue tied to whatever the weather does.
Roofing maintenance contracts flip that. Instead of waiting for the phone to ring, you've got scheduled visits on the calendar. You know the revenue is coming. You can plan around it.
The numbers are straightforward. A typical roofing maintenance contract runs $75 to $150 per month, depending on roof size, age, and your market. Ten contracts at $100 a month is $1,000 in baseline revenue. Every month. Even in December.
That's not going to replace your busy season. But it keeps the lights on when things slow down, and it gives you something to plan payroll around.
Maintenance customers also refer more than one-time repair customers. A homeowner who sees you twice a year, gets a photo report after each visit, and feels like their roof is being watched over will tell their neighbors. That pipeline builds on its own once you've got a solid contract base running.
What a roofing maintenance contract actually includes
Before you sell anything, you need to know exactly what you're selling. Vague contracts cause disputes. Disputes cause cancellations. Get specific.
A standard roofing maintenance contract covers:
- Annual or semi-annual roof inspection
- Gutter cleaning (specify: 1x or 2x per year)
- Debris removal from roof surface
- Minor repairs like nail pops and small sealant failures
- A written or photo report after each visit
What it does NOT cover:
- Shingle replacement
- Major flashing repairs
- Structural work
- Damage from storm events (that's a separate estimate)
Write this in plain English. Use a checklist, not paragraphs. The homeowner should be able to read it in two minutes and understand exactly what they're getting.
Annual vs. semi-annual roofing maintenance contracts: which to offer
Most contractors offer one of two structures. Here's how they differ in practice.
Annual contracts include one visit per year. Best for newer roofs, mild climates, or homeowners who want basic peace of mind. Lower price point. Easier to sell. Easier to schedule.
Semi-annual contracts include two visits per year, typically spring and fall. Better fit for older roofs, northern markets with ice and snow load, or homeowners who've had problems before. Higher price point. More touchpoints means more trust built over time, which means better renewal rates.
In northern markets, semi-annual is almost always the right recommendation. One spring visit catches what winter did. One fall visit preps the roof before snow hits. The value is obvious and homeowners in those regions have usually been burned enough times to see it.
In mild climates, an annual contract is often enough to justify the relationship and the price.
If you're going to offer both, keep the scope difference clear. Don't just charge more for the semi-annual plan. Show the homeowner exactly what the second visit covers and why it matters for their specific roof.
Pricing models for roofing maintenance contracts
Most contractors use one of three models:
Monthly: $75 to $150/month. Easy for homeowners to accept. Works well for cash flow.
Per visit: $250 to $500 per visit, two visits per year. Simple to explain and track.
Annual upfront: $800 to $2,000 per year. Offer a small discount (7 to 12%) to encourage the upfront payment. Better for your cash flow. Works well when you can close it at the point of service.
Regional pricing matters. If you're in Minnesota, Michigan, or upstate New York, ice damming and snow load inspection adds real value. You can charge 30 to 40% more than a contractor in a mild climate and homeowners will pay it. They've been burned before.
FAQ: common questions about roofing maintenance contracts
What's the difference between a roof maintenance plan and a roof service agreement?
They're the same thing with different names. Some contractors call them roof inspection contracts or preventative roof care plans. The label doesn't matter. What matters is that the scope is written down, the price is fixed, and the visit schedule is set.
Are roofing maintenance contracts worth it for homeowners?
A roof repair caught early typically costs a few hundred dollars. The same issue left for six to twelve months often turns into a $3,000 to $8,000 job. A preventative roof care plan that costs $100/month is cheap insurance for most homeowners.
How long should a roofing maintenance contract run?
One year with an annual renewal option is the standard. Avoid locking homeowners into multi-year contracts. It creates friction at the close and resentment if they move or sell.
What's a fair cancellation policy?
Thirty days written notice. If they've pre-paid annually, refund the unused portion minus the cost of any visits already completed.
Do roof inspection contracts cover storm damage?
No. Spell this out clearly in the agreement. Storm damage goes through a separate estimate or an insurance claim. Your maintenance contract covers scheduled preventative work, not weather events.
What's the difference between an annual and semi-annual roof maintenance package?
An annual plan covers one inspection visit per year. A semi-annual plan covers two, usually spring and fall. Semi-annual plans are the better fit for older roofs and northern markets. Annual plans work fine for newer roofs or mild climates.
How to sell roofing maintenance contracts to homeowners
Here's where most contractors drop the ball.
They do a great repair job. Homeowner is happy. Tech packs up the truck and drives away. The contract never gets mentioned. Three months later, someone from the office sends a generic email. Nobody opens it.
The window to sell a roofing maintenance contract is during the service call. Close rate at the point of service runs 25 to 35%. Close rate from a follow-up email three days later drops to 5 to 8%. That's what shows up consistently when contractors actually track this number.
The pitch is simple. "We caught this issue today for a couple hundred dollars. If it had gone another six months, you'd be looking at $3,000 to $5,000. We offer a roof maintenance plan where we check in twice a year and stay ahead of problems like this. It's $X a month. Want us to set that up before we leave?"
No brochure needed. No sales training required.
The most common objection is: "I'll just call you if something goes wrong."
Your answer: "That's the problem. By the time something goes wrong, the damage is already done. The whole point of this is catching it before that."
Use the inspection itself as part of the pitch. Take photos of anything marginal, not just what's actively broken. Show the homeowner. "This flashing here is fine right now, but we'll want to keep an eye on it." Now they have a reason to stay on the plan.
Building your pricing strategy for roofing maintenance contracts
Margins on roofing maintenance contracts are better than emergency repairs. Expect 35 to 45% margin on a well-priced contract versus 20 to 25% on a typical emergency call. Emergency dispatches burn drive time, pull techs off other work, and give you no scheduling control. Maintenance visits are planned. You're not scrambling.
Before you set your price, calculate your cost per visit:
- Truck time and fuel (usually 30 to 60 minutes of drive time)
- Labor for the tech (1 to 1.5 hours on site)
- Materials: sealant, nails, small supplies (usually $20 to $50)
- Admin overhead: scheduling, follow-up, contract management
For most contractors, one visit costs $120 to $180 all-in. Two visits per year puts your cost at $240 to $360 per contract.
At $100/month ($1,200/year), you've got $840 to $960 gross before overhead. That's a solid margin.
Here's a simple example of how the model works:
| Contract price | Visits per year | Cost per year | Gross margin |
|---|---|---|---|
| $75/month ($900/yr) | 2 | ~$300 | ~$600 |
| $100/month ($1,200/yr) | 2 | ~$300 | ~$900 |
| $125/month ($1,500/yr) | 2 | ~$300 | ~$1,200 |
These numbers will vary based on your market, your drive times, and your labor costs. Run your own math before you set a price. The point is to know your floor before you quote anything.
The mistake most contractors make is pricing at $50/month to make it easy to say yes. At $50/month, you might not be making money after two visits. When you're running five visits a day across your contract base, that turns into a real loss.
Don't underprice to close. A homeowner paying $100/month who gets real value will stay on the plan for years. A homeowner paying $50/month who feels like they got a deal will cancel when they move or when the novelty wears off.
The implementation framework: rolling out roofing maintenance contracts step by step
You don't need to build a whole system before you start. Do this in order:
Step 1. Look at your last 90 days of calls. Which customers had repairs that could have been caught earlier? Those are your first targets for a retroactive maintenance pitch.
Step 2. Write a one-page contract. Checklist format. What's included, what's not, price, visit frequency, cancellation terms. Plain English only.
Step 3. Brief whoever's taking calls and doing inspections. The script is simple: "Before I go, I want to mention our roof maintenance plan." That's all they need to start.
Step 4. Set a weekly target. One or two new roofing maintenance contracts per week is realistic for most shops. That's 50 to 100 contracts in a year.
Step 5. Track them. At minimum: customer name, address, contract value, start date, renewal date. A spreadsheet works fine until you're past 20 or 30 contracts.
Step 6. Set renewal reminders 30 days out. If you're using Housecall Pro or ServiceTitan, both have built-in contract tracking and automated reminder tools. If you're not on either of those yet, a calendar reminder or a simple automated text through something like Podium works too.
Step 7. Call every new customer 30 days after the contract starts. Just check in. Ask if they have any questions. This one call cuts early cancellations by a wide margin.
Retention: why roofing maintenance contracts fail and how to prevent it
Most contractors who try roofing maintenance contracts give up within a year. Not because the idea is bad. Because the execution breaks down.
Here's what actually kills retention:
No follow-up. The homeowner signed up, forgot about it, never got their inspection call. Six months pass. They cancel because they're paying for something they never see.
Scope confusion. They expected shingles covered. You thought it was inspection only. They're angry. Contract is done.
No documentation. The tech visits, does the inspection, drives away. The homeowner has no record of what happened. Trust erodes. They start to wonder if they need the roof service agreement at all.
The fix for all three is the same: communication.
After every visit, send a photo report. Three to five photos: gutter condition, flashing, anything worth watching. Email it same day. It takes two minutes. It shows the homeowner exactly what they paid for, even if everything looked fine.
Contractors who do this consistently see 75 to 85% year-over-year renewal rates on their roofing maintenance contracts. Contractors who go quiet between visits see it drop to 40 to 50%. That's the difference between a program that compounds and one that leaks.
One more tactic that works: call, don't email, in month 10 to confirm renewal. A phone call gets roughly 80% renewal. Just sending an auto-renewal invoice gets around 45%. That call takes three minutes.
Roofing maintenance contracts during slow season: your cash flow lifeline
In northern climates, emergency roofing calls drop significantly from November through February. Snow on the roof means nobody wants a repair crew up there, and most homeowners won't notice a problem until spring.
Roofing maintenance contracts don't care about that. They're scheduled. They're paid. They show up in your account whether it's July or January.
If you've got 20 contracts at $100/month, that's $2,000 a month in December. Not enough to fund the whole company, but enough to cover a tech's salary or your own payroll during the slow weeks.
The play during shoulder season is this: use the slower schedule to do deep inspections on non-contract customers and convert them. You've got the time. You've got the capacity. A homeowner who calls in October because they saw a loose shingle is a natural candidate for a preventative roof care pitch before winter. You're already there. The conversation is easy.
Target converting 30 to 40% of inspection calls to roofing maintenance contracts during Q3 and Q4. Even if you close half that, you've added real income heading into the slow months.
Tools and systems to manage roofing maintenance contracts at scale
Keep it simple. Complicated systems don't get used.
If you have fewer than 10 contracts, a spreadsheet is fine. Columns you need: customer name, address, phone, contract value, start date, renewal date, last visit date, notes.
Once you're past 10 to 15 contracts, manual tracking starts to break down. Renewal reminders slip. Visits get missed. That's when field service software pays for itself.
ServiceTitan and Housecall Pro both handle roof maintenance plan tracking well. You can set up recurring jobs, automate customer reminders, and see your whole contract base in one view. Jobber is a solid option if you're not doing the volume that justifies ServiceTitan's price tag.
For customer communication, set up automated reminder texts. "Hi John, we have your roof inspection scheduled for Thursday at 9am. Reply CONFIRM or call us to reschedule." That text alone cuts no-shows and keeps the customer engaged with the plan.
For document storage, keep signed contracts in a shared folder organized by year. Google Drive works. Just keep it consistent. If a homeowner ever disputes what was covered, you want that signed checklist accessible in 30 seconds.
Common mistakes that tank roofing maintenance contracts
Mistake 1: Vague scope.
The contract says "maintenance." The homeowner thinks that means new shingles when needed. You think it means an annual inspection. That gap leads to a bad conversation.
Fix: Use a checklist. Explicitly list what's included and what's not. No ambiguity.
Mistake 2: Missing scheduled visits.
Your tech had a busy week. The quarterly inspection got pushed. Then pushed again. Customer notices. Cancels.
Fix: Put every scheduled visit in your dispatch system as a real job with a reminder two days before. Treat it like any other appointment.
Mistake 3: Pricing too low.
You priced at $60/month to make it easy to say yes. After six months of visits, you're breaking even or losing money. Resentment builds. You start skipping visits. Contract falls apart.
Fix: Price for your actual cost, then add margin. If a visit costs $150 all-in and you're doing two a year, $100/month is your floor, not your price.
Mistake 4: No upsell during maintenance visits.
The tech does the inspection, spots some failing flashing, doesn't say anything because "they're on the maintenance plan." That's a missed repair estimate worth $800 to $1,500.
Fix: Train your techs that maintenance visits are also sales opportunities. Anything outside the scope of the roof inspection contract gets a separate estimate on the spot. "Saw some flashing issues during the inspection today. That's not covered under the maintenance plan, but I can get you a quote before I leave. Probably $900 to fix it right before winter."
Mistake 5: Going silent between visits.
No contact for six months. Homeowner forgets they're on the plan. Signs up with a competitor who knocked on their door.
Fix: Send one text or email per quarter even when no visit is scheduled. A brief check-in. "Your roof is in good shape. Next inspection is set for April. Let us know if anything comes up in the meantime."
How to get roofing maintenance contracts in front of the right homeowners
Your existing customers are the best source. Every inspection call, every repair job, every estimate. Mention the contract before you leave. You'll get 25 to 35% uptake if you do it consistently.
Beyond that, a few channels work well:
Google LSA and paid search. Bid on "roof inspection" and "roof maintenance" in your area. These are intent-heavy searches. Someone looking for a roof inspection is a natural candidate for a roof maintenance plan. Bundle the offer: "Roof inspection plus annual preventative roof care plan starting at $X."
Direct mail to older homes. Roofs on homes 15 years or older are in the high-need range. You can buy mailing lists by home age or pull your county assessor data. A simple postcard works: "Your roof is likely due for an inspection. We protect roofs in [city]. Here's what to expect."
Referral incentive for current customers. Your maintenance customers talk. Give them $50 to $100 for every referral who signs a roofing maintenance contract. It's cheap customer acquisition and it works.
Your Google reviews. When you reply to five-star reviews, mention the maintenance plan naturally. "So glad the inspection went well. Customers who stay on our annual roof maintenance plan rarely face surprise repairs." It shows up in search and builds credibility.
The bottom line: ROI of roofing maintenance contracts
Run the numbers on a single customer.
A homeowner signs a $100/month roofing maintenance contract. They stay on it for three years. That's $3,600 in revenue from one customer. Your margin on that is around 50 to 60%, so roughly $1,800 to $2,200 in gross profit. Your cost to sell them the contract was your tech's time during the original service call. No ad spend. No lead gen fee.
Now run it at scale.
Twenty contracts at $100/month is $2,000/month. Thirty contracts is $3,000. That's $24,000 to $36,000 a year in recurring revenue sitting underneath your regular work. At healthy margins. With customers who are already warm.
Compare that to chasing emergency calls at 20 to 25% margin with no guarantee of volume in winter.
A roofing maintenance contract program isn't a side product. It's the part of your business that keeps running when everything else slows down. And once the system is in place, it grows with almost no extra work.
Ready to build a system that stops leads from going cold and turns more service calls into recurring revenue? Fill out the contact form below and we'll take a look at how your current setup is working and where the gaps are.