The Kennesaw HVAC contractor who doubled service revenue in 12 months.
A $1.6M HVAC shop on Cobb Parkway. One marketing rebuild. By month 12, service-side revenue had crossed $3.2M — without adding a single truck.
An eight-truck shop in Kennesaw, stuck at $1.6M for three years.
Here’s the thing. The owner — a 22-year HVAC tech who’d grown his shop from a single van to eight trucks — called us last October sitting on a brutal plateau. Three straight years of revenue parked between $1.5M and $1.7M. Eight technicians staying busy enough, but never busy enough to justify a ninth. And a marketing spend that bounced between Angi, Networx, a Yelp ad rep, and a guy in Marietta who built him a WordPress site in 2021 and disappeared.
His install-side revenue was fine. New systems, new construction referrals, builder relationships in West Cobb and Acworth — that part was holding. The problem was the service side. Maintenance contracts, diagnostic calls, repairs, IAQ add-ons. That whole side of the business was running on accident — whatever Google sent him plus whatever the lead platforms recycled out at $78 per shared call.
Real talk: a service-side business that runs on accident caps your whole company. You can’t scale install crews if the service phone doesn’t ring on its own. Service is the compounding asset of every HVAC company that ever crossed $5M. He’d built a shop, not an asset.
74% of his service calls came from three places: word of mouth, a beat-up Google Business Profile, and Angi. None of those scale. He needed an owned service-call engine before adding truck nine made sense.
The good news? Service revenue is the easiest HVAC revenue to double — IF you stop treating marketing like a billboard and start treating it like a sales channel. That’s what we rebuilt over the next 12 months.
What changed in the Kennesaw HVAC service P&L
Same eight trucks. Same techs. Different marketing engine wired to a different sales process.
| What you get | October (before) | September (after) |
|---|---|---|
| Service revenue | $1.6M run rate | $3.2M run rate |
| Avg ticket size | $612 | $1,847 |
| Maintenance plans active | 184 households | 619 households |
| Cost per service call booked | $78 (Angi shared) | $23 (owned funnel) |
| Inbound calls per week | 12–18 | 41–58 |
| Five-star Google reviews | 87 total | 312 total |
A normal Tuesday — except now those trucks are dispatched from an inbound queue, not bidding wars.
“I stopped buying leads. I started buying a phone that rings on its own. Same checkbook, completely different math by month four.”— The Kennesaw HVAC owner, quoted in our Q3 review
You’ve probably noticed the pattern. Every HVAC owner stuck below $2M is stuck in the same place — buying calls one at a time and never building anything that compounds. Every HVAC owner who’s broken through $5M did one specific thing first: they built an owned service-call engine that produces inbound calls whether they spend or not. Same playbook, run by different operators.
The Kennesaw rebuild wasn’t magic. It was three engines wired together — and a fourth element nobody talks about: a sales process that turned a $612 diagnostic into a $1,847 ticket without making the homeowner feel sold. We’ll get to that.
Four levers. Pulled in the right order.
Every dollar of that $1.6M-to-$3.2M jump traces back to one of four levers. Skip one and the math collapses. Pull all four and you get compounding service-side growth.
What we actually rebuilt in 90 days.
None of these were exotic. The mistake most HVAC contractors make is pulling one lever and waiting. The compounding only kicks in when all four fire together.
Service-page SEO built around emergencies, not vanity terms.
Most HVAC sites rank for “HVAC Kennesaw.” Almost nobody types that. The money keywords are emergency-shaped: “AC not blowing cold Kennesaw,” “furnace short cycling Acworth,” “AC making banging noise Cobb County.” We mapped 80+ of these and built service pages for each — the kind of content our SEO team builds for every HVAC client. By month 5 he ranked top-3 for 47 of them. Most of those pages convert at 8–11% because the buyer’s already in panic mode.
Google LSAs targeted to ZIP-level emergency keywords.
Local Service Ads — not Google Search ads — owning the top of the SERP for every “AC repair near me” query inside a 14-mile radius. Pay-per-lead, exclusive, no bidding war. $36 per qualified lead versus $78 from Angi.
Review velocity tied to every service call.
Automated text-to-review the second a tech closes a ticket. He went from 87 lifetime reviews to 312 in nine months. That alone moved his map-pack ranking past three older competitors.
A maintenance plan funnel that converts diagnostics into recurring revenue.
This is the lever that doubled the average ticket from $612 to $1,847. Every diagnostic call ended with a structured maintenance plan offer — $19/month, two annual tune-ups, priority dispatch, no diagnostic fee. He went from 184 to 619 active households. That’s $141K of recurring revenue that didn’t exist a year earlier, plus a service base that calls him first for every repair.
The maintenance-plan conversation — scripted, repeatable, and the single biggest revenue lever in the rebuild.
Three phases, twelve months, one compounding engine.
Audit and rebuild the foundation
Full site rebuild around 80+ emergency-shaped service pages. Google Business Profile overhaul. Schema + local citations. LSA account stood up. Review-collection workflow installed inside his dispatch software.
Turn on the funnel
LSAs go live across Kennesaw, Acworth, Marietta, and West Cobb. Maintenance-plan script rolled out to all eight techs. First wave of organic rankings starts producing inbound. Cost-per-call drops from $78 to $41.
Compound
Organic rankings cement. Review count crosses 300. Owned funnel produces 73% of all service calls. Maintenance plan base triples. Service revenue hits a $3.2M run rate by September — and crucially, would keep producing even if every ad got turned off tomorrow.
Month four was the inflection point.
Months one through three felt slow — site rebuild, page production, GBP work. Nothing on the P&L. Then month four, the LSAs went live and the maintenance script went out to the techs the same week. He went from 14 service calls a week to 31 in 30 days. By month six his dispatcher was telling techs to skip lunch. By month nine he hired two more techs — but never bought another Angi lead. The chart below is what his weekly inbound call volume actually looked like.
Weekly inbound calls — owned funnel only (no shared leads).
Compounding is the entire game. The first three months produced almost nothing. Months four through twelve did all the work.
Behind the scenes — every service truck became a content set, every install became 6+ indexed assets.
Six things every HVAC owner should do before adding truck #9.
Whether you work with us, our competitors, or do it in-house — these six moves are the order of operations that worked in Kennesaw and will work in any North Atlanta HVAC service market.
Map 80+ emergency-shaped keywords.
“AC not cooling Kennesaw” beats “HVAC contractor.” Panic buyers convert 4x higher than research buyers.
Turn on Google LSAs before Search ads.
LSAs are pay-per-lead and exclusive. Search ads compete with Angi and Networx for the same click.
Automate review collection at ticket-close.
A tech who manually asks gets 1 review per 12 calls. Automation gets 1 per 3.
Build a maintenance plan offer that’s hard to say no to.
Free diagnostics, priority dispatch, locked annual tune-ups. Aim for 35% attach rate on diagnostic calls.
Train every tech on a 9-minute maintenance-plan script.
The script — not the offer — is what tripled the active-plan base from 184 to 619.
Don’t add truck #9 until inbound covers 70% of dispatch.
Otherwise you bought yourself a payroll problem, not a growth problem.
The kind of install that used to be one-and-done — now turns into a 10-year maintenance relationship.
What HVAC owners ask after reading this case study.
LSAs and maintenance plans move the P&L inside 60–90 days because they hit existing demand and existing customers. The organic SEO side starts producing real inbound around month four and compounds from there. Anyone promising P&L impact in week one is selling you ads with extra steps.
It works better for smaller shops. The bigger the operation, the longer the inertia. A 2-truck shop can move from $300K to $750K on the same playbook in roughly the same window — and arguably faster because the maintenance-plan funnel is the entire growth lever at that size.
Not month one. Keep them running at reduced budget for the first 90 days while the owned funnel ramps. Most HVAC clients cut shared-lead spend by 70–80% by month six and shut it off entirely by month twelve. Going cold turkey day one is the most common reason this strategy fails.
No. One HVAC contractor per city, full stop. We will not run marketing for two HVAC shops in Kennesaw or two in Marietta at the same time. That’s the whole reason category dominance is possible — and it’s a hard line, not a negotiation.
For a $1M–$3M HVAC shop, working range is $4,800–$8,500/month combined — agency fee, LSA budget, content production. Cost-per-call drops from roughly $78 (Angi shared) to $23–$36 (owned funnel) by month four. The math pays for itself before the contract is up.
Want a 30-minute call where we map this playbook to your HVAC shop?
We’ll look at your current site, your GBP, your top three competitors in your service area, and tell you exactly which of the four levers is leaking the most revenue right now. It’s free, it takes 30 minutes, and we do a few of these a week with HVAC contractors across the North Atlanta metro. If you’d rather start with the deep dive, check our home-services playbook.
More HVAC case studies and playbooks.
The Cumming HVAC tech who sold 47 maintenance plans in his first 90 days.
One tech, one script, one quarter — and a recurring-revenue base that completely changed his service P&L.
How an Alpharetta HVAC tech became his region’s #1 brand name.
From unknown service truck to top-of-mind HVAC brand across three ZIPs in 14 months.
The Milton HVAC contractor who cracked the premium market in 18 months.
Why a $12K-ticket positioning shift quadrupled gross margin in the Milton/Crabapple corridor.
