How Well Web Marketing helped a Bay Area HVAC company get leads for far less than the market rate and win back search after a spam-link attack. In the Bay Area, HVAC search leads typically cost $200–250. Our Google Ads search campaigns delivered leads at $138 at their most efficient, Local Services Ads at $77, and our water heater call campaign at $34. In the first year of SEO and GEO, Domain Rating grew from 13 to 48, top-3 keywords from 4 to 73, and AI citations from 0 to 158.
Key takeaways
- A Bay Area HVAC and heating company hired us in 2024 for Google Ads and Local Services Ads. When we added SEO in August 2025, its website was under a spam-link attack: links tied to prohibited substances, the kind of signal that makes Google treat a site as unsafe.
- Against a typical $200–250 per HVAC lead in the Bay Area, our paid campaigns brought leads in at $34 to $138: $34 for water heater calls, $77 through Local Services Ads and in San Jose search, and $138 across search campaigns at their best.
- From August 2025, our SEO and GEO program added 120 indexed pages, 50 new guides and case studies and 270+ backlinks.
- Within a year Domain Rating grew from 13 to 48, top-3 keywords from 4 to 73 and AI citations from 0 to 158.
On this page
At a glance
| Client | A Bay Area HVAC and heating company (name withheld for confidentiality) |
| Industry | Residential and commercial HVAC, heat pumps, water heaters, solar |
| Location | San Francisco Bay Area and Santa Cruz County, California |
| Company | Established, licensed California HVAC contractor |
| Our scope | Website redevelopment, Google Ads, Local Services Ads, SEO and GEO, local and programmatic SEO, content, link building, lead tracking |
| Team | PPC specialist, content writer, SEO specialist, web developer |
| Tools | WordPress (website and custom SEO plugin), Ahrefs, Google Search Console, Google Ads, Google Keyword Planner, Local Services Ads, Claude, Well Web Content Engine |
| Period | 2024 – October 2026. Paid ads from 2024; SEO and GEO program from August 2025 |
| Average ad spend | About $7,000 a month (December 2024 – September 2026) |
Key terms used in this case study
More terms are explained in our plain-English marketing glossary.
- GEO (generative engine optimization) is the practice of making a website easy for AI assistants such as ChatGPT, Perplexity and Google’s AI Overviews to find, understand and quote. It builds on SEO: clear answers, structured data and consistent facts about the business.
- Domain Rating (DR) is an Ahrefs score from 0 to 100 that shows the relative strength of a site’s backlink profile.
- Referring domains are the separate websites that link to a site. Ten links from one site count as one referring domain.
- Disavow means telling Google to ignore specific spam links, using the Disavow Links tool in Search Console.
- CPL (cost per lead) is ad spend divided by the number of leads. Here a lead is a tracked phone call or form submission.
- LSA (Local Services Ads) are Google’s pay-per-lead ads for local service businesses, shown above regular search ads.
- AI citation is an AI-generated answer that names or links to the site, as counted by Ahrefs.
Starting point
Paid search (2024)
The client came to us in 2024 with one goal: more calls from Google Ads and Local Services Ads.
Organic search (July 2025)
When the SEO and GEO program started, the site had five problems:
- Low visibility. 51 organic clicks a month (Google Search Console) and 4 keywords in the top 3.
- Weak authority after a spam-link attack. Competitors had pointed spam links at the site from pages about prohibited substances. Links like these can make Google treat a site as unsafe and push it down or out of results. Domain Rating was 13, with 75 referring domains and 375 backlinks.
- No AI presence. ChatGPT and Google’s AI features cited the company zero times.
- Rebate information that goes stale. Bay Area incentives (SVCE, SVP, CPAU, PCE, SJCE, BayREN, TECH Clean California) change every few months, and a wrong number costs trust.
- No internal linking. Service pages, city pages and blog posts rarely pointed to each other.
Our brief from August 2025 was to make the site rank locally, get cited by AI search and turn visitors into calls, while keeping paid lead costs under control.
What we did
We ran four workstreams: paid acquisition, content and local SEO, authority, and lead tracking.
1. Paid acquisition
- Google Ads launch. In 2024 we took over the client’s ad account. In September 2024 we launched a dedicated water heater call campaign.
- February 2025 rebuild. We rebuilt the water heater call campaign in the first week of February 2025. Over the next 35 weeks it averaged $34 per lead.
- Weekly management. As Bay Area HVAC clicks climbed in 2026, we reviewed every campaign weekly and moved budget to the cities and keywords that produced calls. More on this approach in our guide to spending your first ad budget without wasting it.
- Heating-season structure. For the 2026 heating season we built a new account structure from a 340-keyword study, scoring each keyword by volume, competition, CPC and search trend. The result was 2 campaigns and 17 ad groups with custom ad copy, informed by a review of 5 competitors’ ads and launched in three stages across the Bay Area, San Mateo and Santa Cruz County. We offer this setup as a Google Ads launch pack.
- Ad landing pages. We built 25 noindex landing pages for ads, separate from the SEO pages. They include 6 furnace repair and installation pages for the Bay Area, San Mateo and Santa Cruz County, with LocalBusiness schema, problem cards and a $49.95 diagnostic offer.
- Local Services Ads. We registered the company in June 2024. Since then we have tuned bids, budgets and services month by month, for example switching to target-CPL bidding and turning off duct cleaning, which the company doesn’t offer. Over the campaign LSA leads averaged $77, dropping to $55 in the best month.
2. Content and local SEO
- Website rebuild. We redeveloped the client’s existing WordPress website, which became the base for every page that followed.
- Case-study format. In June 2024 we designed the case-study structure and page template. From 2024 to July 2025 we published 16 pieces, mostly install case studies, before we began tracking SEO metrics.
- Technical foundation. We built a custom WordPress SEO plugin, fixed indexing errors in Search Console and added a contact form. These are the site health checks that actually change rankings.
- Programmatic local SEO. By March 2026 we had launched city-by-service pages for HVAC installation, AC, heat pumps and water heaters. In September 2026 we added furnace installation pages. The site now has 110 local landing pages: 5 service hubs plus 105 city pages (21 cities × 5 services). In July 2026 we rewrote the FAQ blocks on every city page. This is the core of our local SEO service.
- Automated rebate hub. The client’s rebate hub matches each homeowner with the right program by ZIP code. We automated it with a workflow automation: a bot checks local, utility and state rebate sources, collects every program into one Google Sheet, and the site reads that sheet, so homeowners always see current rebates. Tracking by hand which rebates have ended or changed would be close to impossible. Under the hub sit 9 more rebate pages for SVCE and SVP cities, 10 rebate pages in total. Together with the local pages, that makes 120 indexed pages.
- Internal linking. Every article links to 4–6 pages with descriptive anchors: one pillar page, one or two service or city pages, and two or three related posts.
- Content system. A brand glossary is the single source of truth for company facts, approved cities, utility territories and rebate programs. Two templates bake in our SEO + LLM checklist: a direct answer in the first 100 words, a TL;DR, tables, FAQ and JSON-LD. It runs on our Content Engine.
- Publishing. Since 2024 we have published 66 new pieces (26 case studies and 40 guides) and refreshed 4 more. 50 of them came during the SEO program (August 2025 – September 2026), about four a month. Examples include multi-zone heat pump installs with large rebates, commercial water heater replacements and crane-lifted rooftop units on multifamily buildings.
- Fact-checking. In six rewrites of older articles we fixed 20+ factual errors. The biggest concerned the federal 25C energy efficient home improvement credit, which only covers property placed in service by 31 December 2025.
- Core page upgrades (spring 2026). We expanded the furnace cost guide to about 3,500 words with 10 FAQs, rebuilt the ductwork cost guide with an interactive calculator, and added an AC installation cost guide.
3. Authority and negative SEO recovery
When we started SEO in August 2025, competitors had been pointing spam links at the site to drag its rankings and reputation down. The links came from pages about prohibited substances, a signal that can make Google treat a site as unsafe. Negative SEO like this is not rare among US home service businesses. The fix is the same every time: clean the link profile, keep watching it and build real authority on top.
- Link building. From August 2025 to August 2026 we built 270+ backlinks without spam, the main driver of Domain Rating growth. Each link was tied to a target keyword and landing page: about 80% pointed to inner pages and 20% to the homepage. Anchors came from Search Console, Ahrefs and Keyword Planner data, focusing on keywords in positions 5–20 with real impressions.
- Competitor benchmarking. We tracked 17 competitors with DR 9–66. In May 2026 the site had about 320 referring domains excluding spam (345 in Ahrefs) against the local market leader’s 781 (DR 42 vs 57), so we grew with relevant links rather than volume.
- Negative SEO defence. The spam links kept coming during the program. From May to September 2026 we checked new links every week and disavowed 527 spam domains in 15 batches: 219 by the end of August and 308 more in September. In July 2026 a technical error on the client’s side, on hosting it managed itself, pulled Domain Rating down from 48 to 45. Even so, Domain Rating ended the period more than three times higher than at the start. All referring-domain figures in this case study exclude the disavowed domains.
4. Lead tracking and reporting
- Every week we reconciled ad calls, LSA leads, form submissions and the client’s own call log, so calls that Google missed still counted. We set up this kind of tracking as part of our analytics and dashboard setup.
- The client got a weekly ads report and a monthly SEO report.
How we got 158 AI citations in 5 steps
- Fix the entity. We used one brand name, one licence number and one address on every page and in every schema block, so AI models connect every mention to the same company.
- Answer first. Every guide opens with a direct answer in the first 100 words and a short TL;DR. In our experience, these are the parts AI Overviews and chat assistants quote most often.
- Add FAQ blocks. We wrote FAQs in the words homeowners actually use and placed them on every article and all 110 local pages.
- Keep facts current. The rebate hub updates automatically from a regularly refreshed Google Sheet, and old articles are rewritten when programs or tax credits change, because AI assistants repeat what they find.
- Build trust signals. 270+ relevant backlinks and weekly spam cleanup gave the site the authority to be chosen as a source. More on the method in our guide on how to get cited in AI answers.
We didn’t write a single page just for AI. We made every page answer one homeowner question clearly, kept every rebate and price current, and earned links from sites that matter. When ChatGPT or Google’s AI looks for a trustworthy Bay Area HVAC source, it finds the clearest and most up-to-date one, and that became our client.
Serhii Yelbaiev, SEO lead, Well Web Marketing
Results
SEO and authority
Within its first year, the program multiplied the site’s authority, top rankings and organic clicks several times over. All values are peaks, with the month they were reached; the program started in August 2025.

