Preventive Maintenance Schedules

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-quarterly tag (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:

  1. 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.
  2. 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.
  3. 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


Need help? Post in the Tech Support category or contact support@exoserva.com.