Local & Industries · 9 min read · September 24, 2026 · Hafsa Tariq, gaash.ai
How to get your salon recommended: the fix order, start to finish
Work in the order each step depends on. Take a first reading, check that a crawler can read the site, settle one name, address and phone, put the menu on a page as text, give each specialty and each stylist a place of their own, state the hours and booking terms, then add markup, reviews and answered questions, line up your listings, and read the same questions again. Nothing here guarantees a place in an answer.
What order should a salon fix its site in?
Each step makes the next one worth doing. A HairSalon node with the wrong phone number states a wrong fact with confidence. A review quoted on a page no crawler can fetch is read by your visitors and nobody else. So the sequence starts with access and identity, which are quick and unglamorous, and ends with measurement, which is how you learn whether any of it moved an answer. What each page has to state is summed up in the guide for hair salons; this is the order to do it in.
- Take a first reading of the questions your clients ask, so later readings have something to be compared with.
- Check that a crawler can fetch the site and that the menu is in the HTML.
- Settle one salon name, one address with the suite, and one main number.
- Put the service menu on a page as text, with prices and times.
- Give each specialty you want to be named for a page of its own.
- Name the stylists: what each does, the days they work, how to book them.
- State the hours by day, the walk-in policy, the booking terms and the directions.
- Mark up the salon as a HairSalon, with Service and Person nodes that repeat the pages.
- Quote the reviews that name a stylist and a service, and write the front desk's questions as headings with answers.
- Bring the Google Business Profile, the booking app and the directories into line with the site, then read the same questions again every month.
Before you change anything: a reading and a crawler check
Take the reading first. Put the questions your clients ask to ChatGPT, Claude, Gemini and Perplexity and write down who is named; AI visibility for salons sets out which questions to use and what to record. Without a before, nothing that follows can be shown to have worked.
Then find out whether an AI crawler can read the site at all. The crawler access check reads your robots.txt the way each AI crawler does. The tokens that matter for being cited are the answer-side ones, such as OAI-SearchBot, which OpenAI's crawler documentation names as the crawler that indexes pages for ChatGPT search. Then open a service page with scripts turned off and see whether the menu is still there.
Our crawl shows why this step goes first. Of the 9,483 small business websites in our audit, crawled across 40 trades and 90 metros in the US, Canada, Europe and the UAE between late August and early September 2026, 7.2% served our crawler a bot-protection challenge page instead of the site. 3.2% disallowed AI crawlers in robots.txt on purpose, 3.0% rendered their content only in JavaScript, and 2.1% kept their real content, the price list or the service menu, in a PDF. Like every figure on this page, they cover the whole sample, not salons alone.
Each has a salon version: a security setting at the host that nobody chose, a menu drawn by a booking widget, a price list uploaded as a PDF or a photo. Fix whatever the check turns up before touching anything else, because a page nothing can fetch hides every later step.
One salon, one address, one number
Pick one form of the salon's name and use it everywhere: the footer, the page titles, the booking app, the Google Business Profile, the sign over the door. "[Name]", "[Name] Hair" and "[Name] Salon and Spa" are three names to a machine comparing strings. Pick one address, suite included, and one main number, and put all three in text in the footer of every page, so that every page describes the same entity.
Across the whole sample, 43.1% of sites were inconsistent about who and where they are across their own homepage, contact page and about page. 36.9% published more than one phone number, and 34.1% had no postal address a machine could parse.
A salon has plenty of places for a second version of its name to hide: a booking profile opened under an old name, a Google Business Profile with the neighborhood added to the name, an Instagram handle standing in for the name on the homepage, a previous location still described on the about page. Correct or remove each one. A good hairdresser near me goes deeper on the address, the phone numbers, the neighborhood names and the hours.
The menu, the specialties and the stylists
Put the whole menu on a page as text: each service under the name clients type, a price or a starting price with what moves it, and the time it takes. A menu that exists as a photo, a PDF or only inside the booking app leaves your own site with nothing to say about what you sell or what it costs.
Then write a page for each specialty the salon wants more of: balayage, curly cuts, extensions, color correction, or whichever yours are. What goes on each page, from what the service is to how the photos are captioned, is in the article on specialty pages.
Then the stylists, each with a section or a page: the name as clients say it, what they do best, the days they work, how to book them, and a photo. Some clients ask for a person ("who is the best colorist near queen west"), and a stylist your site never names leaves that question to pages you do not control. Get each stylist's agreement before they go on the site, and take them off on the day they leave.
What to state, and where it goes
Every fact a client asks about has one home on the site and, where schema.org has a property for it, one place in the markup. The markup column repeats the page. It never carries a fact the page does not show.
| What to state | Where it goes | In the markup |
|---|---|---|
| The salon's name, address with suite, and main number | The footer of every page, and the contact page | name, address and telephone on the HairSalon node |
| The neighborhood and how to get there | One sentence on the homepage and the contact page; parking and transit under the address | geo on the HairSalon node |
| Hours by day, the last appointment, holiday hours | The contact page and the footer | openingHoursSpecification |
| Walk-ins and booking terms | Beside the booking link: how to book, the deposit, the cancellation window, what needs a consultation | No property; text on the page |
| The service menu, with prices and times | A services page, in text | priceRange on the salon; an Offer on each Service |
| Each specialty | A page of its own | A Service node with serviceType and provider |
| Each stylist | A section or a page: what they do, their days, how to book them | A Person node for each |
| Reviews that name a stylist and a service | The stylist's section and the page of the service they mention | None for reviews copied from a platform; the quote itself is the signal |
| The questions the front desk answers | Headings on the pages they belong to, with the answer under each | None needed |
| Your profiles elsewhere | The footer | sameAs on the HairSalon node |
The questions row needs no markup. Google limited the FAQ rich result to government and health sites in August 2023 and retired it on May 7, 2026, so a salon's FAQ markup earns no special display in Search. The heading and the answer under it are what a reader, human or machine, uses, and they do that job without any markup at all.
Markup, reviews and questions come after the pages
With the pages written, the markup is a transcription. The salon is a HairSalon, one of the subtypes in schema.org's LocalBusiness tree, written as JSON-LD with the properties Google's local business documentation lists: name, address, telephone, opening hours, geo, priceRange. This skeleton shows the shape; the bracketed values are yours, and each must match what the pages say.
{
"@context": "https://schema.org",
"@type": "HairSalon",
"name": "[the name exactly as in your footer]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[street and number], [suite]",
"addressLocality": "[city]",
"addressRegion": "[state or province]",
"postalCode": "[postal code]",
"addressCountry": "[country code]"
},
"telephone": "[the one main number]",
"geo": { "@type": "GeoCoordinates", "latitude": "[latitude]", "longitude": "[longitude]" },
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification", "dayOfWeek": ["[day]", "[day]"], "opens": "[time]", "closes": "[time]" },
{ "@type": "OpeningHoursSpecification", "dayOfWeek": "[late evening]", "opens": "[time]", "closes": "[late closing]" }
],
"priceRange": "[as your menu page states it]",
"sameAs": ["[your Instagram profile]", "[your Google Business Profile]"]
}Reviews come next, because a quoted review is only useful once the page can be read and the salon is unambiguous. Choose the ones that name a stylist and a service, quote them as text with their source, and keep them out of the markup: Google's review snippet rules say not to aggregate reviews from other websites, and a salon earns no review stars for reviews of itself on its own site. Which reviews to choose, and how to ask for more, is in the article on salon reviews.
Then the questions. Write the ones your front desk answers every day as headings in the client's words, with the answer in the sentence under each: do you take walk-ins, can I bring my child, do you do consultations from photos, is there parking. Put each on the page it belongs to rather than in one long list at the bottom of the homepage.
Your listings follow the site, and then you measure
Only now bring the rest of the web into line: the Google Business Profile, the booking app's listing, and the two or three directories your area uses. Google's guidelines for the profile ask for the real name, the real address, the categories that fit and accurate hours, which is the set of facts your footer now carries. Copy from the site to the listings, never the other way round; the article on Google Business Profiles goes through it field by field.
Then take the same reading as the first, with the same questions, a month after the changes and every month after that. One benchmark study supports the idea that what a page says can move a generated answer: Aggarwal et al. (KDD 2024) found that source-side changes such as adding citations, quotations and statistics raised a source's visibility by up to about 40% on their benchmark. That is evidence about the mechanism, not a promise about your salon. Your own readings are the evidence that counts for you.
Common questions
We have one afternoon. What should we do first?
Run the crawler access check, then make the salon's name, address with the suite, and main number identical on every page and in the footer. Both are quick, and every later step relies on them. If time is left, move the menu out of the PDF or the photo and onto a page as text, with a price or a starting price and a time for each service.
Our site is on a website builder. Can we do this without a developer?
Most of it. The address, the hours, the menu, the specialty pages, the stylist sections, the reviews and the questions are text you can edit in the builder. The markup is the part that may need help, depending on whether the builder lets you add code to a page; a developer can add it once and update it when the facts change. Whoever does it, the markup has to match the pages.
Will all this get our salon recommended by ChatGPT?
It takes away the reasons an assistant would have to leave you out; it cannot put you in. Nobody outside the companies that run the assistants controls their answers, and a promise of placement is a promise nobody can keep. What you can do is make the facts readable and consistent, then ask the same client questions each month and see whether the answers move.
Should we do this ourselves or pay someone?
Do it yourselves if someone on the team can give it a few afternoons and keep the facts current afterward. The AI Visibility Audit ($490, delivered within a week and credited in full against optimization) lists the gaps and puts them in order for you, and GEO Optimization (from $1,900; the audit sets the scope) does the work. The free check shows where you stand either way.
Sources
The percentages are this site's own, from the audit named below, and cover all 40 trades in it; no salon-only figure is published. The 40% is from the Princeton paper's benchmark and describes the mechanism, not any business. Everything said about crawler tokens, markup and profiles comes from the documents linked where each is used.
Sources: our audit of 9,483 small-business sites, with its method · OpenAI, crawler documentation · schema.org, LocalBusiness and its subtypes · Google, local business structured data · Google, review snippet · Google Search Central blog, changes to FAQ rich results · Google Business Profile guidelines · Aggarwal et al., GEO: Generative Engine Optimization (KDD 2024) · Google Search Central, documentation updates
Read on