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,