HVAC

HVAC Contractor Local-Pack Turnaround

From page two to top-three local pack in 105 days

The account was stuck on page two for high-value heating and cooling terms while paid search costs climbed every month. LocalCatalyst rebuilt the local SEO foundation and moved the business into top-three map-pack positions, reducing paid search reliance by 21%.

Charlotte Metro, NC105 days

Challenge

This HVAC contractor had been in business for 14 years and served the entire Charlotte metro area, including Concord, Huntersville, Gastonia, and Rock Hill. The company had a strong offline reputation, a 4.7-star Google rating with over 300 reviews, and a fleet of 12 service trucks. None of that mattered in local search. For the terms that generated the most revenue — 'AC repair Charlotte,' 'furnace installation near me,' 'emergency HVAC service' — the business sat on page two.

The owner had invested in a website redesign 18 months earlier, but the new site prioritized aesthetics over search performance. The homepage was a single hero image with a phone number and a 'request service' button. Service pages existed but were thin: 150 to 200 words each, no schema markup, no internal links to related content, and no geo-modified variations. The site had 11 total pages. Competitors ranking above them had 40 to 80 pages of service and location content.

The Google Business Profile had not been updated in over a year. The business description was a two-sentence generic summary. Photos were limited to the company logo and three truck wraps uploaded during the initial setup. Posts had never been used. The Q&A section had two unanswered questions from potential customers, one of them asking whether the company serviced Huntersville — a city that accounted for 15% of their revenue.

Technical issues compounded the content gaps. The site loaded in 4.8 seconds on mobile due to uncompressed images and render-blocking JavaScript. There was no XML sitemap. The robots.txt file blocked Googlebot from crawling the service pages directory — a leftover from the staging environment that was never corrected after launch. Core Web Vitals scores were in the 'poor' range across all three metrics.

The owner had been increasing Google Ads spend to compensate, reaching $5,400/month in peak season. Even with that budget, cost per lead had risen from $38 to $67 over the previous year as competitors bid more aggressively on the same terms. The business was caught in a paid search treadmill: spending more each month to maintain the same lead volume.

Strategy

LocalCatalyst structured the engagement in three phases: technical repair (weeks one and two), content buildout (weeks three through eight), and authority reinforcement (weeks nine through fifteen). The goal was to build a local SEO foundation strong enough to replace a significant portion of the paid search budget.

Technical repair came first because the existing site was actively preventing Google from crawling and indexing the content that did exist. The robots.txt fix alone was expected to unlock indexation of six pages that had been invisible to search engines for 18 months. Speed optimization would address the Core Web Vitals failures that were suppressing the site's eligibility for top positions in Google's local results.

The content phase was the most labor-intensive. LocalCatalyst planned to build the site from 11 pages to 38 pages, covering every major service line (AC repair, heating installation, duct cleaning, indoor air quality, emergency service) across the five primary cities in the Charlotte metro. Each page would include unique local context, service-specific schema markup, seasonal relevance hooks, and conversion elements tied to the local phone number.

The authority phase focused on two levers: GBP optimization and citation building. The GBP profile would be rebuilt from scratch with a complete description, fresh photos, weekly posts, answered Q&A entries, and updated service attributes. Citation building would establish consistent NAP data across 60+ directories, with a focus on home services verticals (Angi, HomeAdvisor, BBB, local chamber directories) where HVAC-specific relevance signals carry extra weight.

Throughout all three phases, LocalCatalyst deployed geo-grid tracking to monitor map-pack positions at the ZIP-code level across all five service cities. This provided week-over-week visibility data that showed exactly where gains were materializing and where additional work was needed.

Execution

  • Fixed robots.txt to unblock service page crawling; created and submitted XML sitemap to Google Search Console.
  • Optimized site speed from 4.8s to 1.9s mobile load time through image compression, script deferral, and CDN configuration.
  • Built 27 net-new service-area pages targeting city-plus-service combinations with unique local content and schema markup.
  • Rebuilt the GBP profile with a complete description, 24 new photos, weekly Google Posts, and answered Q&A entries.
  • Established consistent citations across 63 directories with a focus on home services and local business verticals.
  • Implemented internal linking architecture connecting seasonal, repair, and installation content into topical clusters.

The technical fixes went live in the first 10 days. The robots.txt correction triggered Google to re-crawl and index the previously blocked service pages within 48 hours. Speed optimization required compressing 14 hero images, deferring three render-blocking scripts, and enabling a CDN through the existing hosting provider. Mobile load time dropped from 4.8 seconds to 1.9 seconds, and all three Core Web Vitals metrics moved into the 'good' range. The improvement was immediate and measurable: Google Search Console showed a 22% increase in crawled pages within the first week.

