I Built Two HVAC Websites. Here’s What Worked (And What Didn’t)

I’m Kayla, and I’ve built two HVAC websites in the last year. I did both on weeknights with too much coffee and a very loud space heater by my feet. It wasn’t fancy. But it was real. And it brought in calls.

You know what? I learned a lot the messy way. So I’ll share the good, the bad, and the “why did I do that?” parts. With real examples. If you're looking for a concise checklist before you start, these 8 tips for building your HVAC website line up with a lot of what I learned the hard way.


The Setup: Tools I Actually Used

I tried a few stacks, but this one hit the sweet spot for small HVAC shops:

  • WordPress with the Astra theme and Elementor (fast enough, easy to tweak)
  • Kinsta for hosting (good support, quick backups)
  • Cloudflare for DNS and CDN
  • WP Rocket for speed
  • Rank Math for SEO and schema (the little code that helps Google)
  • Gravity Forms with hCaptcha (fewer spam bots)
  • CallRail for call tracking
  • Housecall Pro widget for online booking
  • NiceJob for reviews
  • Tawk.to for live chat
  • Google Tag Manager and GA4 for tracking
  • Google Workspace for email

I also used my iPhone 13 for photos. Daytime shots. No filters. Real vans and real techs. People like real.
If you’re still weighing your CMS options, take a quick look at these award-winning website builders to see real-world demos and feature breakdowns. If you want to see how these same tools stack up in another trade, here’s the full breakdown of when I built real electrician websites—spoiler: pop-up chats still drive leads.


Real Build #1: Frost & Flame HVAC (Tulsa, OK)

This shop was brand new. Family-owned. The owner hated computers but loved his truck. Fair.

What I built:

  • Home page with one big button: “Call Now. We Answer.”
  • Service pages: AC Repair, Furnace Repair, Heat Pump Install, Ductless Mini-Splits
  • “Emergency” page with a red bar that only shows after 7 PM
  • “Service Areas” pages: Tulsa, Broken Arrow, Jenks, Bixby
  • Contact page with click-to-call and a simple form
  • Seasonal special: “$89 Tune-Up Before First Freeze”
  • A landing page for heat pump rebates with a short quiz

How it looked in real life:

  • Photos of techs next to branded vans (we shot them in a parking lot)
  • A 30-second “We show up” video, set to mute
  • Before/after of a coil clean (gross, but it works)

What I did behind the scenes:

  • CallRail tracked calls from the site vs Google Business Profile
  • Rank Math added “LocalBusiness” and “HVAC” schema
  • Tawk.to ran from 6 AM to 8 PM; after hours showed a form
  • Housecall Pro booking embedded on the “Book Now” page

Results after 60 days:

  • 112 tracked calls from the site (38% more than their old Facebook-only setup)
  • “AC Repair Tulsa” page hit page 2, then page 1 after I added FAQs and a map
  • Form submissions: 41 (most asked about heat pumps)
  • Tune-up special: 27 booked from the landing page

What surprised me:

  • The “Emergency” page got more clicks than the home page after 6 PM
  • A short “We wear booties inside” line got comments from homeowners
  • People loved the coil clean before/after. Kind of funny, right?

What I messed up at first:

  • I put a big autoplay video on the home page. Speed tanked. I swapped it for a still image and a tiny play button. PageSpeed went from 61 to 92 on mobile.

Real Build #2: Mesa Cool Air (Mesa, AZ)

This company serves the East Valley. Hot summers. Busy phones. Spanish-speaking customers too.

What I built:

  • Home page with two clear buttons: “Call” and “Book Online”
  • Spanish copies for three key pages (we kept it short and simple)
  • “Financing” page with GreenSky info and a plain payment calculator
  • “Emergency Service in 90 Minutes” badge, only on mobile
  • “AC Smells Sweet?” blog post series (we kept it light, with fixes and when to call)

Tech parts:

  • Elementor again, but I used fewer add-ons to keep load time low
  • NiceJob pulled reviews onto the page
  • A sticky call bar on mobile (big, blue, hard to miss)
  • GA4 events on buttons like Call, Book, and Chat

Numbers after 45 days:

  • 76 tracked phone calls from the site
  • 19 bookings through the widget
  • Mobile bounce rate down 21% after I made the “Call” button sticky

Tiny thing that helped a lot:

  • A micro-banner at the top: “We text before we arrive.” Customers loved that.

Tiny thing that caused trouble:

  • Live chat after hours. People wrote in Spanish. The bot replied in English. I added a simple Spanish greeting and a handoff note. Better.

What I Loved

  • Fast wins: a clear call button, short forms, and real photos.
  • Local pages with maps. People want to see their town.
  • Simple financing page. No fluff. Just “How much” and “How it works.”
  • Reviews on the page. Fresh ones. It built trust fast.
  • Many of these wins translate directly to general contractors too; I spell that out in my review of the best building construction websites.

What Bugged Me

  • Staff missing calls. The site did its job, but no one answered mid-day. We added overflow to a call service. That helped.
  • Stock photos. They look fake. Use your own photos, even if they’re plain.
  • Fancy effects. Sliders and parallax slowed the site. Not worth it.
  • Overstuffed galleries remind me of my trials with green-industry sites—here’s what I learned when I built three landscaping websites.

Real Copy That Pulled Calls

  • “Same-day AC repair. We answer the phone.”
  • “Text updates. No guessing where your tech is.”
  • “Upfront pricing. No surprise fees.”
  • “Booties on. Drop cloths down. We leave it clean.”

Short. Human. Clear.


How I Built the Pages (Step by Step, but simple)

  • Home: Promise, phone number, 3 big services, reviews, map, footer with NAP
  • Service pages: What’s wrong, what we check, what it costs, a FAQ, one form
  • Areas: One page per city with local landmarks and a map pin
  • Offers: One clear offer per page, no clutter
  • Contact: Click-to-call, short form, hours, license number

That last part matters. Put your license number in the footer. People feel safe when they see it.


Cost, Time, And What It Really Took

  • Domain: $12 per year (Namecheap)
  • Hosting: $35 per month (Kinsta)
  • Plugins and tools: about $30–$80 per month (depends on what you use)
  • Call tracking: $45 per month (CallRail plan I used)
  • My time: 25–40 hours for a full build with photos and all pages

Ongoing work:

  • Add 1–2 blog posts per month (common problems, seasonal tips)
  • Check broken forms, update offers, swap photos in spring and fall
  • Speed check quarterly (plugins update and break stuff sometimes)

What I’d Do Differently Next Time

  • Start with call routing and hours. The site should match how you answer.
  • Add Spanish right away if your area needs it.
  • Build one offer page per season and set the rest to “noindex.” Keep it clean.
  • Shoot one day of real photos. Techs, vans, thermostats, attic shots. Gold.

Quick Wins You Can Steal

  • Put “We answer 7 AM–9 PM” right by the phone number.
  • Add a service-area map on the home page. Pins help.
  • Use a short “Get a fast quote” form with 5 fields max.
  • Add a short warranty line on each service page.
  • Turn on a sticky call bar on mobile.
    For inspiration, scroll through ServiceTitan’s roundup of high-performing HVAC websites to see how other contractors turn those same quick wins into full-fledged lead machines.
  • Short forms convert better—check the data from when I built my cleaning business website six different ways.
  • Even outside the trades,