Cal.com
Scheduling on your own server. Self-service slots for clients, availability management, recurring appointments, reminder emails — a concrete alternative to Calendly and Doctolib for practices, firms and consultancies with confidentiality obligations.
Project profile
Cal.com
Scheduling infrastructure for everyone
As of: June 2, 2026
GitHub stars
45k
Forks
14k
Open issues
1.4k
License
MIT
Latest version
v6.2.0
Language
TypeScript
What is Cal.com?
Cal.com is an open-source scheduling tool — the alternative to Calendly: clients book slots themselves, availabilities are managed centrally, recurring appointments are possible, reminder emails go out automatically. Cal.com Inc. runs a commercial cloud variant; the software itself (the whole repo) is licensed under MIT.
Unlike Doctolib or Calendly, Cal.com runs entirely on your own server. Every appointment record, every client record, every configuration stays in your own hands. For industries with professional confidentiality (psychotherapy, law, tax advisors, family doctors), that is the decisive difference.
Why a therapy practice self-hosts Cal.com
In a psychotherapy practice the mere appointment falls under Art. 9 GDPR as a 'special category of personal data' — the information 'Mrs Meier has an appointment with Dr. Behrens on Tuesday 10:00' already reveals that Mrs Meier is in psychotherapeutic treatment. This information must not land in a US cloud database with Calendly, even with a DPA.
Doctolib would be a German alternative — but costs €99–199 per therapist per month and comes with aggressive marketing pressure (patient acquisition platform). Cal.com : one container stack on a Hetzner you own, one-off setup, no per-seat licence, no marketing add-ons. The practice saves €5,000–9,000/year and keeps full data sovereignty.
Client case study
Praxisgemeinschaft Behrens & Kollegen
Psychotherapy group practice in Lower Saxony, 5 people — 4 therapists (two CBT, one psychodynamic, one systemic) plus 1 paralegal. Around 240 patients in ongoing treatment. 9 months ago migrated from Excel + Outlook to Cal.com . Today: patients book follow-up sessions themselves, the paralegal has visibility into all 4 calendars, double bookings are history.
Art. 9 GDPR appointment protection
Recurring appointments as a series
Individual therapist availability
Reminder emails 24h ahead
Patient self-service rescheduling
Practice software integration
What the practice actually does with it
Eight productive usage patterns from 9 months of Cal.com practice at Behrens & Kollegen. Each pattern replaces a recurring paralegal task or a previous Excel .
Initial appointment booking from the practice website
Recurring sessions as a series
Availability per therapist
Reminder emails automatic
Patient self-service
Paralegal overview across all 4 calendars
Webhook after booking
Own mail server for sending
Core capabilities of Cal.com
What Cal.com delivers technically — and which capabilities really carry a practice setup.
20+ event-type configurations
Buffer times between appointments
Multi-user with roles
Webhooks for external workflows
Custom branding
REST API for custom code
Honest alternatives
If Cal.com is not a fit — what else?
Three alternatives with different focuses. Cal.com is the most pragmatic pick for GDPR-bound industries.
SaaS market leader
Calendly
Calendly LLC, USA
- + Market leader, very mature product
- + Out of the box, productive in 5 minutes
- − US cloud, problematic for Art. 9 GDPR
- − From $12/user/month, cumulative
DACH healthcare SaaS
Doctolib
Doctolib SAS, FR/DE
- + GDPR compliant, DACH focus
- + Includes patient acquisition platform
- − €99–199/practitioner/month
- − Marketing pressure, platform lock-in
Office integration
Microsoft Bookings
Microsoft, EU+US cloud
- + Included in Microsoft 365 Business
- + Deep Outlook integration
- − Microsoft cloud (data location choice but MS)
- − Feature set smaller than Cal.com/Calendly
Rule of thumb: anyone with a GDPR requirement and a container server is well placed on Cal.com . Doctolib is right when patient acquisition via the platform is desired. Calendly remains sensible for uncritical appointments (sales calls, hobby). Microsoft Bookings pays off when Microsoft 365 is already in place and data sitting with MS is acceptable.
Pricing
MIT. Self-hosted. No per-seat cost.
License
MIT — true OSI open-source license for the entire Cal.com code. Self-hosting for any number of users without obligations. Alongside there is a commercial cloud service Cal.com Cloud (from $12/user/month) — not relevant for self-hosting.
Running costs
Four containers (Cal.com + PostgreSQL + Redis + API v2) on your own Docker host. RAM footprint around 1 GB for 5–10 users. A Hetzner VPS (CPX21 from €7/month) covers 50+ users. No per-seat licence.
Effort
Initial setup: 1 day (compose, DNS, own SMTP, branding). Practice configuration with 4 therapist profiles, event types, workflows, practice-software webhook and paralegal training: 2–3 consulting days.
One caveat: Cal.com has no mobile apps (only PWA), and SMS reminders need an own Twilio account (or alternatives like Sipgate). For a practice of 5–15 users typically unproblematic. Cal.com Inc. reserves additional features for Cal.com Cloud (e.g. insights dashboard, app store) — the variant remains complete for the core (scheduling).
Webhook after booking to your own practice software
# Cal.com Settings → Webhooks → Add
URL: https://practice-software.local/api/calcom-hook
Method: POST
Secret: ${WEBHOOK_SECRET}
Events:
- BOOKING_CREATED
- BOOKING_RESCHEDULED
- BOOKING_CANCELLED
- MEETING_ENDED
Payload example:
{
"triggerEvent": "BOOKING_CREATED",
"payload": {
"type": "50min session",
"title": "Session with client #4711",
"startTime": "2026-06-09T10:00:00.000Z",
"endTime": "2026-06-09T10:50:00.000Z",
"organizer": {"name": "Dr. Behrens", "email": "..."},
"attendees": [{"id": "...", "email": "..."}],
"uid": "abc-123"
}
}Cal.com self-hosted compose setup
services:
calcom:
image: calcom/cal.com:v6.2.0
container_name: calcom
restart: unless-stopped
depends_on: [calcom-db, calcom-redis]
environment:
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY}
- NEXT_PUBLIC_WEBAPP_URL=https://booking.behrens-practice.com
- DATABASE_URL=postgresql://calcom:${DB_PASS}@calcom-db:5432/calcom
- REDIS_URL=redis://calcom-redis:6379
- EMAIL_FROM=booking@behrens-practice.com
- EMAIL_SERVER_HOST=mail.behrens-practice.com
networks: [frontend, calcom-net]
calcom-db:
image: postgres:16
container_name: calcom-db
restart: unless-stopped
environment:
- POSTGRES_DB=calcom
- POSTGRES_USER=calcom
- POSTGRES_PASSWORD=${DB_PASS}
volumes:
- ./calcom-db:/var/lib/postgresql/data
networks: [calcom-net]
calcom-redis:
image: redis:7-alpine
container_name: calcom-redis
restart: unless-stopped
networks: [calcom-net]
networks:
frontend:
external: true
calcom-net:Related topics
Cal.com needs a platform and mail delivery
as the container engine, your own mail server for GDPR-compliant delivery, Caddy as the HTTPS layer:
Ready for the next step?
Free intro call, no strings attached. In 30 minutes you'll know whether and how AI can help your business.