Startups need fast, reliable scheduling. Cal.com gives you a white‑label booking system you can own, brand, and scale. This guide walks you through the concept, quick setup, core workflows, advanced patterns, and the most common mistakes that can hurt growth.
Cal.com is an open‑source scheduling platform. It replaces Calendly, but you can host it yourself or use the SaaS cloud. The core idea is an event type – a template that defines length, location, and required participants. When a visitor clicks a link, Cal.com shows available slots, handles time‑zone conversion, and confirms the booking.
Go to cal.com and click “Sign up”. Use Google OAuth for speed. The free tier gives you 5 users and 100 bookings per month.
In Settings → Calendar Connections, add Google Calendar for each team member. Turn on “Two‑way sync” so Cal.com reads busy times and writes events back.
Navigate to Branding → Custom domain. Point a CNAME from schedule.yourstartup.com to app.cal.com. SSL is auto‑provisioned via Let’s Encrypt.
Click “New Event Type”. Set:
Save and copy the generated link. It looks like https://schedule.yourstartup.com/demo.
This is the most common flow. The prospect clicks the link, picks a slot, and receives an automated email with a calendar invite and Zoom link.
Use a “Round‑Robin” event type. Assign three interviewers, set “Maximum participants per slot = 1”, and enable “Round Robin”. Cal.com will rotate the interviewers automatically.
Choose “Recurring” and set a weekly cadence. Turn on “Send reminder 24 h before”. This reduces no‑shows for multi‑session onboarding.
| Feature | Free | Pro ($12/user/mo) | Enterprise ($30/user/mo) |
|---|---|---|---|
| Users | 5 | Unlimited | Unlimited |
| Bookings / month | 100 | 10,000 | Unlimited |
| Custom branding | No | Yes | Yes |
| API rate limit | 200 req/min | 2,000 req/min | 10,000 req/min |
| Webhooks | Basic | Advanced + retries | Premium + SLA |
| Self‑hosted | No | Optional | Included |
Install the npm package:
npm i @calcom/embed-react
Then add:
{`import { Cal } from '@calcom/embed-react';
export default function Demo() {
return <Cal calLink="https://schedule.yourstartup.com/demo" />;
}`}
This loads the widget lazily and respects your site’s CSS.
Set the webhook URL to https://api.yourstartup.com/cal/webhook. In your handler, map the payload’s event_type and start_time to a new lead in HubSpot. Example payload excerpt:
{
"event_type": "Demo Call",
"start_time": "2026-07-01T14:00:00Z",
"attendees": [{"email":"prospect@example.com"}]
}
When you launch a new product, you may need to open 20 slots per day across three time zones. Use the /v1/availability endpoint:
POST https://api.cal.com/v1/availability
{
"event_type_id": 42,
"date": "2026-07-10",
"slots": ["09:00","11:00","14:00"]
}
Response returns slot IDs you can later delete or modify.
Without this toggle, two users can book the same time on separate calendars, causing chaos. Enable it in Settings → Event Types → Advanced.
Always test with a visitor in a different zone. Use the “Show time in visitor’s zone” preview button. If you manually adjust times in the UI, you may break the UTC conversion.
Adding too many variables can break the template rendering engine. Stick to the default placeholders: {{event_type}}, {{date}}, {{link}}.
Cal.com retries three times, then logs an error. Set up an alert on the webhook endpoint’s 4xx/5xx responses to catch missed CRM updates.
The open‑source version needs at least 1 vCPU, 1 GB RAM, and PostgreSQL 13+. A cheap shared host will cause latency and time‑outs during peak booking periods.
The free tier allows up to 5 users, 100 bookings per month, and basic integrations such as Google Calendar and Zoom.
Yes. Cal.com provides an iframe embed and a React component that works directly with Next.js without extra server code.
All dates are stored in UTC. The frontend shows the visitor’s local time using the browser’s Intl API, so no manual conversion is needed.
Yes. The open‑source repo can be deployed on Vercel, Railway, or any Docker host. The self‑hosted plan starts at $0 for the code, but you pay for hosting.
Skipping the “Prevent double booking” toggle in the Event Type settings. Turn it on to let Cal.com check all connected calendars before confirming.
Cal.com can power every meeting a startup needs. Follow this guide, avoid the pitfalls, and you’ll have a reliable scheduling system that scales with your growth.