2026-08-21

Schema Markup for HVAC Contractors — A Practical Guide

What JSON-LD actually does, the three types worth having, how to check whether you have any, and the mistakes that get markup ignored or penalised.


Short answer: three types cover almost everything — LocalBusiness, Service, and FAQPage. Schema is structured data that states in machine-readable form what your prose only implies: that you are an HVAC contractor, in these towns, offering these services. Search engines and AI systems both consume it.

It is unglamorous, invisible to visitors, and one of the few genuine technical wins still available to a contractor site.

What it actually is

A block of JSON in your page’s HTML that says, in a format machines parse without guessing:

"@type": "LocalBusiness"
"name": "Your Company"
"telephone": "..."
"areaServed": ["Destin", "Miramar Beach", ...]

Without it, a system reads your prose and infers. Usually it infers correctly. Sometimes it decides you are a repair shop when you also do installs, or misses three of your eight service areas.

Schema removes the guess.

The three types worth having

LocalBusiness — on your homepage and contact page. Who you are, where, hours, phone, service areas. This is the foundational one.

Service — on each service page. What the service is, who provides it, where it is available. One per service page.

FAQPage — on any page with a question-and-answer section. This is the one most likely to produce a visible result, because FAQ content is heavily used in featured snippets and AI answers.

Anything beyond these three is usually diminishing returns for a contractor.

How to check whether you have any

Two minutes:

  1. Open your homepage, right-click, View Page Source — the raw HTML, not the inspector.
  2. Search the page for application/ld+json.
  3. If nothing matches, you have no schema.

Then run the page through Google’s Rich Results Test, which will tell you not just whether markup exists but whether it validates.

Do this on a service page too, not just the homepage. Plenty of sites have schema on one page and nothing on the other forty.

What it does and does not do

It does make you unambiguous to search engines and AI systems. When an assistant is deciding whether to name an HVAC contractor in a given town, a page that declares both facts explicitly is easier to trust than one where both must be inferred.

It does enable rich results — the star ratings, FAQ dropdowns, and business details that make a listing take more space.

It does not rank you by itself. Schema is not a ranking factor in the way a link is. It improves how well you are understood, which affects what you are eligible for.

Anyone selling schema as a ranking hack is overselling it. Anyone telling you to skip it is wrong in the other direction.

The mistakes that matter

Marking up things that are not on the page. Schema must describe visible content. Declaring FAQPage markup for questions that do not appear on the page is a guidelines violation and can result in manual action.

Fake review markup. Self-serving review schema — marking up testimonials on your own site to try to get stars in results — is explicitly against Google’s guidelines. Reviews should live on your Google Business Profile.

Wrong area served. Listing towns you do not serve produces calls you turn down.

Invalid JSON. One trailing comma and the entire block is ignored silently. Nothing warns you. This is why the Rich Results Test matters.

Set-and-forget. Schema declaring hours you changed two years ago is worse than none, because it is confidently wrong.

Where AI search comes in

Schema matters more now than it did three years ago for a specific reason.

A traditional crawler had time to read your whole page. An AI system assembling an answer is deciding fast, from many candidates, whether it can confidently say “this is an HVAC contractor in Destin that does emergency work.” Explicit structured data makes that call easy.

Worth pairing with the more fundamental check: can a crawler see your content at all? If your pages only render after JavaScript executes — common with page builders — a meaningful share of AI crawlers see an empty frame, and schema inside that frame is invisible too.

View source and search for your phone number. If it is not in the raw HTML, fix that before worrying about markup.

What we do on client sites

For transparency, the standard set:

  • LocalBusiness on the homepage, with full NAP, geo coordinates, and every service area named
  • Service on each service page, tied to the areas served
  • FAQPage on any page with real Q&A
  • Organization sitewide, so no page lacks basic identity

This site does the same — every page carries at least Organization, and the pages with FAQ sections carry FAQPage. You can verify that yourself with View Source, which is rather the point.

If you do one thing

Check whether you have any. Two minutes, View Source, search for application/ld+json.

A surprising number of contractor sites built in the last three years have none at all — and adding LocalBusiness to a homepage is an afternoon’s work for someone who knows what they are doing.


Sources: Google Search Central structured data documentation and guidelines; Google Rich Results Test; schema.org LocalBusiness, Service and FAQPage specifications.

Want this kind of visibility for your company?

One call to look at your site, your market, and whether we are a fit.

Book a call