Content production ran from week three through week eight. LocalCatalyst's agent fleet produced four to five pages per week, each targeting a specific city-plus-service combination. The pages for emergency services were prioritized because they carry the highest commercial intent and the shortest conversion cycle. 'Emergency AC repair Concord NC' was live by day 18 and reached a top-five position by day 32. 'Furnace repair Huntersville' followed a similar trajectory.

The GBP rebuild happened in parallel with content production. The profile received a complete overhaul: a 750-character description loaded with service and location terms, 24 new photos (service trucks, technicians at work, equipment installations, and the office exterior), and the first-ever Google Post from the business. The team also answered the two pending Q&A questions and proactively added six more FAQ entries covering common customer questions about service areas, pricing transparency, and emergency availability.

Citation building ran from week five through week twelve. The team submitted the business to 63 directories, prioritizing platforms where HVAC contractors receive the strongest relevance signals: Angi, HomeAdvisor, BBB, Yelp, the Charlotte Regional Business Alliance, and 12 city-specific directories for Concord, Huntersville, Gastonia, Rock Hill, and Mooresville. NAP consistency was verified across all listings by week ten.

By week nine, the geo-grid data showed clear movement. The business had entered the top-three map pack for 'AC repair' in three of the five target cities. By week twelve, emergency HVAC terms were ranking in the top three across all five cities. The final three weeks of the engagement focused on reinforcing these positions through continued Google Posts, seasonal content updates (the engagement overlapped with the transition from heating to cooling season), and internal link refinements.

Results

After 105 days, the business had moved from page two to a stable top-three local-pack position for its core service terms across the Charlotte metro. The shift fundamentally changed the economics of the business's lead generation.

Top-three map-pack visibility increased by 44% across the tracked HVAC repair and replacement keyword sets. The tracking covered 30 keyword-city combinations across the five service areas. Before the engagement, 8 of 30 held a top-three position. After 105 days, 22 of 30 held top-three, with 9 holding the number-one slot. The gains were strongest in Concord and Huntersville, where competitors had thinner content and weaker citation profiles.

Organic form leads increased by 29%. The team tracked form submissions from local service pages and GBP-assisted journeys (where the user found the business through a map-pack listing and then visited the website to submit a request). The 29% increase represented 14 additional qualified leads per month, each with an average job value between $180 (repair) and $4,200 (full system installation).

Paid search share decreased by 21%. The owner reduced Google Ads spend from $5,400/month to $4,266/month while total lead volume actually increased. Cost per lead dropped from $67 back to $41, approaching the $38 level from two years prior. The savings of $1,134/month were redirected into a managed SEO retainer to maintain and extend the organic gains.

The GBP profile saw a dramatic increase in engagement. Direction requests increased by 37%, phone calls from the profile increased by 26%, and website clicks from GBP increased by 41%. Photo views rose from an average of 180/month to over 1,400/month after the photo refresh, indicating that the updated visual content was significantly increasing user engagement with the listing.

Perhaps the most significant outcome was the seasonal resilience. In previous years, the transition from heating to cooling season caused a lead volume dip as the business had to rebuild paid search campaigns for different keywords. This year, the organic foundation carried lead volume through the transition without any dip, because the service pages covered both heating and cooling terms year-round.

Top-3 Map Visibility
+44%
From 8 of 30 keyword-city combinations to 22 of 30 in top-three positions.
Organic Form Leads
+29%
14 additional qualified leads per month from local service pages and GBP journeys.
Paid Search Share
-21%
Reduced ad spend by $1,134/month while increasing total lead volume.

Key Takeaways

  • Technical SEO issues can silently destroy local visibility. A single robots.txt misconfiguration kept six service pages out of Google's index for 18 months. Always audit technical foundations before investing in content.
  • Site speed is a local ranking factor with real consequences. Moving from 4.8s to 1.9s mobile load time was not cosmetic — it directly improved Core Web Vitals scores and unlocked eligibility for top local positions.
  • Content volume matters in competitive verticals. Competitors had 40-80 pages; this site had 11. Building to 38 pages with unique local context closed the content gap and gave Google enough signal to rank the business appropriately.
  • GBP engagement is earned through active management. Photos, posts, Q&A answers, and updated descriptions are not optional extras — they are ranking signals. A stale profile is a ranking liability.
  • Organic SEO creates seasonal resilience that paid search cannot. Service pages covering both heating and cooling terms provided year-round visibility, eliminating the costly lead-volume dips during seasonal transitions.

We are no longer forced to buy every lead at peak-season CPC prices. For the first time in three years, we went through the heating-to-cooling transition without a lead drought.

Owner - Charlotte HVAC Contractor

Related Case Studies

Build your next win

We can map your visibility baseline and prioritize the moves that generate leads fastest.

Start With an SEO Audit