gaash.ai

Plumbing and heating

The 2 a.m. call goes to the plumber the assistant could read.

GEO for plumbers is plain: when someone types "emergency plumber near me open now" into ChatGPT, or asks Gemini what a water heater replacement should cost, an assistant with web search on reads a handful of contractor sites before it answers. GEO for plumbers is making sure yours is one it can read, and that it states what the homeowner asked.

A homeowner's question about a plumber asks for what your pages can state in plain text: the services by their ordinary names, the towns you drive to, one phone number that is the same on every page, your license number, the hours a person answers, and a price range for the jobs you already quote by phone. The assistant cannot infer any of it. It can only repeat what it finds.

How your customers ask

The questions a homeowner types before calling anyone

“emergency plumber near me open now”
“how much does it cost to replace a 50 gallon gas water heater”
“who services boilers in Buffalo and what does an annual service include”
“licensed plumber for a bathroom rough-in in a basement who can start this month”
“is it worth repairing a 12 year old water heater or should i replace it”

Four calls, four different questions asked before the phone rings

A plumbing and heating company gets four kinds of call, and each can now begin with a question to an AI assistant: the night emergency (a burst pipe, no hot water, a backed-up drain), the planned replacement (water heater, boiler, furnace), the annual service, and the remodel (a bathroom rough-in, a repipe). Each has its own question, and its own lines on your site that answer it.

The emergency question is about now: "open now", "24 hour", "comes out tonight". The answer the homeowner wants carries three facts: hours that say someone answers at night, a number to call, and the towns you cover. A banner image reading "24/7 emergency service" gives a text fetch nothing to read; the same words in a sentence on the contact page do.

The replacement question is about money before it is about you. "How much does a water heater replacement cost" can only be answered with a figure from pages that publish one. State the range you already give on the phone and what it includes (permit, haul-away, an expansion tank where code requires one), and yours can be the page the assistant quotes.

The service and remodel questions name a credential and a schedule: "licensed", "insured", "can start this month". Your license number, the issuing state and the insurance line belong in text on the about page and in the footer, not in a badge graphic. An answer can repeat the word "licensed" from a sentence; it cannot repeat it from a logo.

What an assistant has to find on a plumbing site before it can name you

An assistant with web retrieval fetches your page the way an AI crawler does and reads the served text. OpenAI documents ChatGPT-User as the fetcher that opens a page when a user asks about it. It does not see your trucks or your reviews on another site; it sees what the page states, in the form it states it.

What a plumbing and heating site has to state, where, and in what form.
What to stateWhere it belongsIn what form
Services by their plain namesA page per service, linked from the homepage"Water heater replacement", "drain cleaning", "boiler service", "bathroom rough-in"; not "plumbing solutions"
Area servedContact page and every service pageTowns and counties by name, and areaServed in the markup
One phone numberHeader, footer, contact page, markupThe same digits everywhere, including the emergency line
Hours, including nightsContact page and openingHoursSpecificationWhether a person answers at 2 a.m., and what happens if not
License and insuranceAbout page and footerThe license number as text, the issuing state, the insurance line
Price rangesThe service page for each job you quote by phoneThe range you already give on the phone, with what it includes
ReviewsHomepage or a reviews pageQuoted as text with a first name, a month and the platform named
The business typeJSON-LD on every pagePlumber or HVACBusiness, not WebSite

Plumber and HVACBusiness are both subtypes of LocalBusiness on schema.org, so the fields Google documents for local business markup apply: name, address, telephone, opening hours, geo and price range. The type says what kind of business you are. The fields, filled in and matching the visible page, are what make the LocalBusiness schema usable.

One number matters more in this trade than in most: a homeowner at 2 a.m. needs one line to call, and an answer can give only one number beside your name. In our audit of 9,483 small business websites (40 trades, 90 metros, late August to early September 2026), 36.9% published more than one phone number across their own three main pages. An office line, a cell in the footer and an emergency line in a banner are three answers to one question.

What our crawl found on sites like yours

The audit publishes no separate cut for plumbing contractors; the figures below describe the whole sample across 40 trades, and the method section says how it was drawn.

43.1% of sites were inconsistent about who and where they are across their own three pages, and 34.1% had no postal address a machine could parse. For a trade whose buyer needs a number and a service area, that is the finding that matters most, and the cheapest to fix.

61.5% had no question-and-answer content of any kind, no FAQ page, nothing shaped like the thing a homeowner asks. 50.7% had a heading phrased as a question and did not answer it in a form a machine can isolate; the plumbing version of that shape is "How much does a water heater cost?" followed by "every job is different, call us".

64.7% showed no review signal a crawler could read, and only 8.9% carried rating schema, though most of those businesses had reviews on Google the site never mentioned. 17.8% had no schema.org markup at all; of the 82% that did, most of it described the website rather than the business.

7.2% sat behind bot protection that served the crawler a challenge page instead of the site, and 3.2% disallowed AI crawlers in robots.txt on purpose. Our free crawler access check reads your robots.txt the way each of the nineteen AI crawler tokens would.

What to fix first, starting with the number

  1. Pick one emergency number and publish it, in text, identically on every page: header, footer, contact page and markup. If the office line differs, label both and keep both identical everywhere. Put the address once, in one form.
  2. Mark up the business, not the website: Plumber or HVACBusiness in JSON-LD with address, telephone, openingHoursSpecification, areaServed and priceRange. Google recommends JSON-LD and says to mark up only what the visitor can see.
  3. Write one page per service in its plain name, with the towns you serve and the price range you quote by phone, stating what it includes.
  4. Put reviews on the page as text, with a first name, a month and the platform. Leave the platform's rating out of your AggregateRating markup: Google's review snippet rules say ratings from other websites are not to be aggregated there.
  5. Write the five questions your dispatcher answers most, as headings, with a real answer under each. Aggarwal et al. (KDD 2024) found that adding statistics, quotations and citations to a source raised its visibility in generated answers by up to about 40% on their benchmark.
  6. Check what a crawler receives: run the crawler access check on your robots.txt, then view the source of a service page with scripts off. If the words you sell with are not in that HTML, no fetcher sees them.

None of this guarantees a place in the answer; no agency has a lever inside these systems. It removes the reasons an assistant could not name you. What it names once it can read the page is what we measure, and the method is public.

What plumbing and heating owners ask

Most of our calls come from Google Maps and word of mouth. Why would an assistant matter?

It may not yet, for you, and measuring is the only way to know. Our probe put one buyer question per business to Claude with web retrieval on, and 14.9% of 9,240 businesses were named: one assistant, one question, one day, a direction rather than a rate. The free check asks the questions your buyers type and tells you whether you are in the answer.

Should we publish prices when our competitors will read them?

Your competitors already hear your prices from customers. The homeowner asking an assistant what a water heater replacement costs gets an answer from the sites that publish a range, and a range with what it includes (permit, haul-away, warranty) is not a quote. It is a line an assistant can repeat, and "call for pricing" is not.

Is there a schema type for plumbers?

Yes. Plumber and HVACBusiness are both LocalBusiness subtypes on schema.org. Use one on every page, as JSON-LD, with address, telephone, openingHoursSpecification, areaServed and priceRange filled in and matching the visible page. The fields matter more than the type: 13.7% of the audited sites had business schema that was missing the fields that would make it usable.

Sources: our audit of 9,483 small-business sites, with its method · Aggarwal et al., GEO: Generative Engine Optimization (KDD 2024) · Google, local business structured data · Google, introduction to structured data · Google, review snippet · schema.org, LocalBusiness · OpenAI, crawler documentation