Skip to content
Seoptist

A GEO audit checklist for local UK service businesses

A practical, ordered checklist for plumbers, electricians, cabling contractors, dentists and other local trades who want to be recommended by ChatGPT, Gemini, Perplexity and Google AI Overviews.

By Seoptist Team · · 6 min read

Local service businesses have one advantage in AI search that national brands do not: the questions are concrete. "Emergency plumber in Reading", "NHS dentist taking new patients in Norwich", "data cabling contractor for an office fit-out in Leeds". Assistants answer these with a short list and a reason for each name. Getting on the list is mostly a matter of being unambiguous, reachable and corroborated.

This checklist is ordered by what we see move the needle, from foundations to refinements. Work down it; do not skip to the bottom.

Stage 1: Can the engines reach and read you?

Nothing else matters if the answer here is no.

[ ] robots.txt does not block GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot or Google-Extended
[ ] CDN / firewall (Cloudflare, Sucuri, hosting panel) has no "block AI bots" rule enabled
[ ] curl -A "PerplexityBot" -I https://yourdomain.co.uk/ returns 200, not 403 or a challenge page
[ ] Service pages render their text in the HTML, not only via JavaScript
[ ] No key page carries noindex by mistake
[ ] sitemap.xml exists, is referenced from robots.txt and lists every service and area page

A surprising number of trade websites built on page-builder themes ship with aggressive bot blocking switched on by a security plugin. Check the plugin settings, not just the robots.txt file.

Stage 2: Is your identity consistent? (NAP and beyond)

Assistants recommend entities they are confident about. Confidence comes from seeing the same facts everywhere.

[ ] One trading name, spelled identically, on: website, Google Business Profile, Companies House,
    Checkatrade / TrustATrader / Which? Trusted Traders (if used), Yell, Trustpilot, Facebook
[ ] One address format (including postcode) everywhere
[ ] One phone number everywhere (no tracking numbers on directories that differ from your site)
[ ] Opening hours match between website and Google Business Profile
[ ] Service area (towns and postcodes) stated in words on the site, not only on a map
[ ] Regulatory status stated where relevant: Gas Safe number, NICEIC/NAPIT registration,
    GDC registration for dental practices, FENSA, Part P

If you have changed name, address or number in the last three years, search for the old details and get them corrected. Old listings are the most common reason an assistant gives a customer a dead number.

Stage 3: Does each page answer the question?

Assistants quote pages that answer directly. Marketing copy that opens with "Welcome to our website" gives them nothing to use.

For each core service, one page, with the first paragraph structured like this:

[Business] is a [registration] [trade] based in [town], covering [area]. We provide [service] for [customer type], typically [turnaround or availability], with [pricing basis: fixed call-out fee of £X / free quotes / from £Y]. [One concrete differentiator, e.g. 24-hour response, 10-year guarantee].

Then:

[ ] A page per main service (boiler repair, rewiring, structured cabling, emergency dental, etc.)
[ ] A page per main town or area you serve, with real local detail, not a find-and-replace template
[ ] Pricing basis stated plainly, even if it is "from" or "call-out fee plus parts"
[ ] A real FAQ section on each service page (questions customers actually phone to ask)
[ ] An About page that reads like a fact sheet: founded, team size, accreditations, insurance, area
[ ] Reviews on the site that are also on a public platform (so they can be corroborated)

Stage 4: Structured data

JSON-LD is the cheapest way to remove ambiguity. Minimum set for a local trade:

{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Example Heating & Plumbing Ltd",
  "url": "https://www.example.co.uk/",
  "telephone": "+441234567890",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "12 High Street",
    "addressLocality": "Reading",
    "postalCode": "RG1 2AB",
    "addressCountry": "GB"
  },
  "areaServed": ["Reading", "Wokingham", "Bracknell"],
  "openingHoursSpecification": [{
    "@type": "OpeningHoursSpecification",
    "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
    "opens": "08:00",
    "closes": "18:00"
  }],
  "priceRange": "££",
  "sameAs": [
    "https://www.facebook.com/examplehp",
    "https://www.checkatrade.com/trades/examplehp"
  ]
}

Use the most specific type schema.org offers (Plumber, Electrician, Dentist, HVACBusiness, or plain LocalBusiness), add FAQPage where you have FAQs, and validate it. Errors in structured data are worse than none, because they signal carelessness to any system reading them.

[ ] LocalBusiness (or specific subtype) JSON-LD on the homepage with NAP, hours, areaServed, sameAs
[ ] FAQPage JSON-LD on pages with visible FAQs (the questions must be on the page too)
[ ] Service schema or clear service descriptions for each service page
[ ] Validated with schema.org validator and Google's Rich Results test; zero errors

Stage 5: Third-party presence where assistants look

Look at the sources assistants cite when they answer prompts in your trade. For UK trades the usual suspects are Google Business Profile reviews, Checkatrade, Trustpilot, Which? Trusted Traders, local Facebook groups and the local press. For dentists it is the NHS website, the GDC register and Google reviews.

[ ] Google Business Profile complete: categories, services, hours, photos, Q&A, regular posts
[ ] Listed on the two or three trade directories the engines actually cite in your area
[ ] Recent reviews (last 90 days) on at least two platforms
[ ] Trade body listing (Gas Safe register, NICEIC, GDC) links to your site with the correct name
[ ] At least one local press or community mention with your name and town

Stage 6: Performance and hygiene

Not GEO-specific, but a slow or broken site is retrieved less and trusted less.

[ ] Core Web Vitals pass on mobile (LCP, INP, CLS) for the homepage and top service page
[ ] HTTPS everywhere, no mixed content
[ ] No broken internal links on service and area pages
[ ] llms.txt at the root describing the business and linking to key pages

Stage 7: Measure, then repeat

Pick ten to thirty prompts a customer would actually say. Include emergencies ("burst pipe Reading now"), comparisons ("Checkatrade or local recommendation for electrician"), and qualification questions ("dentist in Norwich that does sedation"). Ask them on more than one engine, more than once, and note who is named and which sources are cited. Repeat weekly.

Seoptist does this part automatically, runs the audit above against your site and your listings, and turns everything into one prioritised checklist. The free AI Visibility Check is a quick way to get your first reading; Starter at £49 a month covers 30 prompts on three engines with a 100-page audit, which is enough for most single-location trades.

Frequently asked questions

I only serve one town. Do I still need area pages?

One well-written page about that town and the villages around it is enough. Area pages matter when you cover several distinct towns that a customer might name in a prompt.

Do I need to be on Checkatrade or similar to be recommended?

Not strictly, but assistants frequently cite those platforms for UK trades because they combine verification and reviews. If the engines cite a platform for your prompts and you are absent from it, that is a gap worth closing.

How long does the whole checklist take?

Stages 1, 2 and 4 are usually a day or two of work for a single site. Stage 3 depends on how many services you have. Stage 5 is ongoing. Most of the measurable movement comes from the first four stages.

Find out what AI assistants say about you today.

Run the free check in two minutes, or start a trial and get your full SEO and GEO checklist this week.

No card needed for the free check. Prices exclude VAT.