BlogHow-To

How to Build a Preventive Maintenance Automation Workflow

Preventive maintenance is the single biggest LTV lever in field service. Here is exactly how to build the automation that turns one-time service customers into recurring contract revenue, with auto-scheduled jobs, reminder sequences, and recurring invoices.

Davaughn White·Founder
16 min read

Walk into any well-run HVAC shop, plumbing company, or fleet maintenance operation and ask the owner what one thing they wish they had more of, and the answer is almost always the same: more preventive maintenance contracts. Not more leads. Not more trucks. More PM contracts.

The reason is math. A one-time service call generates one invoice and ends. A preventive maintenance contract generates 2-4 scheduled visits per year for as long as the customer renews — often 5 to 10 years — plus first-right-of-refusal on every emergency repair that happens between visits. In the field service businesses I have worked with, PM customers have roughly 3x the lifetime value of break-fix-only customers, and their gross margin on emergency repair work is higher because they are not bidding against three other shops.

The blocker is operational. Running PM at scale means tracking which customer is due for which service in which week, dispatching the right technician with the right checklist, sending the right reminder before the visit so the customer is home, completing the work, getting the invoice out same-day, and then scheduling the next visit a year in advance. Do that by hand for 50 customers and you spend a Saturday a month on it. Do it for 500 customers and you cannot.

This is exactly the kind of workflow that automation eats for breakfast. Here is the build, end to end, using Deelo's apps. The same architecture works for HVAC, plumbing, fleet maintenance, commercial cleaning, generator service, fire safety inspection, refrigeration, and any other recurring-service field business.

Step 1: Model the PM contract in CRM

Open Deelo CRM and create a Contract record type if you do not already have one. Each PM contract has the following fields, and they all matter — the automation downstream reads every one.

  • Customer: link to the Account/Contact record.
  • Equipment list: structured array of pieces of equipment covered (HVAC unit, water heater, fire panel, fleet vehicle). Include make, model, serial number, install date, location.
  • Service cadence: how often each visit happens (semi-annual, quarterly, monthly). Different equipment can have different cadences within the same contract.
  • Service template: which checklist gets run at each visit. "Spring tune-up," "Fall tune-up," "Annual safety inspection," "Quarterly filter replacement."
  • Contract value: total annual price, plus the per-visit allocation. Used for invoicing.
  • Billing frequency: monthly, quarterly, semi-annual, or annual. Most shops bill monthly via auto-pay for cash flow.
  • Start date and end date: contract period. Most are 12-month auto-renewing.
  • Customer preferences: preferred technician, preferred day of week, special access instructions (gate code, dog in yard, key under mat).

Every field here is a knob the automation will turn later. The richer the contract record, the less manual work downstream.

Step 2: Auto-schedule the recurring jobs

Once a contract is signed, the next 12 months of jobs should appear in the dispatch schedule automatically. Open Deelo Automation and build the contract-onboarding workflow.

The trigger is the Contract record's status changing to "Active." The first action node loops through the equipment list and the service cadence to generate the visit schedule. A semi-annual contract with two pieces of equipment on different schedules might produce 4-6 scheduled visits across the year. Each scheduled visit becomes a Booking record in Deelo Bookings with these properties: customer, equipment, service template, target week (not a specific day yet — that gets confirmed closer to the visit), assigned territory or technician if specified, and the contract reference.

The scheduling logic should respect a few rules. Group visits geographically when possible — if the customer has two pieces of equipment on the same address, schedule them on the same visit. Stagger contracts across the calendar so you do not get a glut of jobs in week 26 just because every PM was sold in week 1. Build a Conditional node that checks the technician's existing schedule density and shifts the target week by one if it is already over capacity.

Step 3: Confirm the appointment 14 days out

Two weeks before each scheduled PM visit, the workflow needs to lock in a specific day and time. Build a second workflow in Automation triggered by a Schedule node that runs daily and looks for any Booking whose target week is 14 days out and whose specific date is still null.

For each matching booking, send the customer an SMS and email via Deelo Marketing and Deelo SMS. The message offers two or three available time slots within the target week, with one-click confirmation. When the customer picks a slot, the Booking record updates with the confirmed date/time, and the workflow auto-assigns the technician based on territory, skills, and the customer's preferred-technician field.

For customers who do not respond within 48 hours, the workflow assigns the most likely time slot and sends a confirmation message stating the assigned slot with a one-click reschedule link. Do not let unscheduled bookings sit indefinitely — they end up missed, and missed PM visits are the leading cause of contract cancellation.

Step 4: Send the 7-day-out reminder

One week before the visit, the customer gets a reminder. The reminder workflow is simple — a Schedule node that runs daily, finds bookings 7 days out with confirmed dates, and dispatches the reminder via the channels in the contract's preferences.

SMS is the default channel for field service reminders. The response rate and the show-up rate are both higher than email. The message should include: the specific date and time window, the technician's name (so a stranger does not show up at the door), the equipment being serviced, what the customer needs to do to prepare (clear access, secure pets, be home or leave instructions), and a one-click reschedule link in case something has come up.

For customers on email-only preference, send the same content as an email. For high-value commercial customers, send both, plus a calendar invite the customer can drop into their team's shared calendar.

Step 5: Day-of dispatch and en-route notification

Morning of the visit, the dispatcher (or the dispatch automation) confirms the technician's route in Deelo Field Service. The technician opens the booking on their mobile device and sees the service template — the checklist for the visit, with every step pre-loaded from the contract. For an HVAC spring tune-up, that might be 20-30 items covering refrigerant levels, electrical connections, condensate drain, filter, blower motor, thermostat calibration, and so on. Each item gets a pass/fail/note as the technician works through it.

