Schema markup for med spas: a copy-and-paste guide
By the FirstInChat team
Schema markup sounds technical. For a med spa it is a short block of code that tells search engines — and any tool that reads the open web — the plain facts about your clinic: name, address, phone, hours, and the treatments you actually offer.
You paste it once. Machines can read it without guessing from messy website text.
This guide is for owners and whoever updates your site. It uses clients / guests voice (not "patients," unless your regulated wording requires otherwise). It is not medical advice and makes no clinical outcome claims. Check your state advertising rules for medical / aesthetic services before you publish claims about results, reviews, or treatments. We are not giving legal advice.
Honest product note: FirstInChat's free audit today is a website readiness check plus a Google Gemini snapshot from built-in knowledge only (ungrounded: no live search; may be out of date; not AI Overviews or AI Mode). Grounded Gemini + Google Search comes later, with no date. We do not claim ChatGPT or Perplexity product results. Nobody can promise that any AI assistant will name your clinic.
Dental twin: Dentist schema markup. For the wider med spa budget question, see AI search vs local SEO for med spas.
What schema markup is (for a non-technical owner)
Schema is a shared vocabulary (schema.org) that websites use to label facts. The usual format on a page is JSON-LD: a small script tag that holds those facts in a structured list.
You still need a clear website. Schema does not replace good treatment pages, a tidy Google Business Profile, or real reviews. It reduces ambiguity when a tool tries to understand who you are and where you practice.
Think of it like writing your business card in a format computers already know how to file.
Why it helps machines understand your clinic
When someone asks an AI assistant for a med spa in your city, the system has to pull from sources it can parse. Clean, consistent facts (same name, same phone, same address across your site and listings) make you easier to identify.
Schema is one way to state those facts in a format machines already know how to parse.
Honest limit: nobody can promise that adding schema will make any AI assistant name your clinic. FirstInChat does not claim product coverage of ChatGPT, Perplexity, or Google AI Overviews. Schema is a control you own. Being named in an AI answer is not.
LocalBusiness / MedicalBusiness — pick one honest type
Med spas sit near both LocalBusiness and medical-leaning types such as MedicalBusiness (and related types on schema.org). In plain words:
- Choose one primary type that fits how your clinic is organized and licensed.
- Confirm the current type name and allowed fields on schema.org before you publish — types and guidance change.
- Only include fields that are true today and visible on your site.
- Prefer one clean block. Do not stack LocalBusiness and MedicalBusiness copies that disagree.
If a medical director or licensed injector is part of how guests choose you, say so accurately on the visible site first — then mirror those facts in schema. Do not invent titles. Not legal advice.
Name, address, phone, opening hours (NAP)
- name: The public clinic name guests search for.
- url: Your homepage.
- telephone: Main booking number, same format you use on Google.
- address: Street, city, region, postal code, country.
- openingHoursSpecification: Days and hours guests can call or visit. Keep them in sync with Google Business Profile.
Wrong hours in schema are worse than no schema. Update both places when you change them. NAP must stay consistent across your website, Google profile, and major listings.
Treatments / services you actually offer
List services you truly offer (for example neuromodulator consults, laser hair removal, Hydrafacial). Use plain service names — no clinical outcome promises in the labels.
If you name packages or memberships, only list ones that are live. Wrong service lists create angry guests and advertising risk. Check your state advertising rules. We are not giving legal advice.
sameAs links
Point to official profiles you control: Google Business Profile, Instagram, Facebook, or a directory listing you manage. Same URLs everywhere help machines connect the dots.
Ratings and reviews — what not to mark up
Do not invent aggregate ratings in schema. Do not mark up reviews you cannot back up on the page. If you are unsure, leave review fields out.
Fake or mismatched review markup is a common way to get ignored — or worse. For how reviews show up for humans and machines, see Do Google reviews affect AI search for med spas?.
Get your free AI visibility audit
A free website readiness check, plus a Google Gemini snapshot from its built-in knowledge only. No live web search, so it may be out of date. It is not Google AI Overviews or AI Mode. You get a readiness score and your top 3 fixes. No card.
Copy-and-paste example (fictional clinic — EXAMPLE DATA)
The clinic below is made up for teaching. Replace every value before you publish. This is EXAMPLE DATA, not a real office. The example uses MedicalBusiness; your clinic may correctly use LocalBusiness or another schema.org type after you confirm it — keep one honest primary type.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "MedicalBusiness",
"name": "Harbor Glow Med Spa (EXAMPLE)",
"url": "https://www.example-harbor-glow.com/",
"telephone": "+1-555-010-4400",
"image": "https://www.example-harbor-glow.com/images/clinic.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "400 Harbor Avenue",
"addressLocality": "Seattle",
"addressRegion": "WA",
"postalCode": "98101",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 47.6062,
"longitude": -122.3321
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "10:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "15:00"
}
],
"sameAs": [
"https://maps.google.com/?cid=EXAMPLE",
"https://www.instagram.com/example-harbor-glow"
],
"priceRange": "$$",
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Aesthetic services",
"itemListElement": [
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Neuromodulator consult" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Laser hair removal" } },
{ "@type": "Offer", "itemOffered": { "@type": "Service", "name": "Hydrafacial" } }
]
}
}
</script>
Paste this in the <head> of your homepage (or a site-wide header injection). One clean block is better than three conflicting copies on different templates.
Where to paste it
- WordPress: Theme header script, or a trusted SEO plugin's schema / custom-code box. Avoid stacking two plugins that each output LocalBusiness.
- Wix: Settings → Custom code → Head, site-wide.
- Squarespace: Settings → Advanced → Code injection → Header.
- Custom / developer site: Shared layout component on every public page, or at least the homepage and contact page.
If your site already outputs LocalBusiness or MedicalBusiness schema, edit that block instead of adding a second one.
How to test it
- Open Google's Rich Results Test and paste your live URL or the code.
- Open the Schema Markup Validator for a second opinion.
- Fix errors (missing
addressCountry, wrong types, trailing commas in JSON). - Recheck after your developer deploys. Staging and production can differ.
Both tools are free and public. Use your real homepage URL when you re-test after go-live.
FAQ schema for your Client Questions page
If you keep a page of real guest questions and short factual answers, you can add FAQPage schema on that page only. Each question and answer in the markup must match the visible text.
Do not mark up medical advice or clinical outcome claims you would not stand behind in writing. Link that page from your main menu so humans and crawlers both find it.
Full how-to: The Client Questions Page for Med Spas.
Never put client names, treatment chart details, or other private health information in schema, FAQs, or any public form.
A 20-minute monthly check
Once a month (or after any redesign):
- Compare schema phone, hours, and address to Google Business Profile (NAP match).
- Re-run the Rich Results Test after any redesign.
- Remove treatments or packages you no longer offer.
- Confirm
sameAslinks still resolve.
If you'd rather have the monthly fix list drafted for you, Autopilot ($99/mo) is the done-for-you path, and Monitor ($49/mo) is the DIY path. Also available: Pro, $199/mo, for up to 3 locations or more support. Plans coming soon. No card. No checkout.
What schema will not do
- It will not invent reviews you do not have.
- It will not fix a thin brochure site with no treatment pages.
- It will not guarantee a mention in any AI answer.
- It will not replace consistent NAP across directories.
Treat it as hygiene: clear facts, one source of truth, easy for machines to quote correctly. For the wider checklist of what you control, see How to get your med spa recommended by AI assistants. To spot-check visibility yourself, see How to check if AI mentions your med spa.
Frequently asked questions
Do I need a developer to add schema markup for my med spa? Often no. On WordPress, Wix, and Squarespace you can paste JSON-LD into a header or custom-code box. Have a developer help if you already have conflicting LocalBusiness or MedicalBusiness markup or a custom theme.
Should a med spa mark up star ratings in schema? Only if the rating is accurate, visible on the page, and you can stand behind how it was calculated. If you are unsure, leave ratings out. Invented review markup is a common mistake.
Which schema type should a med spa use — LocalBusiness or MedicalBusiness? Pick one primary type that fits how your clinic is organized and that matches facts guests already see on your site and Google profile. Confirm the current type on schema.org before you publish. Keep NAP identical everywhere. Prefer one clean block over two conflicting ones.
Will schema make ChatGPT or Perplexity name my med spa? Nobody can promise that. Schema makes your facts easier for machines to parse. FirstInChat does not claim product coverage of those assistants.
Can I invent treatments or credentials in schema for my med spa? No. Only mark up services, credentials, and hours that are true and visible on the page. Invented fields create trust and advertising risk. Not legal advice.
What does the free FirstInChat audit check today for med spas? Website readiness plus a Google Gemini built-in-knowledge snapshot that is ungrounded — no live search, may be out of date, not AI Overviews or AI Mode. It does not promise rankings or results.
Next step
Paste one accurate JSON-LD block (one honest primary type), test it with the Rich Results Test, confirm NAP matches Google, then run the free audit.
Get your free AI visibility audit
A free website readiness check, plus a Google Gemini snapshot from its built-in knowledge only. No live web search, so it may be out of date. It is not Google AI Overviews or AI Mode. You get a readiness score and your top 3 fixes. No card.
Questions: firstinchat@proton.me.
Related: AI search vs local SEO for med spas · How to check if AI mentions your med spa · Do Google reviews affect AI search for med spas? · How to get your med spa recommended by AI assistants · Client Questions page for med spas · Med spa free audit landing · Dental: Dentist schema markup