HVAC vs Plumbing vs Electrical: How Financial Patterns Differ by Trade
A healthy plumbing business looks nothing like a healthy HVAC business financially. Here's how margins, seasonality, and business value differ across the five major home services trades.
On this page
A healthy plumbing business and a healthy HVAC business look nothing alike financially. Same revenue, same number of trucks, same owner working 60-hour weeks. Completely different cost structures, seasonal patterns, and risk profiles.
Most financial advice for contractors treats "home services" as one category. Your bookkeeper compares you to "other small businesses." Your accountant benchmarks you against "construction companies." The generic dashboards lump every trade together into meaningless averages.
The result? A plumber with a 55% gross margin thinks they're doing fine (they're not; they should be at 60%+). An HVAC company with a 52% gross margin thinks something is wrong (it's not; that's healthy for their trade). A general contractor panicking about a 40% gross margin is actually outperforming their peers. (If you're not sure whether your margins are healthy, here's how to know if you're charging enough.)
Here's how the five major home services trades actually compare.
The Margin Gap: Why "Other Contractors" Is a Meaningless Benchmark
The single biggest mistake in contractor financial analysis is comparing across trades. A plumber and a general contractor operate in fundamentally different economic realities, even when they're working on the same house.
Gross Margin by Trade
| Trade | Healthy Gross Margin | Struggling | Why the Difference |
|---|---|---|---|
| Plumbing | 60-62% | Below 50% | High labor skill, lower material cost relative to ticket |
| HVAC | 50-55% | Below 40% | Equipment-heavy installs compress margins |
| Electrical | 50-55% | Below 40% | Similar to HVAC; code compliance adds value |
| Roofing | 40-50% | Below 30% | Materials are a larger share of total job cost |
| General Contracting | 35-45% | Below 25% | Material-heavy, subcontractor costs eat into gross |
Net Margin by Trade
| Trade | Healthy Net Margin | Struggling | Industry Leaders |
|---|---|---|---|
| Plumbing | 20-35% | 2-8% | 30%+ with strong service mix |
| HVAC | 12-20% | 5-8% | 20%+ with maintenance contracts |
| Electrical | 15-20% | 5-10% | 20%+ with commercial mix |
| Roofing | 10-20% | 3-8% | 18%+ with insurance claim expertise |
| General Contracting | 8-15% | 2-5% | 15%+ with tight project management |
Look at the spread. A plumber netting 20% is at the low end of "healthy." An HVAC company netting 20% is an industry leader. A general contractor netting 15% is exceptional.
Why plumbers have the highest margins: The value is almost entirely in the skill, not the materials. A $400 service call might involve $30 in parts. HVAC and electrical involve significant equipment costs that dilute margins. A $12,000 HVAC replacement might include $5,000-7,000 in equipment with thin margins on the pass-through. General contractors face the toughest environment because subcontractors and materials each take their own cut.
Seasonal Patterns: From Stable to Chaotic
Seasonality is where trades diverge most dramatically. Understanding your trade's pattern is the difference between "something is wrong" and "this is November."
HVAC: The Dual-Peak Trade
| Month | Demand Level | What's Driving It |
|---|---|---|
| Jan-Feb | HIGH | Furnace emergencies, heating repairs |
| Mar-Apr | MODERATE (danger zone) | Spring tune-ups; revenue dips between seasons |
| May-Jun | RISING | AC installations ramp up |
| Jul-Aug | PEAK | Emergency AC repairs, highest demand |
| Sep-Oct | MODERATE (danger zone) | Heating prep; another revenue dip |
| Nov-Dec | HIGH | Furnace season begins |
The danger zones: March-April and September-October are shoulder months where HVAC companies without maintenance contracts feel the pain. Companies with strong recurring revenue barely notice.
Plumbing: The Most Stable Trade
| Month | Demand Level | What's Driving It |
|---|---|---|
| Jan-Feb | HIGH | Frozen/burst pipes, water heater failures |
| Mar-Apr | MODERATE-HIGH | Spring thaw, sump pump season |
| May-Jun | MODERATE | Steady service work |
| Jul-Aug | MODERATE | Sewer line issues, water heater demand |
| Sep-Oct | MODERATE | Pre-winter prep |
| Nov-Dec | RISING | Winterization, holiday drain clogs |
Emergency work doesn't wait for a season. The baseline never drops below "moderate."
Electrical: The Most Predictable Trade
| Month | Demand Level | What's Driving It |
|---|---|---|
| Jan-Feb | STEADY | Baseline service work |
| Mar-Apr | SLIGHT RISE | Home improvement season, panel upgrades |
| May-Jun | MODERATE RISE | Renovation projects, outdoor electrical |
| Jul-Aug | MODERATE RISE | Generator installs, EV charger installs |
| Sep-Oct | STEADY | Continued project work |
| Nov-Dec | SLIGHT RISE | Holiday lighting, outlet additions |
Electrical demand is driven by code requirements, safety, and technology adoption (EV chargers, solar, smart home) rather than weather emergencies. A 15% revenue drop for an electrician is almost never "just seasonal." It's a real signal.
General Contracting: The Most Seasonal Trade
| Month | Demand Level | What's Driving It |
|---|---|---|
| Jan-Feb | LOW | Weather limits outdoor work |
| Mar-Apr | RISING | Renovation season begins |
| May-Jun | HIGH | Prime building season |
| Jul-Aug | PEAK | Highest activity, full crews |
| Sep-Oct | MODERATE-HIGH | Fall push before winter |
| Nov-Dec | LOW | 35% drop between Oct and Nov |
Roofing: The Most Weather-Event-Driven Trade
| Month | Demand Level | What's Driving It |
|---|---|---|
| Jan-Feb | LOW | Too cold/wet; emergency tarps only |
| Mar-Apr | RISING | Post-winter inspections, insurance claims |
| May-Jun | PEAK | Prime roofing season |
| Jul-Aug | PEAK | Hail season drives massive demand spikes |
| Sep-Oct | HIGH | Fall push before winter |
| Nov-Dec | LOW-MODERATE | Slows in north; south stays active |
The hailstorm effect: A single major hailstorm can create 6+ months of backlog overnight. No other trade is this event-driven.
Seasonal Volatility Summary
| Trade | Volatility | Peak-to-Trough Swing | Predictability |
|---|---|---|---|
| Electrical | Low | 10-15% | Highest |
| Plumbing | Low-Moderate | 15-25% | High |
| HVAC | Moderate-High | 25-40% | Moderate |
| Roofing | High | 30-50%+ | Low |
| General Contracting | Highest | 35-50% | Moderate |
Revenue Mix: Same Revenue, Different Business
Two plumbing companies can both do $3 million annually and have completely different financial profiles.
Average Ticket by Trade
| Trade | Service/Repair | Install/Replace | Large Project |
|---|---|---|---|
| Plumbing | $250-500 | $2,000-8,000 | $8,000-15,000 (repipe) |
| HVAC | $150-400 | $5,000-15,000 | $15,000-25,000 |
| Electrical | $200-500 | $1,000-5,000 | $5,000-15,000 |
| Roofing | $300-800 | $5,000-25,000 | $25,000+ |
| General Contracting | N/A | $2,000-20,000 | $20,000-100,000+ |
The Revenue Mix Effect (Two $3M Plumbers)
| Metric | Company A (70% Service) | Company B (50/50 Service/Install) |
|---|---|---|
| Gross Margin | 62% | 52% |
| Average Ticket | $380 | $1,200 |
| Jobs Per Month | ~660 | ~210 |
| Trucks Needed | 8-10 | 4-6 |
| Cash Flow | Steady weekly | Lumpy (large deposits) |
| Seasonal Sensitivity | Low | Moderate |
Same revenue. Completely different operations and risk profiles.
The HVAC Recurring Revenue Benchmark
| Maintenance Revenue % | What It Means |
|---|---|
| 0-10% | Reactive only; feast-or-famine cash flow |
| 10-20% | Some stability, still weather-dependent |
| 25-35% | Industry leader; predictable base, smoothed seasonality |
| 35%+ | Exceptional; near-immunity to seasonal swings |
The Business Value Multiplier
If you ever plan to sell your business, the valuation multiples across trades are dramatically different. And one factor dominates everything else.
Valuation by Trade
| Trade | Typical EBITDA Multiple | What Drives the Premium |
|---|---|---|
| HVAC (with maintenance contracts) | 5-8x EBITDA | Recurring revenue, predictable cash flow |
| HVAC (without maintenance contracts) | 2-4x EBITDA | Seasonal, weather-dependent, no recurring base |
| Plumbing | 2.9-5x EBITDA | Steady demand, limited recurring revenue |
| Electrical | 3-5x EBITDA | Predictable, growing (EV/solar), code-driven |
| Roofing | 2-4x EBITDA | Event-driven, hard to predict |
| General Contracting | 2-3.5x EBITDA | Project-based, seasonal, owner-dependent |
The Maintenance Contract Premium
HVAC companies with maintenance contracts sell for 5-8x EBITDA. Without them: 2-4x. On a business earning $500,000 in EBITDA, the difference is staggering. (For a full breakdown of what drives these multiples and how to position your business at the top of the range, see What Your Business Is Actually Worth.)
| Scenario | Multiple | Business Value |
|---|---|---|
| HVAC, no maintenance contracts | 2-4x | $1,000,000-2,000,000 |
| HVAC, strong maintenance program | 5-8x | $2,500,000-4,000,000 |
| Difference | $1,500,000-2,000,000 |
Maintenance contracts are worth $1.5-2 million in business value on a $500K EBITDA company. Buyers pay the premium because recurring revenue survives an ownership transition. The customers are locked in. The cash flow is forecastable. Confidence commands a premium.
Recurring Revenue Opportunity by Trade
| Trade | Recurring Revenue Opportunity | Valuation Impact |
|---|---|---|
| HVAC | Maintenance contracts | 2-3x multiple increase |
| Plumbing | Annual inspections, flush programs | 0.5-1x increase |
| Electrical | Safety inspections, surge protection plans | 0.5-1x increase |
| Roofing | Annual inspections, gutter maintenance | 0.5-1x increase |
| GC | Property manager retainers | 0.5-1.5x increase |
What "Something Is Wrong" Looks Like in Each Trade
Because each trade has different norms, the warning signs are different too.
| Signal | Plumbing | HVAC | Electrical | Roofing | GC |
|---|---|---|---|---|---|
| Revenue down 20% MoM | Investigate immediately | Normal in shoulder months | Investigate immediately | Normal Nov-Jan | Normal in Nov |
| Gross margin below 50% | Problem (should be 60%+) | OK if install-heavy | OK if install-heavy | Normal | Normal (35-45% is healthy) |
| Average ticket declining | Losing install work | Losing replacements to competitors | Losing commercial work | More repairs vs. replacements | Taking smaller projects |
| AR aging over 45 days | Unusual (plumbing is mostly COD) | Common for installs | Common for commercial | Normal (insurance claims) | Very common (long terms) |
| Cash below 1 month expenses | Risky but survivable | Dangerous (shoulder months) | Moderate risk | Very dangerous | Critical |
Key Differentiators by Trade
| Trade | Primary Competitive Advantage | Financial Indicator to Watch |
|---|---|---|
| Plumbing | Emergency response time | Service call volume trends |
| HVAC | Maintenance contracts | Recurring revenue as % of total |
| Electrical | Code compliance, safety | Commercial vs. residential mix |
| Roofing | Insurance claim expertise, storm response | AR aging on insurance jobs |
| General Contracting | Project management, timeline reliability | Customer concentration risk |
Why Generic Financial Advice Fails Contractors
| Generic Advice | Reality for Plumbers | Reality for HVAC | Reality for GCs |
|---|---|---|---|
| "Gross margin should be 50%+" | Too low. Should be 60%+. | Correct. | Too high. 35-45% is healthy. |
| "Revenue is down, something is wrong" | Probably true (stable trade) | Depends on the month | Depends on the month |
| "Your AR is too high" | Probably true (mostly COD) | Depends on install mix | Maybe not (30-60 day terms are normal) |
| "3 months cash reserve" | Reasonable | Should be higher | Minimum. 4-5 months is safer. |
The difference between generic and trade-specific analysis:
| Scenario | Generic Analysis | Trade-Specific Analysis |
|---|---|---|
| HVAC revenue drops 28% in March | "Revenue declined. Investigate." | "Normal shoulder-month dip. Your maintenance revenue held at $18K (22% of total). Leaders are at 25-35%." |
| Plumber's gross margin is 54% | "Margins look healthy." | "You're 6-8 points below benchmark. At your revenue, that's $45K-60K in annual profit left on the table." |
| Roofer has $80K in AR over 30 days | "Collections need attention." | "30-45 day AR is normal on insurance jobs. But $30K over 60 days needs adjuster follow-up." |
| GC nets 10% in August | "Decent margin." | "You're outperforming the GC average during peak season. Maintain this through November and you're top-tier." |
Stop comparing yourself to "other contractors." Start comparing yourself to the best operators in your trade.
Streett Reports delivers trade-specific insights, not generic small business advice. Your weekly report uses benchmarks for YOUR trade, seasonal patterns for YOUR market, and anomaly detection calibrated to what "normal" looks like for plumbers, HVAC techs, electricians, roofers, or general contractors specifically.
Your first report is free, no credit card required.
See a sample for your trade: Plumbing | HVAC | Electrical | Roofing | General Contracting
See what this looks like for YOUR business
Connect your QuickBooks in 30 seconds. Your first report is free.
Get Your Free Report →