Cal.com:开源日程预约管理平台,Calendly的最佳替代方案

7 阅读9分钟

背景

在日常生活和工作中,我们经常需要与他人协调时间:

  • 销售人员需要与潜在客户预约演示时间
  • 医生需要为患者安排就诊时间
  • 咨询师需要与来访者预约咨询时段
  • 导师需要与学生预约会议时间

传统的邮件来回沟通方式效率低下,经常出现时区混淆、时间冲突等问题。Calendly 等商业预约工具的出现大大简化了这个过程,但存在以下痛点:

问题说明
数据不自主预约数据存储在第三方服务器
定制受限品牌定制能力有限,无法完全白标
成本高昂商业版本价格昂贵
锁定供应商无法迁移到其他平台

今天要介绍的 Cal.com 是 Calendly 的开源继任者,让你完全掌控自己的预约系统。

什么是 Cal.com

Cal.com (原名 Calendso) 是一个开源的日程预约管理平台,被誉为 Calendly 的开源替代者。它于 2021 年 9 月正式发布 v1.0 版本,完全开源,支持自托管,让你可以完全掌控自己的数据、工作流程和外观设计。

核心特性

特性说明
自托管部署支持 Docker 一键部署,完全掌控数据
白标定制可定制品牌 Logo、颜色、域名
多平台集成支持 Google Calendar、Office 365、Zoom 等
多类型事件支持一对一、多人会议、群组活动
团队协作支持团队日历、轮询、抢号
工作流自动化自动化提醒、确认邮件、后续跟进
API 驱动提供完整 API,可二次开发
多语言支持支持中文等 30+ 语言

GitHub 数据

  • Star: 30K+
  • 语言: TypeScript + Next.js
  • 协议: AGPLv3 (开源) + 商业许可 (企业版)
  • 技术栈: Next.js, tRPC, React, Tailwind CSS, Prisma
  • 发布日期: 2021年9月

Cal.com vs Calendly

对比项Cal.comCalendly
部署方式自托管或云端仅云端
数据控制完全自主第三方存储
品牌定制完全白标有限定制
费用开源免费付费订阅
API 访问完全开放受限
社区生态开源社区封闭生态
二次开发支持不支持

快速开始

Docker 一键部署(推荐)

# 克隆仓库
git clone https://github.com/calcom/cal.com.git
cd cal.com

# 复制环境配置文件
cp .env.example .env

# 生成必要的密钥
# NEXTAUTH_SECRET
openssl rand -base64 32
# CALENDSO_ENCRYPTION_KEY
openssl rand -base64 24

# 编辑 .env 文件,填入上述密钥

# 拉取 Docker 镜像
docker compose pull

# 启动服务(包含 PostgreSQL 数据库)
docker compose up -d

访问 http://localhost:3000 即可看到安装向导。

快速启动(开发模式)

# 克隆仓库
git clone https://github.com/calcom/cal.com.git
cd cal.com

# 安装依赖
yarn

# 复制并配置环境变量
cp .env.example .env

# 启动开发服务器(包含测试数据库)
yarn dx

测试账号:

邮箱密码角色
free@example.comfreeFree 用户
pro@example.comproPro 用户
admin@example.comADMINadmin2022!管理员

云端部署

Cal.com 提供官方云端托管,也支持第三方平台部署:

平台说明
Railway一键部署,推荐
Vercel需要 Pro 套餐
Northflank支持 Docker
Render支持 Docker
Elestio托管式部署

核心功能详解

1. 事件类型管理

Cal.com 支持创建多种事件类型:

一对一会议

事件名称: 产品演示
时长: 30 分钟
位置: Google Meet
时区: Asia/Shanghai

多人群组会议

事件名称: 公开研讨会
时长: 60 分钟
最大参与人数: 20
位置: Zoom

轮询可用时间

事件名称: 团队会议时间征集
类型: 轮询
候选人: 5 个时间段
参与方式: 匿名投票

2. 日历集成

Cal.com 支持与主流日历深度集成:

日历功能
Google Calendar双向同步,自动检查冲突
Office 365双向同步,企业用户
Outlook双向同步
Apple Calendar只读支持

配置 Google Calendar 集成

  1. 访问 Google Cloud Console
  2. 创建项目,启用 Google Calendar API
  3. 配置 OAuth 同意屏幕
  4. 创建 OAuth 2.0 客户端 ID
  5. 在 Cal.com 管理后台填入凭证

3. 视频会议集成

平台功能
Zoom自动创建会议链接
Google Meet自动创建会议链接
Microsoft Teams自动创建会议链接
Daily.co内置视频服务
HubSpot MeetingsCRM 集成

4. 预约页面定制

Cal.com 提供强大的品牌定制能力:

预约页面设置:
  - 自定义 Logo
  - 自定义颜色主题
  - 自定义域名
  - 添加隐私政策
  - 自定义感谢页面

5. 工作流自动化

自动化规则示例

# 预约确认后自动发送邮件
触发器: 预约创建
动作:
  - 发送确认邮件给参会者
  - 添加日历事件
  - 发送提醒邮件(提前 24 小时)
  - 发送提醒邮件(提前 1 小时)

邮件模板定制

支持自定义邮件内容、样式和发送时间:

  • 预约确认邮件
  • 日程提醒邮件
  • 取消通知邮件
  • 重新安排邮件
  • 后续跟进邮件

6. 团队功能

团队日历

团队: 产品团队
成员: 张三、李四、王五
共享日历: 产品团队日历

轮询抢号

适用于多位顾问共享时间池的场景:

咨询时段: 9:00-17:00
每位顾问: 5 个时段
客户: 自行选择一个顾问

