It’s a slow July. Your phone is quiet, and when you search “AC repair near me” from your own parking lot, the top of the page belongs to competitors’ ads and Map Pack listings. Meanwhile your site ranks for “what is SEER.” That’s an SEO keyword strategy built around traffic instead of jobs.
By the end of this guide you’ll have a prioritized keyword map for your HVAC company that ties each search to a page, a service area, and a booked job. You’ll need access to your Google Business Profile, Google Search Console, your service and pricing list, and about two hours.
Step 1: Decide Which Jobs You Actually Want More Of
Start from margin, not search volume. List every service you sell and rank it by profit per job and by what your crew can handle without wrecking the schedule. A typical list includes full system replacement, repair calls, tune-up memberships, commercial rooftop units, and ductless installs. Replacement and install usually carry the most profit per job, while memberships feed steady work and future replacements.
Next, decide your split between emergency and planned work. Emergency searches (no heat, no cooling) convert fast and reward pages built around a phone call. Planned work, like replacement quotes, involves longer research, so those searchers read more, compare more, and need more proof before they dial.
Then write down what you won’t chase. These searches bring traffic and almost never bring jobs:
- DIY repair instructions
- Parts purchases
- HVAC career and job searches
- HVAC school and certification queries
Finally, write down your real service radius by city and county. Be honest about where your trucks actually dispatch. A keyword for a town 50 minutes outside your area is ranking effort spent on calls you’ll decline or lose money on.
Keep this as a one-page sheet. Every later decision gets checked against it. If you want to see how this plays out for the trade, our HVAC marketing hub covers the broader picture.
Step 2: Pull Your Seed Keywords From Real Customer Language
Your best keyword research is already sitting in your own records. Pull from four places:
- Call recordings or call notes. Listen for the first sentence a caller says.
- Booking form entries and the free-text boxes where customers describe the problem.
- Google Business Profile search terms, found in the profile’s performance data.
- Search Console queries, filtered to the last 12 months.
What you’re collecting is homeowner phrasing, not trade phrasing. People say “AC blowing warm air,” “furnace won’t ignite,” “AC unit frozen,” and “no heat tonight.” They also use terms like “heat pump installation” when they’re ready to buy. Put both kinds in one list.
Once you have a first pass, expand it with Google itself. Type each phrase into the search bar and note the autocomplete suggestions. Open the People Also Ask box and record those questions. Scroll to the related searches at the bottom of the results page and add anything that matches a job you want from Step 1.
The mistake to avoid: building the list only from trade vocabulary. “HVAC contractor” is how you describe yourself. Plenty of customers type “air conditioning repair” or “furnace repair” and never use the word HVAC at all. If your site only uses your own jargon, you’re invisible to them.
Dump everything into a spreadsheet, one keyword per row, with no filtering yet. A list of 80 to 150 raw phrases is normal for a single-market company.
Step 3: Sort Keywords by What the Searcher Is About to Do
Search intent is the action a person is about to take when they type a query. Add a column to your spreadsheet called Intent and tag every row with one of four buckets:
- Emergency: “AC repair near me,” “emergency furnace repair,” “no heat tonight.”
- Replacement and install: “new AC cost,” “heat pump installation.”
- Maintenance: “AC tune-up,” “furnace service plan.”
- Research: “how long does a furnace last,” “what is SEER2.”
The bucket decides what kind of page you build. Emergency and replacement terms go to service pages, because those searchers want a company, not an article. Research terms go to blog posts, and those posts exist to feed readers up to the matching service page. A post on furnace lifespan should end with a path to your furnace replacement page.
Now pull out a separate local track. Phrases with “near me” or a city plus a service tend to trigger the Map Pack, the block of three map listings above the regular results. By Clicks Geek’s benchmarks, the Map Pack captures roughly 42% of local clicks. Those keywords are won partly through your Google Business Profile (Step 6), not just through page copy, so they deserve their own tag.
Add a second column called Track with two values: Local or Organic. You don’t need a paid tool for any of this. A spreadsheet with Keyword, Intent, and Track columns is enough to see where your list is lopsided. If 70% of your rows are research terms, you’ve found why your traffic isn’t turning into calls.
Step 4: Check Volume, Difficulty, and Seasonal Timing
Google Keyword Planner is free with a Google Ads account and gives you volume ranges for most phrases. If you already pay for another keyword tool, use it, but don’t buy one just for this. Treat every volume figure as an estimate. Tools disagree with each other, and local volumes are often rounded or lumped together.
Then open Google Trends and compare your core terms over several years. Cooling searches climb during summer heat waves, and heating searches jump with the first cold snaps. The practical lesson is timing: a page that starts ranking in the middle of a heat wave is already late. Pages should be live and indexed well before the season, so plan your publishing calendar backward from it. Clicks Geek’s ramp benchmark is 30 to 90 days, and that’s before a new page earns real positions.
When you decide what to prioritize, favor phrases you can win in months. A specific city plus a specific service, like “furnace repair” in a mid-sized town you actually serve, is a far better target than a broad term where national brands and aggregator directories hold the top spots. You are not going to outrank them on “AC repair,” and you don’t need to.
One exception to the volume rule: don’t throw out tiny numbers when intent is high. A keyword showing only a handful of monthly searches, but signaling someone wants a replacement quote, can be worth more than a broad term with thousands of idle readers. One booked system replacement outweighs a lot of curiosity clicks.
Add Volume, Season, and Difficulty (low, medium, high, judged by who ranks now) columns, then sort.
Step 5: Map Every Keyword to One Page
The rule is simple: one primary keyword per page, and no two pages targeting the same search. When two pages compete for the same query, you get keyword cannibalization. Google has to pick between them, often picks wrong, and neither page ranks as well as one strong page would.
Build the structure like this. Create one page per core service: AC repair, furnace repair, AC installation, heat pump, duct work, and maintenance plans. Add one page per city you truly serve, a service-area page that tells searchers you work in their town. Add a column called Target Page to your spreadsheet and assign every Emergency, Replacement, and Maintenance keyword to exactly one URL, existing or planned.
Be careful with the city pages. The common shortcut is copying one page and swapping the town name, and it produces thin, duplicate content that doesn’t earn rankings or trust. Each city page needs details only you can supply:
- Neighborhoods and areas you serve in that town
- Local permit requirements or utility rebate context (verify these with the local authority or utility before publishing, and date them, since rebate and tax credit rules change often)
- Real examples of jobs you’ve done there, in your own words and with your own photos
If you can’t write 300 honest words of local detail for a city, you probably shouldn’t have a page for it yet.
Research-bucket keywords go to blog posts, each one mapped to a single question and linking up to the matching service page. “How long does a furnace last” supports the furnace replacement page, not a new competing page. When the sheet is done, sort by Target Page and look for duplicates. Any URL with two primary keywords needs one of them reassigned.
Step 6: Tie Keywords to Your Google Business Profile and Calls
Your keyword map has to show up in your Google Business Profile too, especially for the local track. Set your primary category to match your top-revenue service from Step 1, then add secondary categories and service listings that mirror the pages in your map. If heat pump installation is a priority job, it should appear as a listed service, not hide inside a generic description.
Next, make every mapped page ready to convert. By Clicks Geek benchmarks, 40% to 70% of local leads arrive by phone, so the page should be built for a call:
- A click-to-call button above the fold, visible on mobile without scrolling
- Hours stated plainly, or 24/7 availability if you offer it
- A short form as the backup, not the main event
Add call tracking so you can tie keywords to booked jobs. Use dynamic number insertion on the website, so the number shown changes based on how the visitor arrived. In the Google Business Profile, you can use a tracking number as the primary only if your real business number stays listed as a secondary number, so your listing information stays consistent. Then log which calls became booked jobs, not just which calls came in.
Finally, put the trust factors searchers look for where they can see them: your license number, proof of insurance, manufacturer certifications, and your review count and rating. A homeowner picking between three similar listings at 9 p.m. in a heat wave chooses the one that looks safest to let in the house.
Step 7: Track Rankings by Booked Jobs and Adjust Quarterly
Rankings alone are what the burned-by-an-agency story is made of. Measure calls, form fills, and booked jobs by page. Use Search Console for queries and impressions, and GA4 for conversions. Then add the one thing neither tool can see: which of those calls turned into revenue, from your call tracking and your scheduling notes.
Set expectations before you start checking. Local SEO typically takes months, and Clicks Geek’s benchmark of $7 to $15 per lead applies at 12 months or more, so don’t judge the work at week six. Early on you’re watching for movement: impressions rising, new queries appearing, pages getting indexed.
Then run a review every quarter, using the same spreadsheet:
- Promote page-two keywords. Phrases sitting just off the first page are the cheapest wins. Strengthen the page, add internal links, and refresh the local detail.
- Rewrite pages with impressions but no clicks. The page is being shown and ignored, which usually means a weak title or a mismatch with intent.
- Prune pages that never earn calls. If a page produces no calls after a fair run, merge it into a stronger one or remove it.
While organic builds, emergency demand doesn’t wait. Pairing SEO with paid search can cover those urgent searches in the meantime. Clicks Geek’s home services benchmark for Google Ads is $18 to $35 per lead, so you can compare it against your organic numbers and decide how long to run both.
Check the Map Once, Then Check It Again Before Peak Season
Before you call this finished, run one test: every service and every city should have exactly one page and one primary keyword. If two rows share a URL, or a keyword has no home, fix that first. Then put a date on the calendar to reopen the map ahead of the next heating or cooling season, since that’s when pages need to be live and ranking, not just written.
Tired of spending money on marketing that doesn’t produce real revenue? We build lead systems that turn traffic into qualified leads and measurable sales growth. If you want to see what this would look like for your business, we’ll walk you through how it works and break down what’s realistic in your market, starting from your keyword map and our HVAC playbook.