Med spa SEO is the work of getting your practice shown when someone nearby searches for a treatment, in Google results, in the Maps pack and in AI answers. It rests on two things: a strong local profile (Google Business Profile, reviews, one consistent business name) and pages on your own site for every treatment, its cost and the towns you serve. Most med spas have the first half partly done and the second half barely started.

This guide is what we build and fix for med spas, in the order we do it. The examples come from work we did for Elume Medspa in Fairfax, Virginia, in August and September 2026, including the parts that took longer than expected.

Key takeaways
  • Give every treatment its own page, with a location in the title and a real price on the page.
  • Cost pages get quoted by AI search. In our first AI prompt test, the Morpheus8 cost prompts cited the practice on every engine that answered.
  • City pages are fine if each one is genuinely local. Ours share zero sentences over 40 characters across all 28 page pairs. Indexing them still took weeks.
  • Use one business name everywhere, mark up your business as a MedicalBusiness, and don't mark up your own review stars.
  • Check that AI crawlers can actually fetch your pages. Allowing them in robots.txt is not proof.

How med spa SEO works: two kinds of searches

Different searches are answered from different places, so they need different work.

  • "Med spa near me" and "med spa [city]" are answered mostly from the local graph: your Google Business Profile, your reviews and how consistently your business appears across the web. Your website helps, but it isn't the main lever.
  • "Morpheus8 in [city]" and "how much is Morpheus8 near me" are answered from pages. Google and AI tools pull a passage from a page that answers the question. That is entirely on-site work, and it's where a small practice can beat a bigger one.

The head term is the hardest to win. In a September 2026 test of 15 prompts for Elume, generic "med spa fairfax" prompts didn't name the practice on any engine, while the treatment cost and location prompts did. Start with the searches you can win.

Build one page per treatment, with the city in it

A single "Services" page listing 20 treatments can't rank for any of them. Each treatment people search for needs its own page. When we first audited Elume's site, 21 of its 23 treatment pages had no location anywhere, so nothing told Google they were relevant to Fairfax.

A treatment page that ranks usually has:

  • A title like "Morpheus8 in Fairfax, VA | Practice Name", under 60 characters, unique across the site.
  • A plain answer in the first two sentences: what it is, who it's for, and that you offer it in your town.
  • The price, or a "from" price, and what changes it (area treated, number of sessions).
  • Sessions, downtime and aftercare, in wording your medical director has approved. Don't edit risk or side-effect language without sign-off.
  • Correct FDA wording. Energy devices like Morpheus8, lasers and BBL are FDA-cleared through the 510(k) process, while drugs such as botulinum toxins are FDA-approved. The FDA's 510(k) page explains the difference. Don't call a cleared device "FDA-approved."
  • A Book button on the first phone screen that opens the booking page for that treatment, not a generic contact form.
  • Four to six real questions clients ask at consults, answered in two or three sentences each.

Write for the person deciding, not for a keyword tool. "Morpheus8 vs microneedling" and "how many sessions of Morpheus8" are better section headings than a keyword repeated five times.

"How much is [treatment] near me" is one of the most common questions people ask Google and ChatGPT about aesthetics, and most med spa sites refuse to answer it. A page that does answer it, plainly, becomes the passage AI tools quote.

From our work: We ran a 15-prompt test for Elume Medspa on September 17, 2026 across ChatGPT, Perplexity and Google. The Morpheus8 location and cost prompts named and cited the practice on every engine that answered, quoting the prices on its Morpheus8 cost page word for word and linking to that page. The same test found the practice absent for the generic "med spa fairfax" prompts.

How to build a cost page that gets quoted:

  1. Put the number in the first sentence. "Morpheus8 at [practice] costs $X for the face, or $Y for face and neck." AI tools lift the opening passage.
  2. Add a small table of areas and prices, and say what's included (numbing, follow-up).
  3. Explain what changes the price: area, number of sessions, packages.
  4. Date it ("Prices as of October 2026") and update it when prices change. A stale price that an AI tool repeats is worse than none.
  5. Make sure the price on the page matches every other surface: your booking platform, your Google profile and any ad. We once found a forgotten booking storefront still offering a treatment at a fraction of its real price.

If you don't want to list exact prices for injectables, a "from" price and an honest explanation of how dosing changes cost still answers the question better than "call for pricing."