7. API 和集成

Cal.com 提供完整的 RESTful API:

# 获取可用时间段
curl -X GET "https://your-cal.com/api/v1/availability/timeslots" \
  -H "Authorization: Bearer YOUR_API_KEY"

# 创建预约
curl -X POST "https://your-cal.com/api/v1/booking" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"eventTypeId": "123", "start": "2026-03-25T10:00:00Z"}'

SDK 支持

SDK说明
@calcom/embed-reactReact 组件嵌入
@calcom/embed-snippetJavaScript 代码片段
@calcom/apiNode.js API 客户端

实战场景

场景一:咨询师预约系统

需求: 自由咨询师需要为客户提供在线预约服务

配置:

  1. 创建一对一事件类型「咨询服务」(45分钟)
  2. 集成 Google Calendar 和 Zoom
  3. 开启自动化提醒邮件
  4. 配置预约确认邮件模板

效果:

  • 客户通过链接自主选择时间
  • 自动发送日历邀请和 Zoom 会议链接
  • 提前 24 小时和 1 小时自动提醒
  • 咨询结束后自动发送后续跟进邮件

场景二:企业内部会议预约

需求: 创业公司需要为各部门提供会议室预约

配置:

  1. 创建团队「行政部门」
  2. 添加 3 位行政同事
  3. 创建群组事件类型「部门会议」(60分钟)
  4. 配置轮询功能

效果:

  • 员工选择空闲时间
  • 自动分配到可用的行政同事
  • 生成会议室预订记录
  • 发送日历邀请

场景三:在线课程预约

需求: 在线教育平台需要为学员提供试听课预约

配置:

  1. 创建事件类型「试听课」(30分钟)
  2. 集成 Zoom
  3. 设置最大参与人数为 1
  4. 配置课前提醒

效果:

  • 学员自主预约试听时间
  • 自动发送课程资料
  • 课前自动发送 Zoom 链接
  • 课后自动发送课程顾问名片

场景四:多语言预约服务

需求: 外贸企业需要为海外客户提供多语言预约

配置:

  1. 在 Cal.com 中启用多语言
  2. 添加英语、西班牙语、法语支持
  3. 配置多语言邮件模板
  4. 使用自定义域名

效果:

  • 海外客户使用母语预约
  • 邮件自动使用客户语言发送
  • 提升客户体验

高级配置

HTTPS 和 SSL 配置

# 使用 Nginx 反向代理
server {
    listen 443 ssl;
    server_name cal.example.com;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

数据库配置

Cal.com 支持多种数据库:

# PostgreSQL 配置
DATABASE_URL='postgresql://user:password@host:5432/calcom'

# 使用连接池(如 PgBouncer)
DATABASE_URL='postgresql://user:password@host:5432/calcom?pool_mode=transaction'

邮件服务配置

SendGrid

SENDGRID_API_KEY=your_sendgrid_api_key
SENDGRID_EMAIL=your_verified_email
NEXT_PUBLIC_SENDGRID_SENDER_NAME="Your Company"

SMTP

EMAIL_SERVER_HOST=smtp.example.com
EMAIL_SERVER_PORT=587
EMAIL_SERVER_USER=your_username
EMAIL_SERVER_PASSWORD=your_password

短信提醒(Twilio)

TWILIO_ACCOUNT_SID=your_account_sid
TWILIO_AUTH_TOKEN=your_auth_token
TWILIO_PHONE_NUMBER=+1234567890
NEXT_PUBLIC_SENDER_ID=YourBrand

常见问题

Q1: 如何实现完全白标?

  1. 使用自定义域名
  2. 替换 Logo 和品牌色
  3. 自定义邮件模板
  4. 隐藏 Cal.com 相关链接
# 环境变量配置
NEXT_PUBLIC_WEBAPP_URL=https://booking.yourdomain.com
NEXT_PUBLIC_WEBSITE_URL=https://yourdomain.com

Q2: 如何处理时区问题?

Cal.com 自动处理时区转换:

  1. 用户预约时显示其本地时区
  2. 日历事件自动转换为组织者时区
  3. 邮件通知包含双方时区信息

Q3: 如何限制预约时段?

# 在事件类型中配置
可用时间:
  周一至周五: 9:00-18:00
  周六: 10:00-14:00
  周日: 不可用

# 提前时间
最少提前预约: 2 小时
最多提前预约: 30 

Q4: 如何备份数据?

# 导出 PostgreSQL 数据
docker compose exec database pg_dump -U postgres calcom > backup.sql

# 导入数据
docker compose exec -T database psql -U postgres calcom < backup.sql

Q5: 免费版和企业版区别?

功能开源版企业版
自托管
基础预约
团队日历
SSO 登录
支付集成
工作流自动化
视频会议
优先支持

总结

Cal.com 是一款功能强大、灵活可扩展的开源日程预约平台,具有以下核心优势:

优势说明
✅ 完全开源AGPLv3 协议,代码透明
✅ 数据自主自托管部署,数据完全掌控
✅ 灵活定制完全白标,品牌一致性
✅ 丰富集成支持 100+ 第三方服务
✅ API 驱动完整 API 支持二次开发
✅ 多语言支持 30+ 语言
✅ 活跃社区持续迭代,社区支持

相比 Calendly 等商业方案,Cal.com 以开源为核心,让用户真正掌控自己的预约数据和业务流程。建议需要预约系统的个人和企业考虑部署 Cal.com,享受开源带来的自由和灵活性。


相关资源


如果你觉得这个工具对你有帮助,欢迎关注我们的更多技术分享。