Local Business AEO: Getting Cited When Someone Asks AI for a Pro Near Them
Local AEO gets service businesses named in AI answers for near-me and city prompts by locking NAP, Maps, and service pages — Maps rank alone is not enough.
William Spurlock Founder — Spurlock Studios Updated 30 MIN
Local AEO for service businesses is the work of getting named when someone asks ChatGPT or a Google AI Overview for a pro near them — not only when they open the map pack. Maps SEO remains mandatory. It is no longer the whole game. Buyers ask full-sentence questions (“Who installs heat pumps in Greenville with same-week service?”) and generative systems answer with shortlists.
This spoke applies the Answer Engine Optimization playbook to local and multi-location operators. I have been SEO certified since 2021. The local version of that work is still a fact packet you can defend: identical NAP, a Google Business Profile that matches the door, and pages that state services and cities in plain sentences.
The short answer
- Lock one public name, one address format, one phone, and one hours grid, then paste that NAP onto the site, Google Business Profile, and every listing you still control
- Treat Maps and AI answers as two surfaces that share evidence. Winning the pack does not mean chat will name you
- Service-area businesses hide the street address on Google and say so on the site. Do not publish a walk-in pin you do not have
- Write service + city pages only for territory sales will accept. Thin doorway pages teach the wrong coverage
- Ask for reviews that name the job and the city. Re-run a local prompt panel every month and log what the answers actually said
What is local AEO, and how is it different from Maps SEO?
Local AEO is entity and evidence work so a model can recommend you for a geographic buyer question. Maps SEO is still the Google local-pack and Maps ranking problem. You need both. One screenshot of the pack is not a citation program.
Google is explicit about how the pack works. Local results are mainly based on relevance, distance, and prominence (how well-known the place is, including links and reviews). There is no way to request or pay for a better local ranking (Google Business Profile: tips to improve local ranking). AI Overviews and AI Mode sit on top of Search. They fan out related queries, pull snippet-eligible pages, and tell you to keep Business Profile information current (Google Search Central: AI features; Google: optimizing for generative AI features).
| Surface | What the buyer sees | What usually feeds it | What “winning” looks like |
|---|---|---|---|
| Google Maps / local pack | Pins, hours, call, directions | Verified Business Profile, distance, reviews, relevance | You appear for the category + area query |
| Classic local blue links | City or service pages in web results | Indexed pages that match the query | The page ranks and converts |
| AI Overview / AI Mode | A shortlist or a “call this shop” sentence | Indexed pages plus profile facts Google already stores | You are named, with the right city and service |
| Chat with search | A shortlist with or without links | Whatever the crawl and retrieval can quote | You are named, and the facts match the door |
If you only optimize photo counts on Google Business Profile and ignore answer-shaped pages, chat shortlists will keep favoring competitors with clearer copy.
- You can state the primary local question in one sentence
- You know whether you are a storefront, a service-area business, or a hybrid
- You have a written NAP card, not three versions in three tools
- You have a prompt list that includes city, neighborhood, and emergency shapes
Maps rank is proximity plus proof. AI answers are compression plus proof. Same facts. Different layout.
Where do local AI answers get their evidence?
They sample the public record and compress a recommendation. Google says Business Profile information is compiled from the official website, licensed third-party data, user contributions (including owners who claim the profile), and Google’s own interactions with the place (Google: how it sources Business Profile info). That is why a leftover directory row still shows up in an answer two years after you moved.
| Evidence class | Examples | What a conflict does |
|---|---|---|
| Owned profile | Google Business Profile name, address or service area, phone, hours, categories, services | Wrong category or hidden-vs-shown address teaches the wrong business type |
| Owned pages | Location pages, service-area pages, FAQ, footer NAP | Thin or spun city copy looks like doorway spam and gets ignored |
| Structured data | LocalBusiness JSON-LD that matches visible text | Markup that disagrees with the page is a conflict you authored |
| Reviews and Q&A | Google reviews, owner replies, claimed Q&A | “Great guys!!!!” teaches nothing a model can quote |
| Corroboration | Chambers, local press, partner “vendors” pages, trade associations | Silence here makes the profile the only witness |
| Residue | Old directories, PDFs, event pages, call-tracking numbers left as primary | The old phone becomes the answer |
Generative tools do not hold a separate “local truth” database you can ticket. They read the same mess Maps already reads, then they write a sentence. Conflicts (wrong phone, old address, mismatched categories) push you out — or worse, they keep you in with the wrong facts.
Google’s Places APIs now expose AI-written place and review summaries built from that same place record (Google Maps Platform: AI-powered place summaries). If the underlying profile is sloppy, the summary inherits the slop.
- List every URL that currently states your name, address or service area, phone, and hours
- Mark each row owned, claimable, or residue
- Fix owned first. Claim the claimable. Outcompete residue you cannot edit
- Re-test the same local prompts after the owned layer matches
The public record is the patient. The model is the messenger.
Why do NAP mismatches knock you out of Maps and AI answers?
NAP is name, address, and phone. Local AEO fails here more often than it fails on “content strategy.” Google’s representation rules are stricter than “close enough.” The public name should match real-world signage and stationery, not a keyword-stuffed slogan. The address should be a real location customers can use — not a P.O. box or a remote mailbox. The phone should connect to that location, stay under the business’s control, and prefer a local line over a central call-center helpline (Google Business Profile: representation guidelines; Google: manage your business address).
Incomplete or inaccurate profile info is also how Google describes weaker local visibility (Google: tips to improve local ranking). The same incomplete card is what AI Overviews are told to keep current (Google Search Central: AI features).
| NAP field | Canonical rule | Residue that keeps teaching the error |
|---|---|---|
| Name | One legal / public name, same punctuation and suffix | Old DBA, “LLC” on some rows, “Best HVAC Greenville” glued to the name |
| Address | One street format, one suite notation, one city/state/ZIP — or a hidden address plus service area | Prior shop; “Ste” vs “Suite”; a pin on a coworking lobby you do not staff |
| Phone | One primary line per location, one written format | Call-tracking on GBP, cell in the footer, 1-800 on ads |
| URL | One canonical host (www or apex, https) that represents that location | Facebook-as-website, a national homepage for a local shop, a dead builder subdomain |
| Hours | One weekly grid plus holiday exceptions | Saturday hours left over from a promotion; “24/7” on the site and 8–5 on Maps |
Humans forgive “Street” vs “St.” Aggregators and models often do not collapse those rows into one entity. Pick a format and paste it. Do not retype it from memory.
- One written NAP card exists (name, address lines or “service area only,” phone, URL, hours)
- Footer, Contact, About, and location pages paste from that card
- Google Business Profile matches the card after you edit the profile
- Call-tracking numbers are labeled as tracking, not as the public primary
- Old addresses appear only on a dated “we moved” note, never as current
A wrong suite on a legacy directory is not a branding nit. It is the next model’s evidence. The cleanup loop for leftover brand facts is in avoiding AI-hallucinated brand facts.
Storefront, service-area, or hybrid — which profile should you run?
Pick the type that matches how customers actually meet you. Google represents service businesses as a service-area business (you visit them; they do not visit you) or a hybrid (they can come to you and you also travel) (Google: Business Profile for service businesses). If you do not serve customers at the address, hide it and list the service area. If you hide the address and skip the service area, Google picks a local area for you (Google: manage your business address; Google: manage service areas).
| Type | What is true in the real world | What Google wants on the profile | What the site must say |
|---|---|---|---|
| Storefront | Customers walk in during stated hours; permanent signage | Show the street address; pin the door | Address, hours, parking, how to find you |
| Service-area business (SAB) | You travel to them; no public walk-in | Hide the address; set cities or postal codes you actually serve | Cities served, travel fees, where you are based — no fake lobby |
| Hybrid | Shop plus on-site work (garage plus roadside, showroom plus install) | Show the address and add a service area | Both the visit path and the travel path, with different hours if they differ |
Google’s service-area rules are specific. You cannot set a radius and then edit it later if you already stored it that way — you specify cities, postal codes, or other area types. Service-area edits can take up to 48 hours. A location without permanent on-site signage is not eligible as a storefront (Google: manage service areas; Google: representation guidelines).
AI answers that invent a fake street address are a common SAB failure. They happen when the site still publishes a “visit us at” block, a Maps embed of a house, or schema with a streetAddress you told Google to hide.
- Write one sentence: “Customers meet us at [address]” or “We come to you in [areas]; we do not have a public counter”
- Set the profile to match that sentence
- Remove the opposite sentence from the site, schema, and ads
- Re-run “Where is [Brand] located?” and “[Service] near [city]”
A pin you cannot staff is not “more visibility.” It is a one-star review waiting for Saturday.
Which Google Business Profile category should you pick?
Pick the primary category that matches the money service, then add secondaries that are true. Google says the primary category should be the most specific description of what the business is — “Nail salon,” not “Salon” — and that you should not use categories as keywords or to describe every product on the shelf. Additional categories cover real departments, not a wish list. Changing a category can trigger re-verification. Categories affect local ranking (Google: manage your business category; Google: edit your Business Profile).
| Situation | Primary category | Secondary that is honest | Secondary that will hurt you |
|---|---|---|---|
| HVAC shop that sometimes pulls a permit for a disconnect | HVAC contractor | Air conditioning contractor, if that is real work | Electrician, if you are not one |
| Plumber who also snakes drains | Plumber | Drain cleaning service, if you sell it | General contractor |
| Auto shop with a wrecker | Auto repair shop | Towing service, if you run the truck | Car dealer |
| Multi-location brand | Same primary across locations | Location-true extras | A different primary in each city for “coverage” |
Google also says all locations of a business must share a primary category (Google: edit your Business Profile). Franchise marketing that sets “Emergency service” as a category because the ad account wants it will win the wrong prompts and lose trust.
Specialized prompts (“commercial refrigeration [city]”) need specialized page proof. A generalist homepage loses to a specialist in a generative shortlist even when the specialist is smaller.
- Primary category matches the service that pays the bills
- Every secondary is work you will accept on a Thursday
- Site H1s and GBP services use the same nouns as the categories
- You did not add a category to “rank for” a neighbor’s business type
Category stuffing is keyword stuffing with a dropdown. Models notice. Customers notice faster.
How should hours and emergency claims be written so AI does not invent 24/7?
If you offer emergency service, say so with hours and fees. If you do not, say so. AI answers that invent 24/7 availability create angry callers and one-star reviews. Accuracy is brand safety.
Google lets you set main hours, special hours for holidays or short closures, and “more hours” for a specific service such as delivery or after-hours dispatch (Google: edit your business hours; Google: edit your Business Profile). The site, the profile, and the phone script have to recite the same grid.
| Claim | Publish it when | Do not publish it when |
|---|---|---|
| Open Saturday 8–12 | Someone answers the phone or the shop is staffed | The van is parked and voicemail is full |
| Emergency / after-hours | You have a real on-call rotation and a stated fee | “We try to get back to you” |
| 24/7 | You actually dispatch at 2 a.m. | You mean “we have a voicemail box” |
| Same-week service | Dispatch can keep that promise in season | You mean “sometimes in February” |
| Closed holidays | You set special hours before the week of | You forget and let last year’s hours linger |
- Write the weekly grid the office will honor next week
- Enter it on Google Business Profile, including special hours you already know
- Put the same grid on Contact and every location page
- Put emergency rules in one FAQ sentence: hours, fee, what qualifies
- Remove “24/7” from ads, trucks, and old landing pages if the grid is 8–5
Holiday hours left live in March are how a model still says you are open on Sunday. Special hours exist so you do not have to lie in the main grid.
How do you make GBP services match the site?
The services list on the profile and the services list on the site should be the same nouns, in the same scope. Google’s edit-profile flow is where hours, categories, photos, and Q&A live; services belong in that same accuracy pass (Google: edit your Business Profile; Google: get started with Business Profile).
| Site says | Profile should say | Failure if they disagree |
|---|---|---|
| Heat pump install, not “green HVAC solutions” | Heat pump installation | AI quotes the vague phrase and skips you for the specific job |
| Residential only | Residential services; no commercial category | You win commercial prompts you will decline |
| Service area: Greenville County | Service area cities that match that county | A leftover “Columbia” page keeps you in the wrong shortlist |
| No refrigeration | No refrigeration service row | An old menu item still teaches the specialty |
Do not invent a service row to occupy a prompt. Occupying a prompt you cannot fulfill is how review damage starts.
- Export or screenshot the GBP services list
- Diff it against the site nav and the top service pages
- Delete profile services you retired
- Add profile services you actually sell and already describe on a page
- Use the same words a dispatcher would use on the phone
Staff nicknames for services leak into reviews. Give CSRs the official names on a one-pager so the public record stays one language.
What review language actually helps local AI answers?
Reviews that mention the real service and the city become retrieval fuel. Star-only praise does not. Google treats reviews as a prominence signal for local ranking and tells owners to reply once the profile is verified. Replies are reviewed against content policies and usually post in about ten minutes, though a review can take up to 30 days. Customers can edit after you reply (Google: manage customer reviews; Google: tips to improve local ranking).
| Review text | What a human hears | What a model can quote |
|---|---|---|
| “Replaced our two rooftop units at the Greenville store and had us back open before Friday’s rush.” | Proof and a timeline | Service + city + commercial context |
| “Same-day water heater in Simpsonville. Licensed, showed up when they said.” | Trust | Service + city + license mention |
| “Awesome company!!!!!” | Warmth | Almost nothing |
| Keyword-stuffed “best HVAC Greenville heat pump install near me” | Fake | Stuffing. Humans and models both flinch |
Train CSRs and techs to ask for specifics: service performed, location, timeline. Never script unnatural keyword strings.
Owner replies should reinforce the true service and city without stuffing. “Glad we got the Greenville store’s RTUs swapped before Friday” is a fact. “Thanks for choosing the best HVAC in the Upstate for your heat pump furnace AC mini split” is an ad.
- Review ask includes “what we did” and “which location or city”
- Someone replies to new reviews on a set cadence
- Replies use official service names
- You flag policy-violating reviews instead of arguing in public
- You do not buy reviews or write them for the customer
A review you wrote for them is not proof. It is a future trust problem with your name on it.
Do photos and Q&A matter if the model is reading text?
Yes, because the profile is one object. Photos teach humans and, increasingly, multimodal systems what the work looks like. Q&A is literal question-and-answer text sitting on the same entity. Google reviews uploads (pending / not approved / live), notes that logo and cover depend on a complete profile (name, valid location, categories, phone, hours), and says owner-managers can answer Q&A where the feature exists (Google: manage photos and videos; Google: edit your Business Profile).
| Asset | Do this | Do not do this |
|---|---|---|
| Logo | Real mark, readable at small size | A keyword-stuffed wordmark that is not on the truck |
| Cover | A real job or a real storefront | Stock smiling headsets |
| Job photos | Real work, customer permission, city-true | Another franchisee’s warehouse passed off as yours |
| Q&A | Claim it. Answer “Do you serve [neighborhood]?” with the truth | Leave “Are you open 24/7?” unanswered so a stranger fills it |
Even text-only answers benefit when pages describe tangible proof (“EPA 608 techs on staff,” “stocked vans for brand-name parts”). Pair that with GBP photos of real jobs. Stock photography teaches nothing distinctive.
- Upload this week’s real jobs, not a batch from 2019
- Answer every open Q&A in the owner’s voice
- Add the three questions locals actually ask if they are missing
- Match those answers to the on-site FAQ so the two surfaces do not argue
An unanswered “Do you offer emergency service?” is an invitation for a stranger — or a model — to guess.
What on-site service-area pages should you publish?
One page per meaningful city or service combo you actually serve. Not a hundred spun URLs. Google’s AI-features guidance is still people-first pages, important content in text, and structured data that matches the visible page (Google Search Central: AI features; Google: succeeding in AI search). Doorway spam fails that bar and fails a human who lands on paragraph three.
Include, in plain sentences:
- Who you serve in that area
- Specific services
- Response-time or scheduling realities you can keep
- License and insurance statements if they are relevant
- NAP or explicit service-area language plus a CTA
- FAQs locals actually ask
| Page element | Honest version | Doorway version |
|---|---|---|
| H1 | “Heat pump installation in Greenville, SC” | “Best HVAC near me Greenville Anderson Spartanburg” |
| Lead | What you do, who you serve, what a visit looks like | Three synonyms for “we serve the Upstate” |
| Scope | Included / not included | “All your HVAC needs” |
| Proof | License number, brands, a real job note | “Trusted by thousands” |
| Cities | The list dispatch will accept | Every city inside a 90-minute radius |
Service-page outline you can reuse
- H1 with service + city (honest)
- Two-paragraph lead: what you do, who you serve, response expectations
- Scope list (included / not included)
- Proof (licenses, brands serviced, project notes)
- Process steps (book → diagnose → quote → perform)
- Pricing posture (ranges or “why we quote onsite”)
- Neighborhoods and cities served
- FAQ
- NAP + CTA
That outline compresses cleanly for AI and converts humans who skip to the middle.
- Every city on the page is a city sales will book
- The page states at least one thing a competitor’s spun page cannot copy (license, brand, hours, fee)
- The FAQ uses spoken shapes: “Do you serve [neighborhood]?” “Are you licensed in [state]?”
- You do not need a separate “voice SEO” project. You need FAQ realism
If sales does not accept jobs in a city, do not publish a city page to win AI citations. Short-term inclusion creates long-term review damage. Align territory maps with the page inventory monthly.
How should LocalBusiness schema match the page and the profile?
Markup copies the page. It does not outvote the page. Google’s LocalBusiness structured data is how you describe hours, address, departments, and related facts for Search and Maps knowledge panels. Use the most specific subtype you can (HVACBusiness beats generic LocalBusiness when it is true). Required-quality fields start with name and address; recommended fields include telephone, url, geo, and openingHoursSpecification. The location url must be a working link for that location (Google Search Central: LocalBusiness; schema.org/LocalBusiness).
Google’s AI-features checklist repeats the tripwire: structured data must match the visible text (Google Search Central: AI features). A telephone in JSON-LD that is not on the page is a conflict you authored.
{
"@context": "https://schema.org",
"@type": "HVACBusiness",
"name": "Example Heat & Air",
"url": "https://www.example.com/greenville-heat-pump-installation",
"telephone": "+1-555-0100",
"address": {
"@type": "PostalAddress",
"streetAddress": "100 Example Street",
"addressLocality": "Greenville",
"addressRegion": "SC",
"postalCode": "29601",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"areaServed": ["Greenville County", "Simpsonville", "Mauldin"]
}
If you are a service-area business with a hidden street address, do not publish a public streetAddress you told Google to hide. State areaServed in visible copy and in markup. A storefront should show the same street on the page, in schema, and on the profile.
| Field | Storefront | SAB |
|---|---|---|
address | Full street, matches GBP | Only what you are willing to show; do not invent a lobby |
areaServed | Optional extra | Required in practice — list the cities on the page |
openingHoursSpecification | Door hours | Dispatch / office hours you will honor |
url | That location’s page | That service-area page, not a national homepage |
geo | Pin of the door | Do not drop a residential pin you asked Google to hide |
Validate the JSON-LD. Then read the page out loud. If the two disagree, the markup is wrong.
How do Maps pins and embeds fit into the public record?
The pin is a public claim. Google lets you enter a complete street address, include suite and floor data, and pin the map when the geocoder cannot find you. Landmark-only addresses (“across from the park”) are the wrong pattern. The address on the profile is public unless you are a service-area business and you turn that display off (Google: manage your business address).
| Embed / pin choice | Use it when | Failure mode |
|---|---|---|
| GBP pin on the door | Storefront or hybrid with signage | Pin in the parking lot of a different tenant |
| Site embed of the GBP place | You want the same place ID on the page | Embed of a generic city, not your place |
| No public pin | SAB; you hid the address | Site embed of the owner’s house |
| “Get directions” to a landmark | Last-resort regions without a street number | Replaces a real address you already have |
- Open the business on Google Maps as a customer, not as the owner dashboard
- Confirm the pin, the hours, the phone, and the website
- Confirm the site embed points at that same place
- If you are an SAB, confirm the address is hidden and the service area is the list you meant
A Maps embed of the wrong suite is a second NAP. Treat it like a listing.
How do multi-location and franchise brands keep entities from colliding?
Each location needs a clear entity relationship to the parent brand. Do not reuse one phone number everywhere if numbers differ in the real world. Corporate can own the parent Organization; locations own LocalBusiness pages. Conflict between the two is a common hallucination source.
Google wants a complete, accurate profile per place, a shared primary category across locations of the same business, and a website URL that represents that individual location (Google: representation guidelines; Google: edit your Business Profile; Google Search Central: LocalBusiness).
| Layer | Corporate owns | Location owns |
|---|---|---|
| Name | Brand rules (punctuation, suffix, “of City” pattern) | The string on that door |
| Phone | Formatting rules | The line that rings that shop |
| Hours | Holiday calendar template | The grid that shop will honor |
| Services | The national menu | The subset that shop can perform |
| Photos | Brand standards | Photos from that site |
| Reviews | Reply voice guide | The actual reply, on time |
Franchise and roll-up brands: publish a fact packet per location plus brand-level rules so AI does not invent hours. National voice that a location cannot fulfill is how Saturday callers arrive at a locked door.
- Every location has its own page and its own profile
- No shared tracking number set as the public primary on five shops
- Schema
urlpoints at that location, not the national homepage - A location that closed has a dated closed notice, not a zombie profile
Closed-but-listed locations are identity landmines. So are unclaimed listings with the wrong category. Claim them even if you never post updates.
Which leftover listings still teach the old phone number?
Build a tracking sheet of the top local directories and data aggregators that matter in your vertical. Columns: URL, NAP snapshot, category, last verified, fix status. Wrong phone numbers on legacy directories still feed AI answers years later because Google and everyone else still crawl them (Google: how it sources Business Profile info).
Prioritize cleanup where:
- The directory ranks for your brand name
- The directory appears in your AI citation log
- The listing is claimed and editable
| Priority | Example | Action this week |
|---|---|---|
| P0 | GBP, Apple Business Connect, Bing Places, the site footer | Make them identical |
| P1 | Listings that rank for the brand query or show up in AI citations | Claim and correct |
| P2 | Vertical directories (home-services, medical, legal) | Correct or request removal |
| P3 | Chambers, sponsors, “preferred vendor” pages | Email the webmaster with the NAP card |
| Parked | Uneditable scrapers | Outcompete with owned pages; do not obsess |
Unclaimed listings with wrong categories are identity landmines — claim them even if you never post updates.
- Dump the top 15–20 URLs into the sheet
- Fix the worst three mismatches the same day
- Note the date. Re-check those three in 14 days
- Do not declare the corpus clean because GBP looks right
GBP is the front door. It is not the whole house.
How do you run a local prompt panel without vanity screenshots?
Log citations the way you would log any other AEO program. Google now gives site owners a Generative AI performance view in Search Console for impressions inside AI Overviews, AI Mode, and related surfaces (Google Search Central Blog: generative AI performance reports). That is useful. It is not a substitute for reading the sentence an answer engine said about your shop.
Local prompt shapes worth running monthly:
- “Best [service] in [city]”
- “[Service] near [neighborhood]”
- “Emergency [service] [city] open Saturday”
- “Who does [specialized job] in [county]?”
- “Is [Your Brand] good for [service]?”
- “Where is [Your Brand] located?”
- “Does [Your Brand] serve [out-of-territory city]?”
| Metric | What it tells you | What it does not tell you |
|---|---|---|
| Map-pack screenshot | You are visible on Maps for that query | Chat named you, or named you correctly |
| Search Console generative AI impressions | Google used a URL in an AI feature | The answer had the right hours and cities |
| GBP calls and direction requests | Humans acted on the profile | The model recites your facts |
| City-page form fills | The page converts | You are in the shortlist |
| Prompt-panel citation + accuracy | Whether you were named, and whether the facts were right | Tomorrow’s run |
Track:
- Local prompt citation rate (named / not named)
- Accuracy of hours, services, and cities in the answer
- GBP actions as supporting context
- Form fills from city pages
Do not declare victory from map-pack screenshots alone when chat still omits you.
- Ten local prompts exist in a sheet with date, product, and verbatim answer
- Someone owns the monthly re-run
- Wrong facts get a source hunt, not a shrug
- Out-of-territory prompts are in the panel on purpose
An answer that names you for a city you do not serve is not a win. It is a ticket.
What breaks when city pages and sales territory disagree?
The failure mode is simple. Marketing publishes coverage. Dispatch declines the job. The customer writes the review. The next model quotes the review.
| Break | What it costs | What you do instead |
|---|---|---|
| City page for a town sales will not book | Drive time, a bad review, a shortlist you cannot fulfill | Delete or noindex the page; say “we do not serve X” on the FAQ |
| GBP service area wider than the page | AI says yes; the CSR says no | Shrink the service area to the honest list |
| “24/7” on ads, 8–5 on Maps | After-hours rage | One grid, everywhere |
| SAB with a public house pin | Strangers at a residential door; a fake storefront in chat | Hide the address; remove the embed |
| Franchise national hours on a local page | Saturday callers at a locked door | Location-level hours, even if the brand kit is prettier |
| Call-tracking number as the only public phone | Aggregators copy the tracking line; it dies with the campaign | One primary; tracking is labeled |
Seasonal verticals (HVAC, landscaping, tax) see question spikes. Pre-write and refresh seasonal FAQs before the season, not during the outage. Keep last season’s accurate claims. Remove temporary promotions that died.
Voice-search phrasing is just spoken FAQ. “Who can fix my ice machine tonight in this city?” belongs on the page as a real answer, including “we do not dispatch after 8.”
Never publish cities, emergency claims, or certifications you cannot honor on a busy Thursday. Local AI answers amplify promises. Broken promises become reviews, and reviews become the next model’s evidence. Accurate boredom scales. Inventive coverage does not.
What does a 30-day local AEO sprint actually include?
A month is enough to lock the owned layer and start the residue hunt. It is not enough to “finish local SEO.”
| Window | Work | Done when |
|---|---|---|
| Days 1–7 | NAP audit, GBP cleanup, baseline local prompts | Sheet exists; worst three mismatches fixed; ten prompts logged |
| Days 8–16 | Rewrite the top three service or city pages answer-first; ship LocalBusiness schema that matches the page | Pages live; JSON-LD validates; visible NAP matches |
| Days 17–23 | Review ask that names service + city; claim leftover listings; reply to open Q&A | Three new specific reviews requested; P0/P1 listings claimed |
| Days 24–30 | One local corroboration (chamber, partner page, or press); re-run prompts; write down what changed | Second prompt log; one owned fact that moved |
- NAP matrix across top listings
- GBP services = site services
- LocalBusiness JSON-LD validated and visible-true
- Priority city/service pages live
- Review ask includes service + city
- Local prompt panel logging
- Geography and core services stated in
llms.txtif you publish one
Week one should be almost aggressively practical: matrix, three fixes, one page rewrite, five prompts, three review asks. Repeat the kit after a move, a rebrand, or a territory change. The cost of re-baselining is tiny compared with a quarter of unmeasured pages.
If you need a second pair of eyes, the visibility lane exists for that reason: /visibility. Either way, ship the ritual before you buy another dashboard logo.
Who on the crew owns the facts after week one?
Techs, office managers, and CSRs influence local AEO every day through review asks, GBP posts, and how they describe services on the phone. Give them a one-page cheat sheet: official service names, cities served, what not to promise, and the link to leave a review. When staff improvise nicknames, those nicknames leak into reviews and then into AI answers.
| Role | Owns | Must not freelance |
|---|---|---|
| Owner / GM | The NAP card and the territory list | A new city “just to see if we rank” |
| Office / CSR | Review asks, Q&A, hours exceptions | “We’re probably 24/7” |
| Marketing | Pages, schema, listing sheet, prompt panel | Doorway city URLs sales will not honor |
| Techs | Job photos (with permission), specific review asks | Invented certifications on the truck |
Hold a 20-minute quarterly huddle on “what AI is saying about us” using two or three prompt results. People remember better when they see the weird wrong answer with their own eyes.
Name an owner on the sheet. When someone goes on leave, transfer the ritual explicitly — AEO dies in the handoff gaps. Keep the fact packet nearby whenever you edit Google Business Profile. Document the change so the next person knows why a sentence exists.
Institutional memory is part of AEO operations. When in doubt, re-run the related prompts and keep the receipts beside the content diff.
FAQ
What is local AEO for service businesses?
It is optimizing entity facts, local pages, profiles, and reviews so AI systems recommend you for geographic buyer questions — alongside classic local SEO. Maps still matters. The extra work is making NAP, service-area language, and proof consistent enough that a shortlist can name you without inventing hours or a storefront.
How do I show up in AI local answers?
Align NAP across the site and Google Business Profile, write honest service-area pages, mark up LocalBusiness so it matches visible facts, earn reviews that mention the real service and city, and measure with a local prompt panel. Keep the profile complete; Google already treats incomplete info as weaker local visibility and tells you to keep Business Profile data current for AI features.
Does ranking in the map pack guarantee AI citations?
No. Strong Maps presence helps because the same profile facts feed Search, Maps, and Google’s AI features, but chat shortlists often use a wider page-and-listing mix. Treat both as required. A pack screenshot with a silent chat log is an incomplete baseline.
Should every city get a page?
Only cities you serve and can describe honestly. Quality beats a hundred spun URLs. If dispatch will not book the town, do not publish the page to occupy a prompt — the review will become the next model’s evidence.
How do home-service brands avoid hallucinations?
Lock the fact packet (areas, hours, services), hide SAB addresses you do not staff, fix leftover listings, and chase wrong citations. See avoiding AI-hallucinated brand facts for the leftover-source loop after a move or a rebrand.
Is digital PR relevant locally?
Yes. Local news, trade associations, chambers, and partner vendor pages are corroboration when the owned layer already agrees. They will not rescue a profile that still shows last year’s phone. Fix NAP first, then earn the mention.
CTA
Local buyers ask AI out loud. Give the machines one business to recommend: identical NAP, a clean Maps profile, and pages that state what you actually do.
For the full visibility system, read the AEO playbook. Spurlock Studios baselines local citation readiness in visibility audits — /visibility or book an audit.
What questions does this article answer?
- What is local AEO for service businesses?
- It is optimizing entity facts, local pages, profiles, and reviews so AI systems recommend you for geographic buyer questions — alongside classic local SEO. Maps still matters. The extra work is making NAP, service-area language, and proof consistent enough that a shortlist can name you without inventing hours or a storefront.
- How do I show up in AI local answers?
- Align NAP across the site and Google Business Profile, write honest service-area pages, mark up LocalBusiness so it matches visible facts, earn reviews that mention the real service and city, and measure with a local prompt panel. Keep the profile complete; Google already treats incomplete info as weaker local visibility and tells you to keep Business Profile data current for AI features.
- Does ranking in the map pack guarantee AI citations?
- No. Strong Maps presence helps because the same profile facts feed Search, Maps, and Google's AI features, but chat shortlists often use a wider page-and-listing mix. Treat both as required. A pack screenshot with a silent chat log is an incomplete baseline.
- Should every city get a page?
- Only cities you serve and can describe honestly. Quality beats a hundred spun URLs. If dispatch will not book the town, do not publish the page to occupy a prompt — the review will become the next model's evidence.
- How do home-service brands avoid hallucinations?
- Lock the fact packet (areas, hours, services), hide SAB addresses you do not staff, fix leftover listings, and chase wrong citations. See [avoiding AI-hallucinated brand facts](/blog/avoiding-ai-hallucinated-brand-facts) for the leftover-source loop after a move or a rebrand.
- Is digital PR relevant locally?
- Yes. Local news, trade associations, chambers, and partner vendor pages are corroboration when the owned layer already agrees. They will not rescue a profile that still shows last year's phone. Fix NAP first, then earn the mention.
- support.google.com
- developers.google.com
- developers.google.com
- support.google.com
- developers.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- support.google.com
- developers.google.com
- developers.google.com
- schema.org
- developers.google.com
- schema.org",
- example.com
Last reviewed — Google Business Profile NAP, address, service-area, category, hours, reviews, photos, local-ranking, and sourcing docs; Search Central LocalBusiness schema, AI features, and AI-optimization guidance checked 2026-08-16.
AI Visibility
AI Visibility How do I get cited by Perplexity specifically
Allow PerplexityBot, put a liftable answer and unique numbers in HTML, then log numbered sources on a frozen prompt panel. There is no bought citation rate.
AI Visibility What belongs in an AI visibility monthly retainer vs a one-time audit
A one-time audit is the baseline plus prioritized fixes. A monthly retainer is prompt-panel tracking, entity hygiene, page jobs, and citation recovery.
AI Visibility Does Wikipedia or Wikidata help AI recommend my brand
Wikipedia is not a paid AI lever. Notability plus independent sources decide the page; a real Wikidata item helps entity consistency, not a promotional stub.
AI Visibility What is share of voice in AI answers, and how do I measure it
Share of voice in AI answers is your mention and citation slice versus a frozen competitor set on a frozen prompt panel, split by engine — not classic SEO SOV.
Will's Journal in your inbox.
What I learned this week building for shops, floors, and houses.
You're on the list.
Sign-up failed — try again.
By subscribing, you agree to the Privacy Policy.