Series: Getting Cited by AI — Post #6 (niche deep-dive: med spas & aesthetics). #1: Get Cited by ChatGPT → · #2: Why AI Recommends Your Competitor → · #3: Copy-Paste Schema Templates → · #4: Is Your Site Blocking AI Crawlers? → · #5: Reviews & AggregateRating →
A patient opens ChatGPT or Perplexity and types: "best med spa near me for Botox" or "where can I get a HydraFacial in [city]?" The assistant names three clinics, links two of them, and books a mental appointment. If your med spa isn't one of those three, you didn't lose on price or reviews — you lost because the model couldn't confidently read you.
This post is the general series (#1–#5) applied specifically to aesthetics clinics, because med spas have three quirks that make them especially invisible to AI: booking-widget homepages, service menus buried in images, and "before/after" galleries that say nothing a machine can quote.
Honest caveat first: doing everything below does not guarantee a citation, and there's no fixed timeline for when assistants pick changes up. What it does is remove the specific, fixable reasons a med spa gets skipped. No rankings or revenue are promised here — only that the machine can finally read what your front desk already knows.
The three reasons med spas go invisible
1. The homepage is a booking widget, not a page.
Most aesthetics sites lead with a full-screen "Book Now" embed (Vagaro, Boulevard, Mindbody, an iframe). That widget is great for humans and nearly empty to a crawler — the services, prices, and hours live inside a third-party script the model often can't read. The AI lands on your domain, finds a hero image and a button, and moves on.
2. The service menu is an image or a PDF.
"Botox $12/unit, Lip Filler from $650, Morpheus8 packages" — if that lives in a designed graphic or a downloadable price sheet, it's invisible as text. Answer engines quote text. A pretty menu the model can't parse is the same as no menu.
3. There's nothing answer-shaped.
Patients ask machines very specific questions — "how long does filler last," "is Botox safe while breastfeeding," "what's the downtime for a chemical peel." If your site never answers those in plain text, the model grabs the answer (and the citation) from a competitor or a generic health site instead of you.
None of these are ranking problems. They're readability problems — and readability is fixable in an afternoon.
The 10-minute med-spa visibility check
Run this on your own site before changing anything:
-
View source on your homepage (right-click → View Page Source) and Ctrl-F for one of your real services, e.g.
BotoxorHydraFacial. If it's not in the page text — only inside an iframe/widget — the crawler probably can't see it either. -
Find your services as plain text. Is there a real
/servicesor/pricingpage with typed-out treatments and at least price ranges, or is it all images/PDF? - Search the actual question. Open Perplexity and ask "med spa in [your city] for [your top treatment]" — are you named? Who is? Read their page; it's usually more text-readable, not fancier.
-
Check the schema. Paste your URL into any schema validator. Most med spas have either nothing or a generic
WebSitetag — notMedicalBusiness/HealthAndBeautyBusinesswith services and hours. - Check crawler access (see #4) — booking platforms and security plugins sometimes block AI user-agents by default.
Anything that fails is on the fix list below, roughly in priority order.
The fixes (highest leverage first)
Fix 1 — Put your service menu on the page as text
Create or rewrite a /services page where every treatment is a typed heading with a one-line plain-text description and a price or an honest range ("Lip filler from $650"). Keep the booking widget — just stop letting it be the only source of truth. This single change does more than any schema tag, because it gives the model something quotable.
Fix 2 — Answer the five questions patients actually ask
Add a short FAQ in real text — five questions, two-to-three honest sentences each. Pick the ones your front desk answers on the phone all day:
- How long does [Botox/filler] last?
- What's the downtime for [your top treatment]?
- Who performs the treatments (RN, NP, MD supervision)?
- How much does [treatment] cost?
- Is there a consultation, and is it free?
Plain, accurate answers. This is the content AI assistants love to quote because it is the answer.
Fix 3 — Add the right schema (copy-paste below)
Tell the machine, in its own language, what kind of business you are, where, when you're open, and what you offer. Med spas should use MedicalBusiness (or HealthAndBeautyBusiness) — not a generic LocalBusiness. Template in the next section.
Fix 4 — Make your reviews machine-readable
You almost certainly have real reviews on Google. Surface them as text on the site and, only if the numbers are true, mark them up (see #5). Real numbers only — a rating in your markup that doesn't match your public Google profile gets your whole markup discounted. Never invent a rating.
Fix 5 — Confirm the crawlers are allowed
If your booking platform or a security/SEO plugin blocks GPTBot, OAI-SearchBot, PerplexityBot, or ClaudeBot, none of the above matters. #4 walks the check.
Copy-paste schema for a med spa
Drop this in your homepage <head>, replacing every placeholder with your real values. Don't ship a field you can't verify — delete it instead of guessing.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalBusiness",
"additionalType": "https://schema.org/HealthAndBeautyBusiness",
"name": "YOUR MED SPA NAME",
"description": "Medical spa offering injectables, facials, and skin treatments in CITY, STATE.",
"url": "https://yourmedspa.com",
"telephone": "+1-555-555-5555",
"image": "https://yourmedspa.com/exterior.jpg",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main St",
"addressLocality": "CITY",
"addressRegion": "REGION",
"postalCode": "00000",
"addressCountry": "<your ISO country code, e.g. GB/AU/CA/SG/IN — don't ship unverified>"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 0.000000,
"longitude": 0.000000
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "16:00"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Treatments",
"itemListElement": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Botox / Neurotoxin" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Dermal Filler" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "HydraFacial" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Chemical Peel" } }
]
}
}
</script>
Pair it with an FAQPage block built from your five real answers (template in #3). Together they cover who/where/when/what and the questions patients ask — the two things assistants need to cite you with confidence.
A note on medical claims: keep service descriptions factual and avoid outcome guarantees ("erases wrinkles permanently," "100% safe"). Aesthetics advertising is regulated, and overclaiming is both a compliance risk and exactly the kind of unverifiable language models discount. Accurate beats impressive.
Priority order, if you only do three things
- Service menu as real text (Fix 1) — the model needs something to quote.
- Five-question FAQ in plain text (Fix 2) — match the exact questions patients ask AI.
-
MedicalBusiness+FAQPageschema (Fix 3) — label it so the machine is sure.
Everything else (reviews markup, crawler access) compounds on top, but those three are where an invisible med spa becomes a readable one.
FAQ
My booking widget already shows my services. Isn't that enough?
For humans, yes. For crawlers, usually not — the content inside a third-party widget/iframe often isn't read as your page's text. Keep the widget; add a plain-text services page beside it.
Do I need to publish my exact prices?
No. Honest ranges ("from $650") are fine and still quotable. The goal is readable text, not a public price war.
Will this get me into ChatGPT's answers?
It makes you eligible and readable, which is the part you control. No one can guarantee a citation or a timeline — anyone who does is overselling. This removes the fixable reasons you're skipped; pickup still depends on the assistant.
Is marking up reviews I don't really have okay if they're positive?
No. Real numbers only, matching your public Google profile. A mismatch discounts your entire markup. See #5.
Two ways to act on this:
🔎 Free, no-strings: send your site URL to faithpath25@gmail.com with the subject "GEO snapshot" — I'll send back a 1-page read of exactly what AI assistants can and can't currently see on your site, plus the specific fixes. Free pilot, wherever you operate; if it's useful, a short review is all I ask.
🧰 Do it yourself: the copy-paste schema kits, checklists, and the full GEO audit live at SprintLanding → (includes a free starter). Prices in USD; Gumroad converts to your local currency at checkout.
Top comments (0)