The Broken Foundation

Your Booking Page Is a Black Hole

Your most important digital asset — the page where patients book appointments — lives on someone else's domain. Search engines can't crawl it. AI can't read it. You can't optimize it. We tested the six biggest platforms. Here's what we found.

Crawl test results — 6 platforms
vagaro.com/beverlyhills…
Vagaro
$ curl booking page
⛔ BLOCKED by robots.txt
// Search engines & AI crawlers
// are FORBIDDEN from accessing
// this page
Google, ChatGPT, Perplexity — none of them can see your services, prices, or availability.
joinblvd.com/b/skin-spa…
Boulevard
$ fetch page content
⚠ EMPTY — "Loading Schedule..."
// JavaScript-rendered widget
// Returns ZERO content for
// any crawler or AI agent
The page is an empty shell. Zero SEO value. Zero indexable content. Invisible to every AI.
evolve.zenoti.com/webstore…
Zenoti
$ fetch service catalog
❌ "Something went wrong!"
// Broken error page returned
// No service data, no schema,
// no structured content
Your $400/month booking platform returns an error page to every AI agent trying to recommend you.
app.mangomint.com/book/…
Mangomint
$ fetch booking widget
⚠ JS SHELL — no content
// React app renders client-side
// Crawler sees blank <div>
// Zero service data indexed
Beautiful interface for humans. A complete blank for every search engine and AI agent that could send you patients.
portal.aestheticrecord.com/…
Aesthetic Record
$ fetch patient portal
🔒 LOGIN WALL — 401
// Gated portal, no public
// service data exposed
// Crawlers hit a dead end
The patient portal is locked behind authentication. AI recommendation engines can't see a single treatment you offer.
fresha.com/a/your-spa…
Fresha
$ check domain authority
⚠ CRAWLABLE — for Fresha
// SEO equity flows to fresha.com
// YOUR domain gets nothing
// Clients find Fresha, not you
Fresha's marketplace is crawlable — but every ranking signal, backlink, and AI citation builds Fresha's brand, not yours.
The Hidden Third Problem

Even Your Own Website Has a Black Hole — If You Use Embedded Forms

Many med spas that recognize the third-party booking problem think they've solved it by embedding a Typeform, JotForm, or intake widget directly in their website. They haven't. Embedded forms are loaded inside an <iframe> — a sandboxed HTML element that is, by design, opaque to crawlers and AI agents. The content inside the iframe exists in a separate browsing context with its own document, its own DOM, and its own origin. Google's crawler sees the iframe tag itself. It does not see what's inside. ChatGPT, Perplexity, and AI Overview models see the same: nothing.

No SEO Indexing
Service names, pricing, treatment descriptions, and FAQs inside an iframe are invisible to Google. They generate zero keyword rankings, zero featured snippet opportunities, and zero structured data for local search.
No AEO Citations
AI Answer Engines like ChatGPT, Perplexity, and Google AI Overviews cannot read iframe content. When a patient asks "what does a HydraFacial cost near me," your embedded consultation form cannot be cited — even if you answered that exact question inside it.
No Conversion Signals
Because the iframe runs on Typeform's origin, your analytics platform cannot track form field interactions, drop-off points, or completions with any granularity. You're flying blind on your most critical conversion step.
When your booking page lives on their domain, you lose everything:
No CRO
Can't A/B test, can't optimize conversion funnels, can't reduce drop-offs
No SEO Value
Organic traffic goes to Zenoti's domain, not yours. Your domain gets nothing.
No Cart Recovery
Can't track abandonment, can't retarget, can't recover lost bookings
No Personalization
Can't show relevant services to the patient who just landed from a "Botox near me" search
Iris moves booking to your domain. Conversion-optimized. AI-readable. Yours.
Find Out If Your Medspa Is Agentic →