Maintenance Plans Sound Great. The Math Is Harder Than You Think.
Maintenance Plans Sound Great. The Math Is Harder Than You Think.
A reader emailed me last month asking if I'd ever run a maintenance plan at Reeves Electric. Yes. I launched one, watched it bleed margin for eight months, and rebuilt it from scratch. The second version works. The first version felt like it was working — that's the part that cost me.
If you're thinking about launching a membership program, this is the math version. Not the pitch.
The Recurring Revenue Fantasy
The pitch is easy. Sell 200 customers an annual membership for $299 each. That's $59,800 in predictable revenue before you turn a wrench in January. Retention improves, scheduling smooths out, life gets better.
That's incomplete in ways that will cost you money. It's not just incomplete — it's wrong enough to matter.
Most shops that launch a membership program never run the unit economics. They feel like the program is working because customers renewed and nobody complained. That's not data. A vibe is where margin goes to die.
How Most Small Shops Price These Wrong From Day One
I have a line I use on day rates: day rates are for guys who don't want to know if they're making money. Flat membership fees priced on feel are the same problem.
Here's what actually goes into a single maintenance visit. Labor for the visit itself — 90 minutes to two hours on a real inspection. Drive time, which in Austin is rarely under 20 minutes each direction. Consumables: outlet testers, labels, wire nuts, whatever you leave behind. Overhead allocation for the truck, insurance, software, and dispatcher time to schedule and confirm.
Most shops skip that math entirely. They look at what the HVAC company down the street charges for a tune-up plan, cut it slightly, and call it a price. That HVAC shop may be underwater too. You just copied someone else's mistake.
The EV charger pricing problem I've written about works similarly — shops quote an attractive number to win the job, then discover the real scope after the deposit clears. The membership version runs the same dynamic in reverse. The customer paid their $299. That number is locked. There's no change order to write. You eat the difference.
Price from cost. Set your floor at a real number. The customer's check is already cashed by the time you find out you're wrong.
The Scheduling Burden Nobody Talks About
Recurring maintenance plans don't smooth your schedule. They create a second, parallel scheduling problem that competes directly with higher-margin inbound calls.
Think about how inbound service calls work. A customer calls Tuesday morning with a tripping breaker. That call generates an appointment, the truck rolls, the tech resolves the issue, you invoice $350 to $600 and move on. Revenue lands same day.
Now you have 200 maintenance plan members, each getting one or two visits per year. That's 200 to 400 appointments you have to proactively schedule, confirm, and execute — on top of your inbound volume. You didn't hire a dedicated maintenance tech. Every plan visit is one of your five trucks not running a $400 to $800 organic service call.
The math only works if the lifetime value of a plan member genuinely offsets that opportunity cost. Which requires knowing your LTV. Which requires tracking it.
I run weekly numbers reviews and a monthly P&L close. I can tell you what my average revenue per truck per day was last quarter. If you don't know that number, you cannot model what a maintenance block actually costs you in displaced inbound revenue. The recurring fee is visible. The displaced calls are invisible. The invisible number is usually bigger.
A maintenance plan without a dedicated scheduling block — and a dispatcher who protects it — gets cannibalized by emergency calls every week. If you don't have that dispatcher discipline yet, the plan will quietly eat your best scheduling hours.
What a Member Actually Costs You
I'm going to use Reeves Electric's actual cost structure to illustrate this. Your numbers will differ, but the method is the same — build from your real costs, not from what I'm showing here.
At my shop, a fully loaded tech hour (wages, taxes, benefits) runs roughly $75. Truck cost fully loaded is around $65 per hour. Dispatcher time is around $22 per hour.
A two-hour visit with 40 minutes of drive time, $18 in consumables, and 25 minutes of dispatcher time lands around $220 in real cost before any overhead allocation for software, insurance load, or owner time touching the account.
If you're charging $299 annually and the member gets one visit, your gross margin is narrow before you account for a parts discount. And some members will call more than once.
I know this directly. In late 2022 — about six months into Reeves Electric — I ran an informal priority customer program for 28 customers. Flat annual fee, two priority service slots per year, 10% parts discount. I pulled the CallRail data after eight months. Those 28 customers were generating more inbound calls per household than non-members. Not fewer. More.
The fee gave them the sense of an open tab. "Priority" meant every small question warranted a call. My intake team fielded those calls, my dispatcher worked them into the schedule, and my techs were running more trips per address than the numbers could justify.
I killed the program. Repriced, tightened the scope definition, relaunched at a higher floor.
My NPS at month two of running Reeves Electric was a 4. Most of that damage came from customers whose expectations were mismanaged at intake — they thought they were getting one thing, received something slightly different, and the gap was enough. Maintenance plan members are the same problem at scale if the included services aren't defined with the same rigor I now put into my pre-quote phone screen.
The One Type of Shop Where This Actually Works
The shops running a maintenance plan profitably aren't distinguished by strong brands or great customer relationships. Those help. They're not the mechanism.
What I've actually seen work: dedicated scheduling blocks treated as untouchable. A CSR who owns the renewal workflow as a formal process. A price floor built from real cost data. A written scope definition — what's included, what isn't — communicated at enrollment, not discovered at the first visit.
After I killed the first version of my program, I rebuilt it with tighter scope and a higher floor. The included-services list went from vague ("priority access and a maintenance visit") to specific: one annual safety inspection with a written checklist, capped at 90 minutes, one guaranteed next-business-day service slot per year, no parts discount. Enrollment slowed initially. Margin per member went up. The call volume from members dropped to something close to what non-members generate.
The software piece matters more than people admit. A maintenance plan that isn't built into the scheduling and invoicing logic of your field service software is a manual process waiting to break. In Jobber, that means using the recurring visit workflow, tagging memberships so the scheduling cadence triggers automatically, and making sure renewal invoices generate without someone remembering to send them. If your dispatcher is tracking 200 renewal dates in a Google Sheet, some will get missed, members will lapse without notice, and you'll have a retention problem you'll misdiagnose as a marketing problem.
The workflow has to live in the software. That's not optional at any real scale.
What to Do Before You Launch Anything
If you're still interested after the last 1,500 words, here's the sequence that would have saved me eight months.
Pull your call recordings first. Tag every inbound call from a repeat customer in the last 90 days. That's your baseline membership candidate pool — and it tells you what those customers actually want before you guess at a plan structure. How often are they calling? What's the average ticket? If you're not on CallRail yet, that's the first $50 to spend. You cannot build a plan for a customer you've never analyzed.
Run your real cost-per-visit number. Labor, drive time, consumables, overhead allocation, dispatcher time. Write it down. That number is your floor.
Set your price at 1.4x that floor, minimum. You need margin for the members who call more than you modeled, for renewal friction, for the visit that runs long. The model will diverge from reality. It always does.
Write the scope in plain language before you sell anything. What's included. What isn't. What happens when the visit reveals something that requires additional work. Hand it to a customer at enrollment and read it aloud without flinching.
Build the workflow in Jobber or Service Fusion before the first sale. If the software can't handle the scheduling, invoicing, and renewal automatically, you don't have a program. You have a concept.
Sell to 10 existing customers only, then wait 90 days. Don't market it. Find 10 repeat customers who already trust you, enroll them, run the program for a full quarter, and pull the actual numbers: call volume per household, real visit cost, renewal rate, margin per member. Compare against what you modeled. Fix what's wrong before you scale.
That's the same approach I used to rebuild my intake process in 2022 — answer every call myself, take notes on what's actually broken, fix it before adding volume. The maintenance plan deserves the same treatment.
FAQ
Is a maintenance plan worth it for a shop under $1M in revenue?
Not yet, in most cases. Below $1M you almost certainly don't have a dedicated CSR or dispatcher. The renewal workflow, scheduling protection, and call management a plan requires will land on you or your techs. Get your intake process locked, get to a part-time CSR, then revisit.
What should actually be included in an electrical maintenance plan?
Define it by what you can execute in a fixed time window. A reasonable visit covers a panel inspection, breaker labeling, outlet and GFCI testing on a defined number of circuits, smoke and CO detector battery check, and a written findings report. That's 60 to 90 minutes. Anything requiring additional parts, repair work, or code correction gets quoted separately. Put that in writing at enrollment. Vague inclusion language is where member disputes are born.
How do I know if my existing membership pricing is wrong?
Pull your last 12 months of member activity and calculate the total cost to serve each account: visit labor, drive time, parts at discounted rate, dispatcher hours. Divide by what you collected. If your margin is under 25%, the pricing is wrong. If some members are showing negative margin, the profitable members are subsidizing the demanding ones. That's not a loyalty program.
What's the minimum annual fee I should charge?
Build from your real cost-per-visit number — not from what competitors charge and not from a generic market figure I'd be making up. Run the math I outlined above for your shop, in your market, with your actual labor and truck costs. Then apply the 1.4x floor. If the resulting number feels high, check your cost model before you discount it.
Should the membership include a discount on parts or labor?
I'd avoid it, especially early. Discounts compound on every service call, and the members who call most frequently are the ones you can least afford to discount. If you need a member benefit beyond the maintenance visit, offer a guaranteed response time or a dedicated scheduling line instead. Those have real value and don't erode margin on every subsequent job.
How many members do I need before the program makes financial sense?
At Reeves Electric, the math didn't work until I had enough members to justify a defined slice of my CSR's weekly hours for renewal management and scheduling coordination. For my shop's cost structure, that was somewhere around 80 active members. Below that, the coordination overhead outweighed the incremental revenue. Your number depends on your cost structure and how much admin you're absorbing yourself. Run the model at 50 members, 100 members, and 150 members before you decide what launch looks like.
Enjoyed this article?
Get articles like this in your inbox every Monday. Free, no spam.
