Cal.com is a flexible, open‑source scheduling platform that lets founders automate meeting bookings without a middleman. This guide explains the core concepts, walks you through step‑by‑step setup, shows the most useful workflows, dives into advanced patterns, and warns about common mistakes that waste time or break the booking flow.
Cal.com replaces the back‑and‑forth of email scheduling with a single link. The platform is built on a modular architecture: Event Types define what a meeting looks like, Calendars store availability, and Routing Rules decide who gets booked. Because it is open source, you can self‑host on AWS, Vercel, or use the managed cloud version.
Key benefits for founders:
Visit cal.com and click “Sign up”. Choose the cloud version for fastest launch. Use your work email; a verification link is sent instantly.
In the dashboard, go to Settings → Calendar Connections. Click “Connect Google Calendar” (or Outlook). Grant read/write permissions. The sync runs every 5 minutes, ensuring busy slots are blocked.
Click “New Event Type”. Fill the fields:
Save. Cal.com generates a shareable URL like https://cal.com/yourcompany/intro.
Copy the embed code from Share → Embed and paste it into any page. The widget automatically adapts to dark mode and mobile screens.
Create an event type “Investor Demo”. Set duration to 45 min, add a custom question “What stage is your fund?” to collect context. Enable “Buffer before” 15 min to avoid back‑to‑back calls.
Under Routing → Round Robin, add the sales reps’ usernames. Set the rule “If event type = Demo → assign to round‑robin pool”. This spreads bookings evenly and prevents overload.
Use “Recurring Availability” to open 2‑hour blocks on Tuesdays. Turn on “Cancellation Policy” – 24 hour notice required – to protect engineers’ time.
In Integrations → Zapier, create a Zap: “New Booking → Send Gmail”. Include the meeting link and a short thank‑you note. This reduces manual follow‑up work.
For data‑privacy, clone the GitHub repo (git clone https://github.com/calcom/cal.com), set DATABASE_URL to a PostgreSQL instance, and deploy on Render or Fly.io. Costs start at $7/month for a basic instance.
Cal.com integrates with Stripe. In Payments → Stripe, enter your API keys. Create a “Paid Consultation” event with a $150 fee. Attendees must complete payment before confirming the slot.
Add a custom.css file in the /public folder. Example to change button color:
button{
background:#0d47a1;
color:#fff;
}
| Feature | Cal.com (Free) | Calendly (Pro) | Acuity (Emerging) |
|---|---|---|---|
| Unlimited event types | ✓ | ✗ (1 per plan) | ✓ |
| Round‑robin routing | ✓ | ✓ (Pro only) | ✗ |
| Self‑hosted option | ✓ | ✗ | ✗ |
| Stripe payments | ✓ | ✓ | ✓ |
| Free tier limit | None | 30 events/mo | 10 events/mo |
| Price (per user) | $0 | $12/mo | $15/mo |
Use the public REST API to create events programmatically. Example in Node.js:
const fetch = require('node-fetch');
await fetch('https://api.cal.com/v1/event-types', {
method:'POST',
headers:{'Authorization':`Bearer ${process.env.CAL_API_KEY}`,'Content-Type':'application/json'},
body:JSON.stringify({name:'API Demo',duration:30,slug:'api-demo'})
});
If a sales rep’s personal calendar isn’t linked, Cal.com can double‑book that person. Check Team → Users and verify each user has a connected calendar.
Creating one “All‑Meetings” event type leads to confusing availability. Split into logical groups: “Investor Demo”, “Customer Onboarding”, “Team Sync”.
Cal.com defaults to the user’s browser time zone. For global founders, enable “Force time zone” in event settings and display the selected zone in the confirmation email.
Without buffers, back‑to‑back calls cause fatigue. Add a 10‑minute buffer before and after high‑impact meetings.
Disable email notifications by accident and lose the audit trail. Keep the default “Send confirmation” on, and add a custom template with your brand logo.
Cal.com offers a free tier with unlimited events, a Team plan at $12 per user per month, and an Enterprise plan with custom pricing.
Yes. Cal.com provides an embeddable widget that you can copy‑paste into any HTML page or CMS block.
During setup you link your Google account. Cal.com reads and writes events via the Google Calendar API, keeping both calendars in sync.
Use the “Routing” feature. Create a routing rule that assigns events to a specific user or a round‑robin pool.
Not enabling calendar sync for every user in a shared event type. When a user’s personal calendar isn’t linked, Cal.com cannot block busy times.
With this guide, founders can launch Cal.com quickly, run core scheduling workflows, explore advanced integrations, and avoid the pitfalls that slow down early‑stage teams. Start building a frictionless booking experience today.