City pages without doorway spam

Most med spas draw clients from several nearby towns, and a page for each town can help. It can also get you in trouble. Google's spam policies list "multiple domain names or pages targeted at specific regions or cities that funnel users to one page" as doorway abuse. A set of pages that swap the town name into the same template is exactly that.

The test we use: would someone from that town learn something from this page that they wouldn't learn from your homepage? If not, don't publish it.

From our work: Elume's schema claimed it served 9 Northern Virginia cities, with no content behind any of them. In August 2026 we published 8 city pages, 600 to 1,100 words each. We compared every pair of pages (28 pairs) and found zero shared sentences longer than 40 characters. The local content is specific: real driving routes and times checked with a routing tool, and links to two or three neighboring city pages. We left out prices, testimonials and any claim we couldn't support for that town.

It isn't perfect. Reviewing the set later, we noted that three of the eight still read as the most interchangeable of the group.

How to write a city page that isn't a doorway

  • Directions and drive time from that town, at the times your clients actually come in. "About 15 to 20 minutes up Route 123, no Beltway" is useful. "Conveniently located" is not.
  • Which treatments people from that town tend to ask about, only if it's true.
  • Parking, transit and nearby landmarks relevant to that route.
  • Different structure and wording on each page. Write each one from scratch.
  • Check the overlap. Split each page into sentences and compare every pair. With 8 pages that's 28 pairs. Any sentence that appears on two pages should be rewritten or cut.

Expect indexing to take time

Several weeks after launch, only 1 of the 8 pages was indexed. Our read was that Google wasn't crawling the site often enough, not that it judged the pages low quality. The pattern was clear: every URL we submitted through Request Indexing in Search Console's URL Inspection tool was crawled and indexed within days (10 of 10), and every URL we never requested stayed discovered but not indexed.

So request indexing on the day you publish. Google's recrawl documentation says there's a quota, and that a request doesn't guarantee indexing. In our experience the quota is about 10 URLs a day, so spread a batch of city pages over a few days.

Google Business Profile: the local half

For "near me" searches, your Google Business Profile does more than any page on your site. The basics:

  • Name: your real business name only. Google's profile guidelines require the name used "consistently on your storefront, website, stationery," and ban adding keywords or locations. "[Name] Med Spa Botox Fillers [City]" risks suspension.
  • Categories: one accurate primary category, plus secondary categories for services you really offer. Look at what the top-ranking practices near you use.
  • Services and prices that match your website.
  • Booking link pointing at your real, current booking page.
  • Hours that match your site and booking calendar, including holidays.
  • Photos of your actual space and team, added regularly. No before-and-after photos you don't have consent for.

Our Google Business Profile guide goes through every field.

Reviews: volume and recency, asked for the right way

Reviews feed the local ranking and they're the first thing a new client reads. What matters is a steady flow of recent reviews, not a burst once a year.

Two rules from Google's review policy trip med spas up: you can't selectively ask only happy clients (review gating), and you can't offer discounts or freebies in exchange for a review.

The setup we built for Elume sends every client on its email list a message at about 7 PM the evening of their visit, with one button that goes straight to the Google review form and a "reply or call us" path if something went wrong. Nobody is filtered out based on how the visit went, and the front desk asks everyone else in person. Our guide to getting more Google reviews has the details and scripts.

Use one business name everywhere

This sounds trivial and it isn't. If your profile says "[Name] Medspa," your site says "[Name] Med Spa" and your store says "[NAME] Medical Spa," Google and AI tools have to guess whether those are the same business.

Elume's name was spelled differently across Google, the website and the online store. We aligned it to one spelling on August 28, 2026, which meant changing 3,116 rendered occurrences on the website and 3,862 on the store. We left historical records and URL slugs alone, because changing slugs breaks links for no gain.

Do the same check for your address and phone number. Our first audit also found an old street address still on the contact page.

Schema for med spas: what to mark up, and what to leave out

Schema (structured data) tells search engines what your pages are about in a format they don't have to guess at. For a med spa:

  • One organization node, typed as MedicalBusiness, which is a subtype of LocalBusiness on schema.org. There is no "MedicalSpa" type. Include name, address, phone, hours, geo coordinates, areaServed and sameAs links to your profiles. Use the same node on every page instead of letting each plugin output its own.
  • MedicalProcedure or Service on each treatment page, with an offer and price where you publish one.
  • areaServed that matches real pages. Don't claim cities you have nothing to say about.
  • FAQ markup only where the questions and answers match the visible text exactly. Treat it as help for machines reading the page, not a route to rich results.

