Cal.com’s marketing site is technically clean: fast, low error rate, correctly indexed. The two findings that matter are hygiene, not architecture. First, the open cal.com/[username] booking namespace is neither robots-blocked nor noindexed, so spam pages stay indexed on Cal.com’s own domain and dilute its authority. Second, editorial metadata is thin at the template level: 211 pages share one generic meta description and 43 carry no H1 in the crawled HTML. Both are template-level fixes.
0
Critical findings
2
High: authority & metadata
3
Medium: hygiene & structure
97%
Pages returning clean 200

The crawl produced five findings, none critical: two high, three medium.

High

The open booking namespace leaks authority to foreign spam.

cal.com/[username] user booking pages are not in the sitemap, not robots-blocked, and not noindexed: robots.txt disallows only a handful of app paths (/sandbox, /api, /settings, /settings/my-account). So unclaimed/abused pages get discovered via external links and indexed on Cal.com’s own domain: e.g. /hl718 (foreign gossip, 1,055 visits/mo), /the-hell-trotter, /ghostboardfullstorythai. That bloats the index, wastes crawl budget, and dilutes authority.

Fix
Default unclaimed / low-signal booking pages to noindex (opt-in to index once a profile is verified/active), and submit removal for the known foreign-spam URLs. Keep active customer booking pages indexable via an allowlist signal.
High

Editorial metadata is missing or generic sitewide.

The crawl found template-level metadata gaps across the editorial set:

  • 211 pages share one generic meta description (“A fully customizable scheduling software for individuals, businesses…”).
  • 43 pages carry no H1 in the crawled HTML: the blog set.
Fix
Author a unique meta description and one <h1> per post in the CMS template.
Medium

Title tags are systematically too long.

Median indexable title = 101 characters; 958 of 1,028 (93%) exceed 60 chars, with several 150–172 (release-notes and guide titles): truncated in search results.

Fix
Constrain the title template to ≤60 characters (front-load the primary term; drop the trailing boilerplate suffix on long titles).
Medium

383 pages emit more than one H1.

37% of crawled pages emit more than one <h1>, diluting the primary-heading signal.

Fix
Enforce exactly one <h1> per template; demote secondary hero headings to <h2>.
Medium

The sitemap submits test and staging URLs for indexing.

The sitemap includes junk: /test, /demo-2, /test-folder/compliance-2, /archived/enterprise-2, /blog/test-2-8-15-23.

Fix
Exclude test/archived paths from sitemap generation; noindex any that must stay reachable.

The action plan runs in priority order.

#ActionPriorityUnlocksEffort
1Noindex unclaimed booking pages + remove foreign spam. Opt-in indexing on profile verification.HighRecovered crawl budget; stops authority dilutionMedium
2Author unique title + meta + single H1 per post. Template-level, ≤60-char titles.HighClick-through + clean SERP snippets across 200+ pagesLow (template)
3Enforce one H1 per page.MediumCleaner heading signal sitewideLow
4Prune test/archived URLs from the sitemap.LowCrawl-signal hygieneLow

Five things already work.

  • 97% clean 200s: 1,029 of 1,060; only 6 404s and 26 redirects (25×308, 1×301)
  • Indexability correct: 1,028 indexable; no accidental noindex on money pages
  • Low error rate + fast delivery across the marketing site
  • Canonical + redirect handling is otherwise consistent
  • AI-scheduling page exists: /ai is a real, indexable page
Method. Headless Screaming Frog crawl of Cal.com’s English marketing sitemap (1,060 URLs), raw HTML. Every finding is from the crawl export or a live curl re-check; nothing is inferred. The cal.com/[username] booking namespace was excluded from the crawl (effectively infinite) and quantified separately from indexed-page data.
daydreamdaydreamSee if you qualify →