背景
在日常生活和工作中,我们经常需要与他人协调时间:
- 销售人员需要与潜在客户预约演示时间
- 医生需要为患者安排就诊时间
- 咨询师需要与来访者预约咨询时段
- 导师需要与学生预约会议时间
传统的邮件来回沟通方式效率低下,经常出现时区混淆、时间冲突等问题。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.com | Calendly |
|---|---|---|
| 部署方式 | 自托管或云端 | 仅云端 |
| 数据控制 | 完全自主 | 第三方存储 |
| 品牌定制 | 完全白标 | 有限定制 |
| 费用 | 开源免费 | 付费订阅 |
| 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.com | free | Free 用户 |
| pro@example.com | pro | Pro 用户 |
| admin@example.com | ADMINadmin2022! | 管理员 |
云端部署
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 集成
- 访问 Google Cloud Console
- 创建项目,启用 Google Calendar API
- 配置 OAuth 同意屏幕
- 创建 OAuth 2.0 客户端 ID
- 在 Cal.com 管理后台填入凭证
3. 视频会议集成
| 平台 | 功能 |
|---|---|
| Zoom | 自动创建会议链接 |
| Google Meet | 自动创建会议链接 |
| Microsoft Teams | 自动创建会议链接 |
| Daily.co | 内置视频服务 |
| HubSpot Meetings | CRM 集成 |
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-react | React 组件嵌入 |
| @calcom/embed-snippet | JavaScript 代码片段 |
| @calcom/api | Node.js API 客户端 |
实战场景
场景一:咨询师预约系统
需求: 自由咨询师需要为客户提供在线预约服务
配置:
- 创建一对一事件类型「咨询服务」(45分钟)
- 集成 Google Calendar 和 Zoom
- 开启自动化提醒邮件
- 配置预约确认邮件模板
效果:
- 客户通过链接自主选择时间
- 自动发送日历邀请和 Zoom 会议链接
- 提前 24 小时和 1 小时自动提醒
- 咨询结束后自动发送后续跟进邮件
场景二:企业内部会议预约
需求: 创业公司需要为各部门提供会议室预约
配置:
- 创建团队「行政部门」
- 添加 3 位行政同事
- 创建群组事件类型「部门会议」(60分钟)
- 配置轮询功能
效果:
- 员工选择空闲时间
- 自动分配到可用的行政同事
- 生成会议室预订记录
- 发送日历邀请
场景三:在线课程预约
需求: 在线教育平台需要为学员提供试听课预约
配置:
- 创建事件类型「试听课」(30分钟)
- 集成 Zoom
- 设置最大参与人数为 1
- 配置课前提醒
效果:
- 学员自主预约试听时间
- 自动发送课程资料
- 课前自动发送 Zoom 链接
- 课后自动发送课程顾问名片
场景四:多语言预约服务
需求: 外贸企业需要为海外客户提供多语言预约
配置:
- 在 Cal.com 中启用多语言
- 添加英语、西班牙语、法语支持
- 配置多语言邮件模板
- 使用自定义域名
效果:
- 海外客户使用母语预约
- 邮件自动使用客户语言发送
- 提升客户体验
高级配置
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: 如何实现完全白标?
- 使用自定义域名
- 替换 Logo 和品牌色
- 自定义邮件模板
- 隐藏 Cal.com 相关链接
# 环境变量配置
NEXT_PUBLIC_WEBAPP_URL=https://booking.yourdomain.com
NEXT_PUBLIC_WEBSITE_URL=https://yourdomain.com
Q2: 如何处理时区问题?
Cal.com 自动处理时区转换:
- 用户预约时显示其本地时区
- 日历事件自动转换为组织者时区
- 邮件通知包含双方时区信息
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,享受开源带来的自由和灵活性。
相关资源
- GitHub: github.com/calcom/cal.…
- 官网: cal.com/
- 文档: docs.cal.com/
- 应用商店: app.cal.com/apps
如果你觉得这个工具对你有帮助,欢迎关注我们的更多技术分享。