Why we don't mark up your review stars

Many review widgets inject aggregateRating markup for your own business. Google's review snippet guidelines say that when a business controls reviews about itself, its LocalBusiness or Organization markup is ineligible for star ratings, including reviews pulled in by widgets. So the stars won't show, and the extra markup often creates a second, competing business entity. On Elume's site we strip the widget's business and rating markup, and we never show ratings on products with zero reviews.

Watch out: Many online SEO and "AI audit" tools read a text version of your page that drops JSON-LD. They then report "no schema found" and tell you to add markup you already have. Check schema with Google's Rich Results Test or the raw page source.

Let AI crawlers in, then check they actually get in

ChatGPT, Perplexity, Claude and others use their own crawlers. OpenAI's crawler documentation says sites that block OAI-SearchBot won't be shown in ChatGPT search answers. Google says AI Overviews need nothing beyond normal SEO, and that blocking Google-Extended doesn't affect Google Search.

Allowing these bots in robots.txt is step one. It isn't proof they can read your pages.

Elume's robots.txt allowed every major AI crawler, but 72 hours of server logs showed the host was answering many of them with an HTTP 429 "too many requests" error: 62.5% of GPTBot requests and 36.8% of ClaudeBot requests, while Googlebot and Bingbot were never throttled. GPTBot managed one successful page fetch in three days.

If you can get your host's access logs, check the status codes each crawler receives. Verify bots by IP range, not by user agent alone: we've seen one cloud server rotate 16 fake crawler names.

Mobile speed: what to fix and what to stop worrying about

Most clients find you on a phone. Google's Core Web Vitals target is the main content loading within 2.5 seconds. In our scan of 749 med spa websites, 37% of homepages weighed over 3 MB on a phone load, usually because of a hero slider or autoplay video.

The biggest problem on Elume's site at our first audit was a dull one: a 786 KB icon script loading on every page. After the August speed work, one treatment page went from a lab LCP of 10.4 seconds to 2.35 seconds on mobile (median of three runs).

The honest caveat: small practices often don't get enough traffic for Google to report real-user speed data at all, and single lab runs swing widely. Measure page weight and request counts, take the median of several runs, and stop once your pages are light. Past that point, your time is better spent on content.

What to do first

  1. Fix your business name, address, phone and hours so they match everywhere.
  2. Complete your Google Business Profile and set up an automatic review request after every visit.
  3. Rewrite your top three treatment pages with the city in the title, a price and a Book button on the first screen.
  4. Publish a cost page for your highest-value treatment.
  5. Add MedicalBusiness and treatment schema, and remove self-serving rating markup.
  6. Check robots.txt and your server logs for AI crawler access.
  7. Add city pages only for towns you can write something genuinely local about, and request indexing the day each one goes live.

Most of this is work you can do yourself. If you'd rather hand it off, our SEO and AI search service covers the technical half.

Frequently asked questions

How long does med spa SEO take to work?

Fixes to your Google Business Profile and existing pages can show up within weeks. New pages take longer: on a young or lightly crawled site, Google may take weeks to index them, and ranking for competitive treatment terms usually takes a few months of steady work.

Can I mention Botox and Juvederm on my website?

For organic search, yes, and patients search those names. The catch is Google Ads: Google checks landing pages for restricted prescription-drug terms too, so a page full of brand names can limit or block ads pointed at it. Many practices keep brand names on organic treatment pages and send ads to pages written in generic terms. See our Google Ads guide for med spas.

Do I need an llms.txt file for AI search?

No. Google says AI Overviews and AI Mode need no special files or markup beyond normal SEO. We still add a short llms.txt for some clients because it is cheap to maintain, but robots.txt access, crawlable text and clear prices matter far more.

Should I hire a med spa SEO agency or do it myself?

If you can write well and update your own site, you can do most of the on-page work in this guide yourself. Where an agency earns its fee is the technical side: schema, crawler access, indexing checks and measuring what is actually working. Our SEO audit checklist will show you which half you're missing.