| Metric | Start (Jul 2025) | Peak | Growth |
|---|---|---|---|
| Domain Rating (Ahrefs) | 13 | 48 (Jun 2026) | 3.7× |
| Referring domains, excluding disavowed spam | 75 | ~370 (Aug 2026) | 4.9× |
| Keywords in top 3 (Ahrefs) | 4 | 73 (May 2026) | 18× |
| Organic clicks per month (GSC) | 51 | 336 (Jul 2026) | 6.6× |
| AI citations, all platforms (Ahrefs) | 0 | 158 (Jul 2026) | from zero |
In August 2026 Ahrefs counted 588 referring domains. 219 of them were spam domains we had already disavowed, which leaves about 370.
Domain Rating dipped from 48 in June to 45 in July and August 2026 after a technical error on the client’s own hosting. The dip was not caused by the SEO work.
Organic clicks from April to August 2026 were worth about $56,000 at Google Ads prices. We value each organic click at the average CPC for the same queries. Over those five months that came to 1,371 clicks at $23–46 per click (about $41 on average), or $56,190 in total. These CPCs match what Bay Area HVAC search actually cost in Google Ads in 2026 ($40–47 a click). This is the value of the traffic, not ad budget the client stopped spending.
- Big jumps on local intent. “Heat pump installation santa clara ca” went from position 48 to 2 in April 2026. The furnace cost guide reached #1 for “furnace replacement cost” and #3 for “furnace installation”. These are rank-tracking positions, and most of the search volume behind these terms is nationwide, so local clicks are only a fraction of it.
- Keyword growth. The site ranked for 159 organic keywords in May 2026, adding 93 in that month alone.
- Real leads from AI search. In April 2026 the client received its first contact-form lead that came through an AI assistant (Claude).
Paid acquisition
Our paid campaigns brought leads in at $34 to $138, against the $200–250 a lead that HVAC search typically costs in the Bay Area.
| Channel | Cost per lead |
|---|---|
| Typical Bay Area HVAC search (market benchmark) | $200–250 |
| Water heater call campaign (Google Ads) | $34 |
| Local Services Ads, best month | $55 |
| Local Services Ads, average | $77 |
| San Jose search campaign (Google Ads) | $77 |
| Google Ads search campaigns, at their most efficient | $138 |
Click to download this table as an image
The $200–250 benchmark is what general HVAC search leads cost in the Bay Area in 2026, based on our own campaign data. San Jose performed best among our search campaigns, so we shifted budget toward it. The water heater call campaign targeted a narrow, less contested set of repair and replacement keywords at $1.59 per click, which kept its cost per lead at $34 across 328 leads. Local Services Ads held a 90–99% top-of-search impression rate.
AI search visibility
In 12 months the site went from zero AI citations to 158 AI-generated answers across six platforms (July 2026). Google’s AI Overviews and AI Mode carry most of them, followed by Grok. Our AI Visibility Boost tracks these citations every week.
| Platform (July 2026) | AI answers citing the site |
|---|---|
| Google AI Overviews | 54 |
| Google AI Mode | 50 |
| Grok | 39 |
| Perplexity | 7 |
| Gemini | 5 |
| ChatGPT | 3 |
| Total | 158 |
Click to download this table as an image
In our experience, direct-answer openings, TL;DR blocks, FAQ sections with real homeowner questions, and rebate tables with named programs and dates are the parts AI models lift and quote most often. Clean entities (one brand name, a licence number, named cities and equipment) help the citation point back to the company.
Common misconceptions
- “SEO takes years to pay off.” A lot of people think so. Here, keywords in the top 3 grew from 4 to 73 within the first 10 months, and in months 9 to 13 organic clicks were worth about $56,000 at Google Ads prices.
- “AI search needs separate content.” It doesn’t. Google’s own guidance says AI Overviews and AI Mode need no special optimization beyond SEO best practices. We didn’t create any separate content for AI: the citations went to the same guides and service pages we built for search.
- “More backlinks always means more authority.” In May 2026 a competitor had more than twice as many referring domains, yet our profile kept growing because each link pointed at a relevant service or city page. We also disavowed 527 spam domains that would only have diluted it.
- “Cheap clicks only exist in small markets.” In the Bay Area, one of the most expensive HVAC markets, a narrow call campaign on water heater keywords paid $1.59 per click.
What we learned
- Systems beat one-off posts. One brief, one prompt and one checklist kept the voice, facts and schema consistent across 66 publications and 120 indexed pages.
- Niche campaigns beat broad auctions. The water heater call campaign brought leads at $34, a quarter of what our general search campaigns cost at their best.
- Accuracy matters for AI visibility. In our experience, removing an expired tax credit or a closed rebate protects both the client and its citations, because AI assistants repeat what they read.
- Local facts are the moat. Utility territories (CPAU in Palo Alto, SVP in the City of Santa Clara, PCE in San Mateo County) and dated rebate amounts are what competitors get wrong.
- Paid and organic feed each other. Lead tracking showed which services and cities converted, and that told us what to write about next.
- Link hygiene is part of SEO. Negative SEO is real, so inbound links need the same weekly checks as rankings.
Frequently asked questions
For this Bay Area HVAC company, the first results appeared within 2–3 months of starting the program. Stronger gains followed within 8–10 months: Domain Rating rose from 13 to 38 by March 2026, and keywords in the top 3 grew from 4 to 73 by May 2026. The first lead from an AI assistant arrived in month nine.
It depends on the niche and the channel. In the Bay Area our general HVAC search campaigns delivered leads at $138 at their most efficient, and our San Jose campaign at $77. A narrower water heater call campaign averaged $34 per lead.
They can try. When we started SEO for this client, competitors had already pointed spam links at the site from pages about prohibited substances, which can make Google treat a site as unsafe. We disavowed 527 spam domains, checked new links every week and built relevant backlinks, and Domain Rating still grew from 13 to 48 within a year.
For this client they did. Local Services Ads brought 70 leads at an average of $77 each, dropping to $55 in the best month, with a 90–99% top-of-search impression rate. You pay per lead rather than per click, which keeps costs predictable.
Make your site easy to quote. Open every page with a direct answer, add FAQ blocks in your customers’ own words, use one consistent business name and licence number, and keep facts like prices and rebates current. Authority from relevant backlinks helps AI choose your page as a source.
SEO helps a page rank in search results. GEO helps AI assistants understand and quote the page. The two overlap heavily: in this project the same pages earned both the rankings and the 158 AI citations.
Yes, if the budget allows. Ads bring calls from day one while SEO builds. Here, ad lead data showed which cities and services converted, and we used it to plan the next SEO pages.
Want the same results for your service business? Start with an SEO & AI-search audit or book a call with Well Web Marketing.
Sources and method
- Client data: Ahrefs Site Explorer and Google Search Console for the client’s website; Google Ads and Local Services Ads reports, December 2024 – September 2026; Well Web Marketing monthly SEO reports, April – August 2026.
- Ahrefs: Domain Rating, what it is and what it’s good for
- Google Search Central: AI features and your website
- IRS: Energy Efficient Home Improvement Credit (25C)
- TECH Clean California
