SEO audit for appointae.com
appointae – Stop explaining. Start showing.
Health 45/100 (poor) · 15 pages crawled · generated 2026-08-26
Download Markdown report (feed to ChatGPT / Claude / Cursor)Visual certainty for stores and independent artists. Link past service photos and formula notes to every appointment — communication first, booking second.
| Category | Score | Errors | Warnings | Notices |
|---|---|---|---|---|
| Sitemap | 67 | 5 | 0 | 3 |
| Canonical | 80 | 0 | 10 | 0 |
| Content | 82 | 0 | 9 | 9 |
| Duplicate | 84 | 0 | 8 | 7 |
| Headings | 86 | 0 | 7 | 0 |
| Rendering | 86 | 0 | 7 | 0 |
| Crawlability | 90 | 0 | 5 | 0 |
| Agent Readiness | 100 | 0 | 0 | 4 |
| Cache | 100 | 0 | 0 | 8 |
| Links | 100 | 0 | 0 | 7 |
| Performance | 100 | 0 | 0 | 18 |
| Security | 100 | 0 | 0 | 15 |
| Social | 100 | 0 | 0 | 20 |
| Structured Data | 100 | 0 | 0 | 10 |
Errors (1 rules)
error Non-200 URL listed in sitemap
Rule sitemap.not_200 · Sitemap · 5 occurrence(s)
- https://appointae.com/partner-dpa — listed in sitemap but status 307
- https://appointae.com/partner-terms — listed in sitemap but status 307
- https://appointae.com/privacy — listed in sitemap but status 307
- https://appointae.com/terms — listed in sitemap but status 307
- https://appointae.com/terms-of-use — listed in sitemap but status 307
Warnings (7 rules)
warning Missing canonical tag
Rule canonical.missing · Canonical · 10 occurrence(s)
- https://appointae.com/
- https://appointae.com/checkout?plan=growth
- https://appointae.com/checkout?plan=solo
- https://appointae.com/checkout?plan=starter
- https://appointae.com/checkout?plan=uncapped
- https://appointae.com/get-started
- https://appointae.com/legal
- https://appointae.com/login
- https://appointae.com/login?employee_join=1
- https://appointae.com/onboarding
warning Thin content (low word count)
Rule content.thin · Content · 9 occurrence(s)
- https://appointae.com/checkout?plan=growth — 1 words
- https://appointae.com/checkout?plan=solo — 1 words
- https://appointae.com/checkout?plan=starter — 1 words
- https://appointae.com/checkout?plan=uncapped — 1 words
- https://appointae.com/get-started — 1 words
- https://appointae.com/legal — 3 words
- https://appointae.com/login — 38 words
- https://appointae.com/login?employee_join=1 — 38 words
- https://appointae.com/onboarding — 1 words
warning Homepage duplicated across protocol/host variants (no redirect)
Rule duplicate.protocol_host · Duplicate · 1 occurrence(s)
- https://appointae.com/ — https://www.appointae.com/ serves the same homepage content with a 200 and no redirect — Google sees a duplicate. Pick one canonical host/scheme and 301-redirect the others.
warning Duplicate <title> across pages
Rule duplicate.title · Duplicate · 7 occurrence(s)
- https://appointae.com/checkout?plan=growth — title shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=solo — title shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=growth, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=starter — title shared by 4 pages: https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=growth, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=uncapped — title shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=growth
- https://appointae.com/login — title shared by 3 pages: https://appointae.com/login?employee_join=1, https://appointae.com/onboarding
- https://appointae.com/login?employee_join=1 — title shared by 3 pages: https://appointae.com/login, https://appointae.com/onboarding
- https://appointae.com/onboarding — title shared by 3 pages: https://appointae.com/login, https://appointae.com/login?employee_join=1
warning Missing <h1>
Rule h1.missing · Headings · 7 occurrence(s)
warning Content only rendered by JavaScript (invisible to non-JS crawlers & AI)
Rule rendering.js_shell · Rendering · 7 occurrence(s)
- https://appointae.com/checkout?plan=growth — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/checkout?plan=solo — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/checkout?plan=starter — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/checkout?plan=uncapped — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/get-started — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/legal — Raw HTML has 3 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
- https://appointae.com/onboarding — Raw HTML has 1 words and 0 links — this page is built by JavaScript in the browser. Googlebot renders JS but delays it, and most crawlers and AI assistants (ChatGPT, Perplexity, Claude) don't run JavaScript at all, so to them the page looks empty. Server-render or pre-render your main content and navigation.
warning Non-200 final status
Rule status.non_200 · Crawlability · 5 occurrence(s)
- https://appointae.com/partner-dpa — HTTP 307
- https://appointae.com/partner-terms — HTTP 307
- https://appointae.com/privacy — HTTP 307
- https://appointae.com/terms — HTTP 307
- https://appointae.com/terms-of-use — HTTP 307
Notices (13 rules)
notice Heading levels skip a level
Rule agent.heading_skip · Agent Readiness · 3 occurrence(s)
- https://appointae.com/ — h3 follows h1 — skips h2
- https://appointae.com/login — h3 follows h1 — skips h2
- https://appointae.com/login?employee_join=1 — h3 follows h1 — skips h2
notice No llms.txt for AI agents
Rule agent.llms_txt_missing · Agent Readiness · 1 occurrence(s)
- https://appointae.com/ — no llms.txt found at the site root — add one so AI agents get a curated site summary
notice Page served uncached (no-store/private or CDN bypass)
Rule cache.not_cacheable · Cache · 8 occurrence(s)
- https://appointae.com/ — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/checkout?plan=growth — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/checkout?plan=solo — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/checkout?plan=starter — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/checkout?plan=uncapped — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/get-started — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/login — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
- https://appointae.com/login?employee_join=1 — Cache-Control: private, no-cache, no-store, max-age=0, must-revalidate · vercel: MISS
notice Low text-to-HTML ratio
Rule content.low_ratio · Content · 9 occurrence(s)
- https://appointae.com/checkout?plan=growth — 0.1%
- https://appointae.com/checkout?plan=solo — 0.1%
- https://appointae.com/checkout?plan=starter — 0.1%
- https://appointae.com/checkout?plan=uncapped — 0.1%
- https://appointae.com/get-started — 0.1%
- https://appointae.com/legal — 0.3%
- https://appointae.com/login — 1.5%
- https://appointae.com/login?employee_join=1 — 1.5%
- https://appointae.com/onboarding — 0.1%
notice Duplicate meta description across pages
Rule duplicate.meta_desc · Duplicate · 7 occurrence(s)
- https://appointae.com/checkout?plan=growth — meta description shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=solo — meta description shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=growth, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=starter — meta description shared by 4 pages: https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=growth, https://appointae.com/checkout?plan=uncapped
- https://appointae.com/checkout?plan=uncapped — meta description shared by 4 pages: https://appointae.com/checkout?plan=starter, https://appointae.com/checkout?plan=solo, https://appointae.com/checkout?plan=growth
- https://appointae.com/login — meta description shared by 3 pages: https://appointae.com/login?employee_join=1, https://appointae.com/onboarding
- https://appointae.com/login?employee_join=1 — meta description shared by 3 pages: https://appointae.com/login, https://appointae.com/onboarding
- https://appointae.com/onboarding — meta description shared by 3 pages: https://appointae.com/login, https://appointae.com/login?employee_join=1
notice Page has only one internal inlink (fragile crawl path)
Rule links.single_inlink · Links · 7 occurrence(s)
- https://appointae.com/checkout?plan=growth — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/checkout?plan=solo — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/checkout?plan=starter — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/checkout?plan=uncapped — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/get-started — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/login — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
- https://appointae.com/login?employee_join=1 — only one internal link points here — if that source changes, this page becomes an orphan. Add more contextual internal links to strengthen the crawl path.
notice Missing Open Graph tags
Rule og.missing · Social · 10 occurrence(s)
- https://appointae.com/ — og:title, og:description, og:image
- https://appointae.com/checkout?plan=growth — og:title, og:description, og:image
- https://appointae.com/checkout?plan=solo — og:title, og:description, og:image
- https://appointae.com/checkout?plan=starter — og:title, og:description, og:image
- https://appointae.com/checkout?plan=uncapped — og:title, og:description, og:image
- https://appointae.com/get-started — og:title, og:description, og:image
- https://appointae.com/legal — og:title, og:description, og:image
- https://appointae.com/login — og:title, og:description, og:image
- https://appointae.com/login?employee_join=1 — og:title, og:description, og:image
- https://appointae.com/onboarding — og:title, og:description, og:image
notice No ETag header (no conditional GET for unchanged pages)
Rule perf.no_etag · Performance · 8 occurrence(s)
- https://appointae.com/ — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/checkout?plan=growth — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/checkout?plan=solo — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/checkout?plan=starter — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/checkout?plan=uncapped — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/get-started — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/login — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
- https://appointae.com/login?employee_join=1 — the response carries no ETag header — without an ETag (or Last-Modified) there is no cache-revalidation mechanism, so crawlers re-download the full body every visit. Emit an ETag (a content hash) to enable conditional If-None-Match requests.
notice No Last-Modified header (no conditional GET for unchanged pages)
Rule perf.no_last_modified · Performance · 10 occurrence(s)
- https://appointae.com/ — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/checkout?plan=growth — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/checkout?plan=solo — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/checkout?plan=starter — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/checkout?plan=uncapped — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/get-started — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/legal — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/login — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/login?employee_join=1 — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
- https://appointae.com/onboarding — the response carries no Last-Modified header — Googlebot can't send an If-Modified-Since request, so it re-downloads the full page body on every crawl even when nothing changed. Emit Last-Modified (or an ETag) on stable pages to enable 304 Not Modified responses.
notice No structured data detected
Rule schema.none · Structured Data · 10 occurrence(s)
- https://appointae.com/
- https://appointae.com/checkout?plan=growth
- https://appointae.com/checkout?plan=solo
- https://appointae.com/checkout?plan=starter
- https://appointae.com/checkout?plan=uncapped
- https://appointae.com/get-started
- https://appointae.com/legal
- https://appointae.com/login
- https://appointae.com/login?employee_join=1
- https://appointae.com/onboarding
notice Missing recommended security headers
Rule security.missing_headers · Security · 15 occurrence(s)
- https://appointae.com/ — CSP, X-Content-Type-Options
- https://appointae.com/checkout?plan=growth — CSP, X-Content-Type-Options
- https://appointae.com/checkout?plan=solo — CSP, X-Content-Type-Options
- https://appointae.com/checkout?plan=starter — X-Content-Type-Options, CSP
- https://appointae.com/checkout?plan=uncapped — CSP, X-Content-Type-Options
- https://appointae.com/get-started — CSP, X-Content-Type-Options
- https://appointae.com/legal — CSP, X-Content-Type-Options
- https://appointae.com/login — CSP, X-Content-Type-Options
- https://appointae.com/login?employee_join=1 — CSP, X-Content-Type-Options
- https://appointae.com/onboarding — CSP, X-Content-Type-Options
- https://appointae.com/partner-dpa — CSP, X-Content-Type-Options
- https://appointae.com/partner-terms — CSP, X-Content-Type-Options
- https://appointae.com/privacy — CSP, X-Content-Type-Options
- https://appointae.com/terms — X-Content-Type-Options, CSP
- https://appointae.com/terms-of-use — CSP, X-Content-Type-Options
notice Indexable page not listed in sitemap
Rule sitemap.orphan_not_listed · Sitemap · 3 occurrence(s)
- https://appointae.com/get-started — indexable but not in sitemap
- https://appointae.com/login — indexable but not in sitemap
- https://appointae.com/onboarding — indexable but not in sitemap
notice Missing Twitter Card tag
Rule twitter.missing · Social · 10 occurrence(s)
- https://appointae.com/
- https://appointae.com/checkout?plan=growth
- https://appointae.com/checkout?plan=solo
- https://appointae.com/checkout?plan=starter
- https://appointae.com/checkout?plan=uncapped
- https://appointae.com/get-started
- https://appointae.com/legal
- https://appointae.com/login
- https://appointae.com/login?employee_join=1
- https://appointae.com/onboarding
| URL | Status | Indexable | Words | In-links |
|---|---|---|---|---|
| https://appointae.com/ appointae – Stop explaining. Start showing. |
200 | yes | 1011 | 3 |
| https://appointae.com/legal Legal & Policies · appointae |
200 | yes | 3 | 3 |
| https://appointae.com/onboarding appointae – Manage your business, invite your team |
200 | yes | 1 | 2 |
| https://appointae.com/checkout?plan=growth Checkout – appointae |
200 | yes | 1 | 1 |
| https://appointae.com/checkout?plan=solo Checkout – appointae |
200 | yes | 1 | 1 |
| https://appointae.com/checkout?plan=starter Checkout – appointae |
200 | yes | 1 | 1 |
| https://appointae.com/checkout?plan=uncapped Checkout – appointae |
200 | yes | 1 | 1 |
| https://appointae.com/get-started Get started – appointae |
200 | yes | 1 | 1 |
| https://appointae.com/login appointae – Manage your business, invite your team |
200 | yes | 38 | 1 |
| https://appointae.com/login?employee_join=1 appointae – Manage your business, invite your team |
200 | yes | 38 | 1 |
| https://appointae.com/partner-dpa appointae – Manage your business, invite your team |
307 | no | 0 | 0 |
| https://appointae.com/partner-terms appointae – Manage your business, invite your team |
307 | no | 0 | 0 |
| https://appointae.com/privacy appointae – Manage your business, invite your team |
307 | no | 0 | 0 |
| https://appointae.com/terms appointae – Manage your business, invite your team |
307 | no | 0 | 0 |
| https://appointae.com/terms-of-use appointae – Manage your business, invite your team |
307 | no | 0 | 0 |
Audit your own site — free
157 checks, internal PageRank, render-diff. No signup, results in ~30s.