When the technician taps "On my way" in the mobile app, the Field Service app fires an event that the Automation engine picks up. The workflow sends an SMS to the customer: "[Technician name] is on the way and will arrive in roughly 20 minutes. Truck description: white Ford Transit, license plate ABC-1234." This is the single piece of automation customers thank you for the most in service businesses. It eliminates the "is anyone actually coming" anxiety that drives so many cancellation calls.

Step 6: Completion, invoice, and next-cycle scheduling

When the technician finishes the visit and taps "Complete" in Field Service, the workflow fires the closing automation. This is where the recurring-revenue magic actually happens — every cycle ends with the next cycle already scheduled and billed.

  • Generate the visit report: from the checklist results, attach photos, technician notes, and any findings that need follow-up repair work. Email to the customer and save to the contract record.
  • Generate the invoice: in Deelo Invoicing, create an invoice using the per-visit allocation from the contract. For customers on monthly auto-pay, this is logged but not charged separately. For per-visit billing, charge the card on file immediately.
  • Flag follow-up repair opportunities: if the technician noted any equipment issues that need separate paid work, create a quote draft in the CRM and assign a task to the office to call the customer and discuss.
  • Schedule the next cycle's visit: write the next Booking record to the schedule based on the cadence. For a semi-annual contract, the next booking lands 6 months out.
  • Trigger renewal sequence if contract ends within 60 days: enroll the customer in a renewal email/SMS sequence with the new pricing and a one-click renewal link.

The technician taps one button, and seven things happen across four apps. The office did no manual work. The customer received a completed report, a paid invoice, and a confirmed future appointment within minutes of the visit ending.

Step 7: Track the right metrics

PM is a long game. The leading indicators that tell you whether your program is healthy are not revenue — revenue lags by 6-12 months. Watch these instead, weekly.

  • PM contract count and growth: total active PM contracts this week vs. last week. Goal: net positive every week.
  • Attach rate on emergency calls: percentage of break-fix customers who got offered (and signed) a PM contract on the same visit. Industry good is 25-40%; great is 50%+.
  • Visit completion rate: percentage of scheduled PM visits actually completed in the target month. Below 90% means the scheduling automation is breaking somewhere.
  • Renewal rate: percentage of contracts at end-of-term that renew. Healthy is 85-95%. Below 80% means something is wrong with either the service quality or the renewal automation.
  • Revenue per technician hour on PM: average billable hours per tech per week spent on PM. Used to size capacity and pricing.

Build this dashboard in Deelo's reporting and put it on a TV in the shop. PM is the metric the whole company should see every day, because every contract you add today pays out for the next decade.

What to do next

If you do not have a single PM contract today, start with the easiest sell: offer every break-fix customer who paid an invoice in the last 90 days a discounted first-year PM contract. The conversion rate on this cold offer is usually 10-15% even before the automation is built. That gives you 10-30 contracts to onboard and validate the workflow with before you scale it.

If you already have PM contracts but they live in a paper file or a spreadsheet and you are scheduling them by hand, your first build should be the auto-scheduling workflow from Step 2. That single workflow saves the most time and pays for the whole stack in the first month. Layer on the reminder, dispatch, and completion workflows over the next two sprints. Within 90 days you should be running 5-10x the contract volume on the same office staff. If you want help mapping your current PM motion onto this architecture, the Deelo AI Assistant can review your existing customer list and identify which accounts are the highest-probability PM candidates.

Preventive maintenance automation FAQ

How often should preventive maintenance visits be scheduled?
Depends on the equipment and the agreement tier. Residential HVAC is typically twice a year (spring AC tune-up, fall furnace check). Commercial HVAC and plumbing run quarterly. Generators and fire systems often follow code-mandated intervals — monthly, quarterly, or annually depending on jurisdiction. Pool service runs weekly during season. The mistake operators make is over-promising visit frequency to close the sale, then under-delivering. Set the cadence based on what equipment actually needs and what your techs can realistically complete, then price accordingly.
How far in advance should PM visits auto-schedule?
21-30 days out. That gives the customer enough notice to find a window, your dispatcher enough lead time to load-balance the route, and you a buffer if the customer reschedules. Scheduling 7 days out forces same-week dispatch chaos. Scheduling 60 days out gives customers too much time to forget and no-show. The sweet spot is auto-create the work order at 30 days, send the customer a 'pick your window' email at 21 days, confirm at 7 days, and SMS the day-before ETA reminder.
What happens when a customer skips a PM visit?
Document it in the agreement record, attempt one reschedule, and flag the agreement for renewal review. Customers who skip more than one scheduled visit per year churn at 3-4x the rate at renewal — the skip is itself a churn signal. A good workflow auto-creates a task for the account owner after a second skip, with the customer's full agreement and visit history pre-loaded. Most operators get back 30-50 percent of skipped customers with a single proactive call. The remainder were already gone; you just hadn't been told.
Should PM workflows handle the parts forecasting too?
Yes, and it's one of the highest-ROI add-ons. If you know you'll perform 200 HVAC tune-ups in March, you know roughly how many capacitors, filters, and contactors you'll consume. Feeding the PM schedule into your inventory forecasting prevents tech-on-job parts runs (which cost 30-90 minutes of billable time each). Most operators do this on a spreadsheet at first. The upgrade is letting the automation auto-create a purchase order suggestion 14 days before the projected consumption window. Saves margin every cycle.

Automate PM in Deelo

Deelo's Field Service and Automation apps work together to generate recurring work orders, schedule visits, and forecast parts. Build your first PM workflow free, no credit card required.

Start Free — No Credit Card

Explore More

Related Articles