Running HVAC and Plumbing Under One Roof: The Software and Ops Guide
A second trade smooths the seasonal revenue curve and doubles the number of ways your operation can get confused. Here is how to set up the platform, the P&L, and the phone so the plumbing side actually pays.
This page contains affiliate links. If you click through and sign up for a tool, we may earn a commission at no cost to you. Affiliate relationships do not influence our rankings. How we review.
Most mixed-trade shops did not plan the second trade. HVAC was slow in April, a plumber the owner knew was available, and eighteen months later the company sells both. The revenue curve got flatter, which was the point. What nobody warned you about is that every system in the building now has to answer a question it was never designed to answer: which trade is this?
That question shows up everywhere. The price book has to carry two sets of tasks with different margin structures. The dispatch board has to schedule a one-hour drain call and a seven-hour changeout on the same day without one starving the other. The P&L has to separate two businesses that share a building, a phone number, and an owner. And the person answering the phone has to triage a caller who says the water is not hot, which could be a plumbing call, or a tankless unit under a maintenance agreement, or a heat pump water heater your HVAC side installed.
This guide covers the parts that are specific to running both. Not generic field service advice with plumbing bolted on, but the four failure points that only exist in a two-trade shop, the platform choices that handle them well, and the cross-trade referral system that is the entire financial argument for owning both trades in the first place. Real prices, and honest notes on where the second trade earns its keep and where it is just overhead in a different uniform.
Key takeaways
- →The second trade exists to flatten the seasonal curve, not to add revenue. Plumbing is the base load, HVAC is the peaking plant, and the shoulder months are where the model proves itself.
- →Departmentalize the P&L before you shop for software. Per-trade gross margin, revenue per tech, and average ticket are the only way to catch one trade quietly subsidizing the other, which is the standard mixed-trade failure.
- →Revenue mix decides the platform: 70 percent or more HVAC means buy HVAC-first and run plumbing as a department; closer to 50/50 means buy trade-agnostic. Jobber ($49-$349) and Workiz (~$225-$495, VoIP included) are the clean mixed-trade picks; Service Fusion ($192-$489 flat, unlimited users) wins when office headcount is high.
- →Test skill tagging in the demo. Ask the vendor to show a plumbing job being blocked from an HVAC-only tech. If the answer is that the dispatcher will just know, the board fails the first day the dispatcher is out.
- →Split installation onto its own board. Mismatched job durations, not complexity, are what wreck mixed-trade scheduling, and separating project work from short service calls costs nothing.
- →Cross-trade referral is the whole financial argument. Eight techs passing two qualified observations a month at 40 percent conversion and a $1,200 ticket is roughly $92K a year with zero marketing spend - but only with a capture field, a photo, a 48-hour callback owner, and a spiff paid on conversion.
- →Add trade identification and duration accuracy to your CSR scorecard. Wrong-trade bookings are a mixed-trade-only tax, they concentrate in a few symptom descriptions, and nobody counts them.
- →Cross-train narrowly. Every tech primary in one trade plus a short tagged list of simple second-trade tasks beats a shop full of technicians who are mediocre at both.
Why the second trade pays, and what it quietly costs
The case for mixed trade is seasonality, and it is a good case. A residential HVAC shop lives on two spikes and two valleys. July and August pay for September and October. January pays for April and May. In the shoulder months a pure HVAC contractor carries the same payroll, the same trucks, and the same insurance against a fraction of peak revenue, which is why so many shops run a loss in the spring and call it seasonality instead of a problem. Plumbing does not have that shape. Drains clog, water heaters fail, and fixtures leak at roughly the same rate every month, with an emergency spike during the first hard freeze that happens to land in an HVAC valley.
Blending the two flattens the curve, and the flattening is worth more than the revenue it adds. Steady work means you stop laying off good technicians in the spring and rehiring worse ones in June. It means the shoulder months cover overhead instead of eating retained earnings. Mixed-trade shops typically land between one and fifteen million in revenue with four to twenty-five technicians split across both trades, and the ones that run it well treat plumbing as the base load and HVAC as the peaking plant.
The costs are real and most of them are administrative rather than operational. You carry two sets of licensing and continuing education, often with a master license requirement on the plumbing side that ties your ability to pull permits to one specific person. You carry two insurance profiles, because water damage claims and refrigerant work are underwritten differently. You stock two inventories that share almost nothing, which usually means either two truck stock lists or a warehouse trip that did not exist when you ran one trade. And you maintain two price books, two sets of training standards, and two definitions of what a good technician looks like.
The mistake is assuming those costs are small enough to absorb without measuring. They are not. The typical failure mode is not that the second trade loses money outright, it is that the second trade runs at a thin margin subsidized by the first one, and nobody notices for two years because the P&L reports one blended number. Everything in the next section exists to prevent that.
The four things that break when two trades share one platform
First, the price book collapses into a single list. Most field service platforms were built with one trade in mind and give you a flat catalog of tasks with categories bolted on. That works until you have four hundred HVAC tasks and three hundred plumbing tasks in the same search field, and a technician in a crawlspace scrolling past condenser fan motors to find a pressure reducing valve. Slow lookup means technicians stop using the price book and start quoting from memory, which is where flat rate pricing goes to die. If your platform cannot filter the catalog by trade at the technician tablet, expect the discipline to erode within a season.
Second, dispatch loses track of who can do what. A one-trade shop can assign by availability and proximity and be roughly right. A two-trade shop that does the same thing sends an HVAC technician to a sewer backup. The fix is skill tagging on both the technician and the job type, enforced at assignment rather than suggested, and it is the single feature most worth testing during a demo. Ask the vendor to show you a plumbing job being blocked from an HVAC-only technician. If the answer is that the dispatcher will just know, you are buying a board that fails on the first day your dispatcher is out sick.
Third, reporting rolls up and hides the truth. This is the expensive one. If revenue, labor, and materials are not tagged by trade at the job level, your gross margin is a blend, and a blend is useless. HVAC replacement work and plumbing service work have completely different margin structures, different average tickets, and different labor efficiency, so an average of the two describes a business that does not exist. Owners in this position routinely find, when they finally departmentalize, that one trade has been running several points below where they assumed and the other has been carrying it.
Fourth, the phone gets harder in a way nobody budgets for. A single-trade CSR learns a finite script. A mixed-trade CSR has to triage trade, urgency, and job duration on the same call, from a customer who describes symptoms rather than systems. No hot water is the classic, and it lands in either trade depending on equipment your CSR cannot see. Booking that wrong costs you a truck roll, a rescheduled customer, and a technician with a hole in the middle of the day.
Departmentalize on day one or you will never know which trade makes money
Departmentalized financials mean each trade carries its own revenue, its own direct labor, its own materials, and a fair allocation of shared overhead, so that each one produces its own gross margin and its own contribution to fixed cost. This is standard practice in well-run home service companies and close to universal among mixed-trade shops that grow past a few million. It is also the thing most owners postpone, because it requires allocation decisions that feel arbitrary in the moment.
Make them anyway, and make them simple. Direct labor and materials follow the job, which the software does for you once job types are tagged by trade. Shared overhead, meaning rent, insurance, office salaries, and software, gets allocated by a single stated driver such as revenue share or technician count, documented once so you are not relitigating it every month. An imperfect allocation applied consistently tells you far more than no allocation at all. You are looking for the trend line in each trade, not accounting precision.
Then watch four numbers per trade rather than for the company. Gross margin by trade, because that is the whole point. Revenue per technician by trade, because HVAC and plumbing technicians produce at genuinely different rates and comparing them against each other is meaningless. Average ticket by trade, since a plumbing service call in the three to five hundred dollar range and an HVAC replacement near nine thousand cannot share a benchmark. And billable hours per technician per day, which across the trades tends to sit around 5.7 of 8.8 paid hours with drive time consuming roughly 28 percent of the day, and which usually differs between your two departments in a way that tells you where the dispatch problem lives.
The reason to do this before you shop for software rather than after is that it changes what you are shopping for. Once you know you need per-trade P&L, job costing stops being a nice-to-have on the feature list and becomes the requirement that eliminates half the candidates. Most owners discover this in the opposite order, having already bought a platform that reports one number.
One warning about the allocation conversation. If the plumbing side is newer and smaller, it will look worse than it is during the ramp, because it absorbs overhead while it is still building density in the schedule. Give a new trade eighteen to twenty-four months before you judge it, and judge it on trend rather than on a single quarter. What you are watching for is gross margin improving as route density improves. If it is flat after two years, the problem is pricing or dispatch, not the ramp.
Which platform actually handles two trades
The honest starting point is that revenue mix decides more than feature lists do. If HVAC is seventy percent or more of your revenue and plumbing is a shoulder-season supplement, buy the platform that is best at HVAC and configure plumbing as a second department. If you are closer to a fifty-fifty split, buy the platform that is genuinely trade-agnostic, because the HVAC-first tools keep making plumbing feel like an afterthought at exactly the moments it matters.
Jobber is the cleanest trade-agnostic option at the smaller end. Core runs 49 dollars a month, Connect 149, and Grow 349, with per-technician pricing from there in the 50 to 250 range as the team grows. It was never built around a single trade, so job types, forms, and price book categories all take two trades without fighting you. The tradeoff is that HVAC-specific depth, particularly maintenance agreement handling and equipment history at the address, is thinner than in the HVAC-native platforms.
Workiz is the one to look at when the phone is the bottleneck, which in a mixed-trade shop it usually is. Lite runs around 225 a month, Standard around 295, and Ultimate around 495, priced per team, and the reason it matters here is that a VoIP phone system is included at every tier rather than sold as an add-on. Two trades means more triage on the phone, more call recording worth reviewing, and more value in having the call and the job in the same system. Workiz also handles multi-trade job types without special configuration.
Housecall Pro works and is popular, at 65 dollars for Basic with one user, 169 for Essentials, and roughly 450 for Max, but it is the most residential-HVAC-shaped of the group. If plumbing is a third of your revenue or less, that shape is fine and you get a genuinely excellent technician mobile experience. If plumbing is half the business, you will be working around the assumptions more often than you want to.
Service Fusion is the value answer once you have office staff, because pricing is per company rather than per user. Starter runs 192 a month, Plus 298, and Pro 489, all with unlimited users. Mixed-trade shops tend to carry more office headcount than single-trade shops of the same revenue, because two trades means more scheduling, more permitting, and more parts coordination, and per-seat pricing punishes exactly that. FieldPulse is the budget option in the two to ten technician range and handles multiple trades adequately, with pricing that scales by users.
ServiceTitan supports mixed trade properly and is the default at the top of this range, with per-technician pricing typically landing between 350 and 500 dollars and implementation commonly quoted between five and fifty thousand dollars. Its business unit structure is genuinely built for departmentalized reporting, which is the thing this guide keeps insisting on, and that is a real argument for it. The counter-argument is the familiar one: it punishes weak process rather than substituting for it, and a mixed-trade shop that has not yet built two clean price books will not survive the implementation. Build the process first, then decide whether you need the platform.
Whichever you pick, price the card processing separately. Payment processing at 2.6 to 3.5 percent is usually the largest single software cost in the building, and on three million dollars of card revenue that is 78,000 to 105,000 dollars a year, more than every subscription combined. Compare rates before you compare monthly plan prices.
Dispatch when job durations do not match
The scheduling problem in a mixed-trade shop is not complexity, it is mismatched duration. Plumbing service is mostly short calls, one to two hours, with high volume and a meaningful emergency component. HVAC service looks similar. HVAC installation does not: a changeout occupies a two-person crew for most of a day, and a day is not divisible. Put both on one board sorted by time and the long jobs either fragment the day or push short calls out to tomorrow, and tomorrow is when the customer calls somebody else.
Separate the boards. Installation gets its own schedule with its own crews and its own capacity planning, because it is project work. Service, both trades, shares a board where jobs are short and interchangeable enough that proximity and skill tags do the work. This one change fixes more mixed-trade scheduling pain than any software purchase, and it costs nothing.
Zone the service area, then respect the zones. Drive time is around 28 percent of the workday across the trades, roughly 18 to 20 percent in a tightly dispatched shop and 32 to 35 percent in a sprawling ad-hoc one, and a two-trade shop is structurally more prone to sprawl because two different job streams pull technicians in different directions all day. A 30-minute cap on drive time between stops and a habit of clustering maintenance visits recovers most of the gap without buying anything. Dedicated route optimization, for example Routific at 49 to 149 dollars per vehicle per month, is worth considering once you are past ten trucks and only if the dispatcher will actually hold the routes.
Be deliberate about cross-training, and be conservative. The instinct in a mixed-trade shop is to cross-train everybody for maximum flexibility, and it usually produces technicians who are mediocre at two trades instead of strong at one. The better pattern is depth by default with a narrow shared band: every technician is primary in one trade, plus a defined short list of simple second-trade tasks, such as a water heater swap or a straightforward fixture replacement, that a cross-trained technician can pick up when the schedule needs it. Tag those tasks explicitly in the price book so dispatch knows what can cross and what cannot.
Use the second trade to fill the first one valleys deliberately rather than accidentally. In the shoulder months, HVAC capacity is idle and plumbing demand is not. That is the moment to run a targeted campaign into your own customer database for water heater replacements, whole-home inspections, or fixture work, and to schedule it against the technicians who would otherwise be sitting. Shops that plan this in February for April get a flat revenue curve. Shops that notice in April get a slow April.
Cross-trade referral is the whole financial argument
Here is the part that decides whether owning two trades beats owning one. Every time a technician enters a home, they walk past the other trade equipment. The HVAC technician servicing a furnace in a basement is standing next to a fourteen-year-old water heater. The plumber replacing a kitchen faucet passes a condenser that has clearly been there since the previous owner. Nobody paid for that lead. The truck is already there, the customer already trusts you, and the diagnostic conversation is already open.
Almost no mixed-trade shop systematizes this, and the ones that do generate meaningful revenue from it. Consider a shop with eight technicians where each one passes two qualified second-trade observations a month. At a 40 percent conversion rate and a 1,200 dollar average converted ticket, that is roughly 7,700 dollars a month, or about 92,000 dollars a year, from work that required no marketing spend and no additional truck. Adjust the assumptions to your own numbers and the conclusion holds: this is the cheapest revenue available to a mixed-trade contractor, and it is sitting in homes you already visited this week.
Systematizing it takes four pieces. A capture mechanism, meaning a field on the job form that asks what the technician observed about the other trade, with a photo, so it is one tap rather than a phone call after hours. A photo standard, because a picture of a corroded water heater with a visible date label sells the follow-up call better than any script, and a tool like CompanyCam at 24 to 36 dollars per user per month makes that automatic rather than dependent on someone remembering. A follow-up owner in the office who calls every observation within 48 hours, because a lead nobody calls is not a lead. And a spiff paid on the converted job rather than on the observation, so you get qualified leads instead of volume.
Then measure it as a real channel. Observations logged per technician per month, conversion rate, and revenue per converted observation, reviewed monthly and posted where the field can see it. Technicians respond to a visible scoreboard far more than to a memo about cross-selling. If the numbers are near zero after a quarter, the problem is almost always the capture step being too slow, not the technicians being uninterested.
The same logic extends to your database as a whole. A mixed-trade shop knows two things about every customer instead of one, which makes segmentation better than a single-trade shop of the same size can manage: HVAC customers with no plumbing history, plumbing customers with aging equipment on the other side, agreement holders who have only ever bought one trade. Platform-native campaign tools handle the basics, and a dedicated database marketing tool such as Arch makes sense once the list is large enough that manual segmentation stops being practical. The second trade doubles the reasons you have to contact the same customer, and that is the real compounding advantage of the model.
Two trades hit the phone differently
Every shop misses calls. Shops in this size range typically miss 25 to 40 percent of inbound calls, concentrated after hours, during the lunch overlap, and during seasonal surges. A mixed-trade shop feels that more sharply for two reasons. The first is that plumbing emergencies skew heavily to nights and weekends, because pipes burst and water heaters fail on their own schedule, and a homeowner with water on the floor does not leave a voicemail. The second is that your call mix is more varied, so the CSR has more to get right per call and the triage takes longer.
Fix the conversion side before the coverage side, because it is free. Booking rate on answered calls varies enormously, with residential benchmarks often quoted in the 65 to 75 percent range, top performers above 85 percent, and underperformers below 50. Moving a shop from 50 to 70 percent on 400 monthly calls is 80 additional booked jobs, which at a 450 dollar average service ticket is about 36,000 dollars a month from calls you already paid to generate. Record calls, score them weekly against a simple rubric, and coach one behavior at a time.
For a mixed-trade shop, add two items to that rubric that single-trade shops do not need. Trade identification, meaning the CSR confirms which trade the call actually is before booking rather than guessing from the symptom, with a short decision tree for the ambiguous ones such as no hot water. And duration accuracy, meaning the job type booked carries the right time block, because a plumbing call booked into an HVAC slot wastes capacity in both directions. Track wrong-trade bookings as a number. Most shops that start counting find it is higher than they guessed and that it is concentrated in a handful of symptom descriptions a better script fixes in a week.
Then cover the hours you cannot staff. An AI receptionist that answers overflow and after-hours calls runs 49 to 500 dollars a month depending on volume and integration depth. At the lighter end, Rosie and GoodCall both sit in the 49 to 199 range and are appropriate for smaller shops that mainly need after-hours capture. Numa at roughly 249 to 379 a month and Avoca in the 300 to 800 range are built to sit on top of a real dispatch board rather than just take a message, which matters more in a two-trade shop because the message has to route to the right trade. Whatever you choose, test it on the ambiguous calls before you trust it: call it yourself, say the water is not hot, and see what it does.
Compare that against staffing honestly. An in-house CSR is a 55,000 to 72,000 dollar loaded annual cost and covers roughly one shift, five days. AI coverage handles nights, weekends, and the surge minute when four calls arrive at once, at a fraction of that. The right answer at this size is usually both, with humans on the primary line during business hours because they book better and triage two trades better, and AI behind them so nothing rings out. What you should not do is put AI on the primary line to avoid hiring a CSR, because your highest-value calls are replacement calls and a good CSR out-books an AI on exactly those.
What the stack costs and a 90-day order of operations
A realistic mixed-trade stack for a shop running eight to twelve technicians across both trades: a platform at 300 to 500 dollars a month, AI phone coverage at 250 to 400, QuickBooks Online at 90 to 200 depending on tier, photo documentation at roughly 200 to 400 for the field team, reviews at 75 to 400, and quoting or diagnostics tooling at 300 to 600. That is roughly 1,200 to 2,500 dollars a month, comfortably under one and a half percent of revenue for a shop doing three million. The enterprise version built on ServiceTitan runs 4,000 to 8,000 a month plus implementation, and can be justified at the top of this range specifically because of business unit reporting, but not by a shop that has not built its two price books yet.
Days 1 through 30, separate the two businesses on paper. Tag every job type by trade. Split the price book into two filtered catalogs. Set your overhead allocation driver and write it down. Produce one month of per-trade gross margin, revenue per technician, and average ticket, even if you have to do it in a spreadsheet from exports. Buy nothing this month. Most owners find at least one number materially different from what they assumed, and which trade it is varies more than you would expect.
Days 31 through 60, fix the free operational problems. Split installation onto its own board. Add skill tags to technicians and job types and enforce them at assignment. Zone the service area and cap drive time between stops at 30 minutes. Start weekly call scoring with trade identification and duration accuracy on the rubric. Stand up the cross-trade observation field on the job form with a photo requirement, and put one person in the office in charge of calling every observation within 48 hours. These changes cost almost nothing and typically move the numbers more than a platform migration does.
Days 61 through 90, make the purchases the first sixty days justified. You now know your revenue mix, which decides trade-agnostic versus HVAC-first. You know your seat count including office staff, which decides per-user versus flat. You know your after-hours call volume, which sizes the AI receptionist. Get three-year total costs in writing including implementation, growth, and processing rates. If you migrate platforms, do it in a shoulder month, never in July or January, and run parallel for six weeks.
Then re-check the same per-trade numbers 90 days later. Gross margin by trade, revenue per technician by trade, wrong-trade bookings, and cross-trade observations converted. If the second trade margin has not moved and the observation count is still near zero, the software was never the constraint, and the next purchase will not fix it either.
Tools mentioned in this guide
Related guides
Frequently asked questions
Q.What is the best software for a contractor that does both HVAC and plumbing?
It depends on your revenue mix more than on any feature list. If HVAC is 70 percent or more of revenue, buy the platform that is strongest at HVAC and run plumbing as a second department - Housecall Pro ($65-$450) or, at the top end, ServiceTitan. If the split is closer to 50/50, buy trade-agnostic: Jobber ($49 Core, $149 Connect, $349 Grow) handles two trades without fighting you, and Workiz (roughly $225-$495 per team) is the pick when the phone is your bottleneck, since VoIP is included at every tier. Service Fusion at $192-$489 flat with unlimited users is the value answer for shops carrying several office staff, which mixed-trade shops usually do. Whichever you shortlist, test two things in the demo: filtering the price book by trade at the technician tablet, and blocking a plumbing job from an HVAC-only technician at assignment.
Q.Should I track HVAC and plumbing as separate departments?
Yes, and it is the single highest-value setup decision in a mixed-trade shop. The two trades have different margin structures, different average tickets, and different labor efficiency, so a blended gross margin describes a business that does not exist. Tag every job type by trade so labor and materials follow the job automatically, then allocate shared overhead by one stated driver such as revenue share or technician count and document it once. Watch four numbers per trade rather than for the company: gross margin, revenue per technician, average ticket, and billable hours per technician per day. Owners who finally do this routinely find one trade running several points below what they assumed while the other carries it. Give a newer second trade eighteen to twenty-four months before judging it, and judge the trend rather than a quarter.
Q.How do I get my HVAC techs to sell plumbing work?
Stop asking them to sell it and ask them to observe it. Every technician walks past the other trade equipment on every call, and the useful ask is one tap on the job form: what did you see, plus a photo. Four pieces make it work - a capture field in the mobile app so it takes seconds rather than a call after hours, a photo standard (CompanyCam at $24-$36 per user per month makes this automatic), one person in the office who calls every observation within 48 hours, and a spiff paid on the converted job rather than on the observation so you get qualified leads instead of volume. Then measure observations per tech per month, conversion rate, and revenue per conversion, and post it where the field can see it. Eight techs at two qualified observations a month, 40 percent conversion, and a $1,200 average ticket is about $92,000 a year with no marketing spend.
Q.How should a mixed-trade shop schedule two trades on one board?
Do not put them all on one board. The problem is mismatched duration, not complexity: plumbing service and HVAC service are both short, interchangeable calls, but an HVAC changeout occupies a crew for most of a day and a day does not divide. Give installation its own schedule with its own crews and capacity planning, and let both trades share a service board where proximity and skill tags do the assignment. Add skill tags on technicians and job types and enforce them at assignment rather than by dispatcher memory. Zone the service area and cap drive time between stops at 30 minutes, since drive time runs about 28 percent of the day and a two-trade shop is structurally more prone to sprawl. Dedicated routing such as Routific at $49-$149 per vehicle per month only pays once you are past about ten trucks and only if the dispatcher holds the routes.
Q.Is adding plumbing to an HVAC company actually profitable?
It is profitable when you run it as a real department and roughly break-even when you run it as an overflow valve. The value is the flattened revenue curve: plumbing demand is steady month to month with an emergency spike during the first hard freeze, which lands in an HVAC valley, so the shoulder months start covering overhead instead of eating retained earnings and you stop laying off good technicians every spring. The costs are mostly administrative - separate licensing with a master license requirement that ties permitting to a specific person, a different insurance profile, a second inventory that shares almost nothing with the first, and a second price book and training standard. None of those are fatal, but they are only visible if you departmentalize the P&L. The common failure is not the second trade losing money outright, it is running thin for two years while a blended report hides it.
Q.Should I cross-train my HVAC technicians in plumbing?
Narrowly, not broadly. Full cross-training sounds like flexibility and usually produces technicians who are mediocre at two trades instead of strong at one, which shows up in close rate and callback rate before it shows up anywhere else. The pattern that works is depth by default with a defined shared band: every technician is primary in one trade, plus a short explicit list of simple second-trade tasks - a water heater swap, a straightforward fixture replacement - that a cross-trained technician can take when the schedule needs it. Tag those tasks in the price book so dispatch knows exactly what can cross and what cannot, rather than leaving it to judgment on a busy morning. Use the shared band deliberately in the shoulder months, when HVAC capacity is idle and plumbing demand is not, and plan that campaign in February rather than noticing in April.