Preventive Maintenance Schedules turn one-time customers into recurring revenue. Instead of waiting for the customer’s furnace to fail in February, you visit twice a year, swap the filter, check the burner, and bill a predictable fee. The customer’s equipment lasts longer; you have a smoother revenue line; the relationship deepens. This guide walks the conceptual model, the contract structures that work, and how to operate Preventive Maintenance manually until the dedicated UI ships.
Note: A dedicated Preventive Maintenance Schedules surface is currently in development. This guide covers the concepts and shows how to run PM contracts today using Jobs + Tags + Workflow Builder. Watch GH issue #2013 for shipping updates.
Estimated reading time: 9 minutes
Why Preventive Maintenance is the most boring high-leverage move
Most contractors chase one-time service calls — emergency, install, repair. Preventive Maintenance is the unsexy alternative: routine visits on a calendar, smaller per-visit revenue, but compounding into the most stable, highest-margin revenue stream in field service.
The math:
- Per-visit revenue: $150-300 (small)
- Annual revenue per customer: $300-600 (2-4 visits/year)
- Customer LTV multiplier: 3-5x vs. break-fix-only customers (PM customers stay 5+ years; break-fix customers churn in 2-3)
- Margin per PM visit: 60-75% (much higher than emergency calls — predictable scope, no truck-roll surprises)
- Equipment-replacement upsell rate: 4-6x higher among PM customers (you’re seeing the equipment regularly, you spot end-of-life early, you’re the obvious vendor when replacement happens)
A 5-tech shop that converts 100 customers to PM contracts adds ~$50k of stable annual revenue with 65%+ margins. That’s the difference between a contractor who’s a job away from cash-flow trouble and one with predictable runway.
The PM contract structures that work
Three patterns, in order of complexity:
Pattern 1: Annual Tune-Up Plan (simplest)
- One visit per year, scheduled by season (e.g. AC tune-up in spring, furnace tune-up in fall)
- Flat annual fee, paid upfront or monthly
- 10-15% discount on emergency/repair work that comes up between visits
- Best for: residential, single-trade contractors, first PM offering
Typical pricing: $149-249/year for residential; $499-999 for small-commercial
Pattern 2: Quarterly Service Plan (most common)
- Four visits per year, one per season
- Includes filter changes, basic safety checks, system performance test
- Higher annual fee but bigger margin on the visits
- Best for: residential with HVAC that runs year-round, light-commercial
Typical pricing: $399-599/year residential; $1,200-2,400 small-commercial
Pattern 3: Tiered Service Contracts (Bronze / Silver / Gold)
- 2-12 visits per year depending on tier
- Varies by what’s included: filter changes only / + diagnostics / + minor parts / + 24-hr emergency response SLA
- Auto-pay monthly via card or ACH
- Best for: established contractors with mature pricing, commercial customers
Typical pricing: $300/$600/$1,200 annual residential tiers; $2k/$5k/$10k annual commercial tiers
The right pattern depends on your customer base. Start with Pattern 1 to learn; expand to Pattern 3 once you have 50+ customers on PM.
How to run PM today (without the dedicated UI)
Three components, all already in Exoserva:
Component 1: Customer tagging
Tag every PM customer with a tag like pm-quarterly or pm-annual. The tag drives every downstream automation. See Managing Customers for tagging mechanics.
Component 2: Recurring jobs as workflows
Use Workflow Builder to create PM-job triggers:
- Trigger: Schedule Time — every 90 days for quarterly customers, every 180 days for biannual, every 365 for annual
- Condition: customer has
pm-quarterlytag (or whatever your scheme) - Action: Create Job (Draft status) with the customer, address, “PM visit” title, and the right line items from your Price Book
- Action: Send customer SMS — “It’s time for your seasonal {service} — please confirm a date this week”
This is the manual equivalent of the dedicated PM Schedules feature. It works, it just requires the workflow setup once per tier.
Component 3: Recurring billing
Two options:
- Pay-per-visit — bill the customer at each visit; simpler but reduces the contract feel
- Auto-pay monthly — Stripe-managed recurring charge; configure via Stripe Setup → save card on file → schedule charges
Most established contractors prefer auto-pay monthly — predictable cash flow, less awkward billing conversations every 3 months.
How to sell PM contracts
Three sales patterns that work for PM (not the same as one-off service sales):
Pattern 1: At completion of a non-PM job
Tech finishes a furnace repair. As they’re packing up: “By the way, our annual maintenance plan would catch this kind of issue before it became an emergency. Can I leave you the brochure?”
Conversion rate: 15-25% if the customer had a real headache from the breakdown.
Pattern 2: At time of new equipment install
Tech installs a new water heater. As they’re hanging the warranty card: “This unit comes with our standard 1-year service inclusion. After that you can extend it as a maintenance plan — most customers do, since it doubles the equipment’s lifespan.”
Conversion rate: 50-70% — customers are already in “protect this investment” mindset.
Pattern 3: Spring / fall mailers to existing customers
Send a “Get ready for the season” email to existing customers without PM. “Schedule your annual AC tune-up — $149 if booked in March, $189 in April-May.”
Conversion rate: 5-10% — lower, but the work is purely email automation, very cheap.
Operating rhythm
Once you have ~25 PM customers:
- Weekly: review the upcoming-PM list (workflow logs); confirm each is on the dispatch board
- Monthly: PM revenue / churn review (which contracts didn’t renew, why)
- Quarterly: PM customer survey — are they happy with the value vs. break-fix?
- Annually: rate review — costs go up, contracts should too; communicate well in advance
What the dedicated feature will add
The PM Schedules surface (in development per GH issue #2013) will provide:
- A unified PM Schedules page with all active contracts, next visit dates, renewal dates
- Auto-creation of jobs at the configured cadence — no workflow-build required per tier
- Customer-facing PM portal — they see their schedule, request reschedules, view past visits
- Renewal automation — reminder emails 60/30/7 days before renewal, auto-renewal toggles
- Fleet view of all PM equipment — one click to see “all customers with HVAC due for service this month”
For now: the workflow-builder pattern works. Migrate to the dedicated feature when it ships.
Common mistakes
Three patterns to avoid:
- Over-promising the contract scope — “covers everything” sells better but kills margin when a $1,200 compressor fails. Always have explicit included / not included lists.
- Skipping the visit when it’s slow — “there’s nothing wrong, let’s skip the spring visit” feels like saving the customer money. Actually destroys the contract economics — they won’t renew if they don’t see value.
- Pricing PM as a discount — “sign up for PM and save 15% on emergency calls”. The discount becomes the value prop; the visits become noise. Better: “PM means we keep your equipment running smoothly so you don’t need emergency calls”.
Where to start in Exoserva
- Workflow Builder – Automate Your Operations — Maintenance template covers PM job creation
- Equipment and Asset Tracking — track installed equipment per customer
- Setting Up Stripe Payments — recurring billing for PM contracts
- Predictive Maintenance Setup — the next evolution of PM, AI-driven
Need help? Post in the Tech Support category or contact support@exoserva.com.