Cal.com SEO teardown: fixing the leaks in a very large content library
Every observation below was made on 2026-11-02 from public pages, without login. I have no access to Cal.com's Search Console, so I can't say how any of this affects indexing, rankings, or traffic.
This is a diagnosis example, not a client or a prospect. Cal.com's marketing pages are served through Framer, and my paid offer needs a marketing site in Git.
Cal.com has built something few SaaS sites have: hundreds of use-case pages, dozens of competitor comparisons, and seven languages. At that scale, small template problems repeat hundreds of times, and that's what I found. The fixes are mostly in templates, so a small change covers a lot of pages.
I fetched about 500 of the 9,838 URLs in the sitemaps, including every /workflows/ page and every /routing/routing-for-* page in English. Where a number comes from a sample, I say so.
What I'd fix first
1. Point "Talk to sales" at the sales page
On https://cal.com/workflows/workflows-for-saas, the served HTML has ten "Talk to sales" links: seven go to the homepage (https://cal.com/), and three go to https://cal.com/talk-to-sales. In a browser 1,280 px wide, eight are on the page: seven to the homepage and one to the sales page.
I then checked all 171 /workflows/workflows-for-* pages in the sitemap. All 171 have the same seven-and-three split in the served HTML. The pattern didn't appear on any /routing/routing-for-* page, on https://cal.com/scheduling/sales-teams, on https://cal.com/features/workflows, or on the homepage, where these links point to the sales page.
Why it matters: this is the one finding here that doesn't depend on search at all. A visitor from a SaaS, legal, or healthcare team who clicks "Talk to sales" lands on the general homepage and has to find the form again.
The fix: change the link in the shared workflows template to /talk-to-sales. Then test a few pages by clicking through.
2. Write descriptions for the workflow pages
171 of the 172 /workflows pages I fetched use the homepage's meta description: "A fully customizable scheduling software for individuals, businesses taking calls and developers building scheduling platforms where users meet users."
Examples:
- https://cal.com/workflows/workflows-for-saas
- https://cal.com/workflows/workflows-for-recruiting
- https://cal.com/workflows/workflows-for-legal-professional-services
Titles on these pages are unique, and the sibling /routing/ pages have their own descriptions, such as https://cal.com/routing/routing-for-recruiting. The workflows collection looks like the one that was missed. The same description also appears on https://cal.com/brand and https://cal.com/fr/blog/community-incentives.
Why it matters: these pages exist to speak to one industry. Google's guidance asks for a description specific to each page, and a generic line is a missed chance to say so when Google uses the tag.
The fix: these pages are served through Framer, which supports a CMS field for descriptions. Copy the pattern from /routing/. Each page already has the raw material. For example, for SaaS teams:
Automate scheduling workflows for SaaS teams: set triggers, send reminders, and customize messages across channels, on hosted Cal.com or self-hosted.
3. Clean test pages out of the sitemap
The sitemaps list six paths that look like internal or test pages, across seven languages. That's 42 URLs:
| English URL | English status | Same path in 6 other languages |
|---|---|---|
| https://cal.com/test | 404 | 200, indexable |
| https://cal.com/embed-test | 404 | 200, indexable |
| https://cal.com/embed-event | 404 | 200, indexable |
| https://cal.com/talk-to-sales-embed | 404 | 200, indexable |
| https://cal.com/archived/enterprise-2 | 404 | 200, indexable |
| https://cal.com/test-folder/compliance-2 | 404 | 200, indexable |
The localized versions, such as https://cal.com/de/test and https://cal.com/es/archived/enterprise-2, return a page with a self-referencing canonical and no noindex.
Three more sitemap entries redirect instead of resolving directly:
- https://cal.com/demo-2 goes to https://cal.com/talk-to-sales
- https://cal.com/scheduling/calcom-vs-calendly goes to https://cal.com/calcom-vs-calendly
- https://cal.com/europe goes to https://cal.eu
Why it matters: Google asks that sitemaps list the URLs you want shown in results. These entries tell search engines the opposite of what you probably intend, and an indexable /de/test isn't a page you want a buyer to find.
The fix: unpublish or noindex these pages in every language, remove them from the sitemap, and list final URLs instead of redirects. Find out why localized copies return 200 when the English page is gone, as that may affect other removed pages too.
Worth fixing soon
4. Make comparisons easy to find
Cal.com has an unusually strong comparison library. A few examples:
- https://cal.com/calcom-vs-calendly
- https://cal.com/blog/you-can-book-me-vs-cal-com
- https://cal.com/blog/chili-piper-vs-cal-com
- https://cal.com/blog/acuity-scheduling-vs-cal.com
- https://cal.com/blog/calendly-alternatives
- https://cal.com/blog/doodle-alternatives
Yet the footer's only comparison link is Calendly, as seen on https://cal.com/workflows/workflows-for-saas. The other comparisons sit in the blog, where https://cal.com/blog/category/all-categories loads more posts as you scroll. In my browser, 8 post links grew past 500 after scrolling, while the served HTML contained far fewer. I can't say from outside how much of that Google reaches.
The page to ship: a comparison hub at /alternatives. (https://cal.com/compare currently shows an "unpublished" team link page, so this path may be reserved for bookings.) It should include:
- A short table by buyer need: replacing Calendly, sales routing, healthcare, self-hosting.
- A link to every comparison and alternatives post, in plain HTML.
- A footer link, replacing or sitting beside the current Calendly link.
5. Answer "Cal.com alternatives" honestly
I found pages for alternatives to other tools, but none for alternatives to Cal.com itself. https://cal.com/alternatives and https://cal.com/blog/cal-com-alternatives return 404, and no such URL appears in the sitemap.
The page to ship: a short guide for people who are evaluating Cal.com or leaving it. Say when Calendly, Chili Piper, or a simpler tool is the better fit, and link to the existing comparisons. Your own comparison posts already make these distinctions, so most of the facts exist on the site.
6. Label prices consistently
https://cal.com/pricing shows yearly rates of $12 for Teams and $28 for Organizations. Many blog posts give both, for example "$16/user/month ($12 annually)" on https://cal.com/blog/best-scheduling-software-for-lawyers.
https://cal.com/blog/you-can-book-me-vs-cal-com mixes the two without saying so: Teams at "$12/user/month" and Organizations at "$37/user/month." The same post gives YouCanBookMe's starting price as both "About $9/month" in the table and "$7.20" in the text.
The fix: correct this post, then add a shared pricing snippet to comparison posts so that a future price change updates everywhere.
What I didn't check
- Most of the 9,838 sitemap URLs. I sampled localized pages and didn't fetch the remaining English blog posts.
- The
/discover/pages (1,956 URLs). I didn't assess them. - Whether Google has indexed any of these URLs or what they rank for.
- Search volume for any query. I have no keyword data and don't claim any.
- Whether any finding is intentional.
- Business results. I can't promise rankings or traffic from these changes.
Method
I fetched https://cal.com/robots.txt, all sitemaps, and a set of pages as plain HTML, then loaded key pages in a browser to confirm links and metadata after JavaScript.
Published by Noel Kim, Tidemark by Quelris. Cal.com didn't request or review this teardown.
Want this for your own site?
$400 fixed price for one diagnosis and one comparison page, delivered as a pull request. No ranking or traffic guarantees.