Cal.com:开源日程预约管理平台,Calendly的最佳替代方案
背景
在日常生活和工作中,我们经常需要与他人协调时间:
- 销售人员需要与潜在客户预约演示时间
- 医生需要为患者安排就诊时间
- 咨询师需要与来访者预约咨询时段
- 导师需要与学生预约会议时间
传统的邮件来回沟通方式效率低下,经常出现时区混淆、时间冲突等问题。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 一键部署(推荐)
# 克隆仓库gitclone https://github.com/calcom/cal.com.gitcdcal.com# 复制环境配置文件cp.env.example .env# 生成必要的密钥# NEXTAUTH_SECRETopenssl rand-base6432# CALENDSO_ENCRYPTION_KEYopenssl rand-base6424# 编辑 .env 文件,填入上述密钥# 拉取 Docker 镜像dockercompose pull# 启动服务(包含 PostgreSQL 数据库)dockercompose up-d访问http://localhost:3000即可看到安装向导。
快速启动(开发模式)
# 克隆仓库gitclone https://github.com/calcom/cal.com.gitcdcal.com# 安装依赖yarn# 复制并配置环境变量cp.env.example .env# 启动开发服务器(包含测试数据库)yarndx测试账号:
| 邮箱 | 密码 | 角色 |
|---|---|---|
| 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-XGET"https://your-cal.com/api/v1/availability/timeslots"\-H"Authorization: Bearer YOUR_API_KEY"# 创建预约curl-XPOST"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_keySENDGRID_EMAIL=your_verified_emailNEXT_PUBLIC_SENDGRID_SENDER_NAME="Your Company"SMTP
EMAIL_SERVER_HOST=smtp.example.comEMAIL_SERVER_PORT=587EMAIL_SERVER_USER=your_usernameEMAIL_SERVER_PASSWORD=your_password短信提醒(Twilio)
TWILIO_ACCOUNT_SID=your_account_sidTWILIO_AUTH_TOKEN=your_auth_tokenTWILIO_PHONE_NUMBER=+1234567890NEXT_PUBLIC_SENDER_ID=YourBrand常见问题
Q1: 如何实现完全白标?
- 使用自定义域名
- 替换 Logo 和品牌色
- 自定义邮件模板
- 隐藏 Cal.com 相关链接
# 环境变量配置NEXT_PUBLIC_WEBAPP_URL=https://booking.yourdomain.comNEXT_PUBLIC_WEBSITE_URL=https://yourdomain.comQ2: 如何处理时区问题?
Cal.com 自动处理时区转换:
- 用户预约时显示其本地时区
- 日历事件自动转换为组织者时区
- 邮件通知包含双方时区信息
Q3: 如何限制预约时段?
# 在事件类型中配置可用时间:周一至周五:9:00-18:00周六:10:00-14:00周日:不可用# 提前时间最少提前预约:2 小时最多提前预约:30 天Q4: 如何备份数据?
# 导出 PostgreSQL 数据dockercomposeexecdatabase pg_dump-Upostgres calcom>backup.sql# 导入数据dockercomposeexec-Tdatabase psql-Upostgres calcom<backup.sqlQ5: 免费版和企业版区别?
| 功能 | 开源版 | 企业版 |
|---|---|---|
| 自托管 | ✅ | ✅ |
| 基础预约 | ✅ | ✅ |
| 团队日历 | ❌ | ✅ |
| SSO 登录 | ❌ | ✅ |
| 支付集成 | ❌ | ✅ |
| 工作流自动化 | ❌ | ✅ |
| 视频会议 | ❌ | ✅ |
| 优先支持 | ❌ | ✅ |
总结
Cal.com 是一款功能强大、灵活可扩展的开源日程预约平台,具有以下核心优势:
| 优势 | 说明 |
|---|---|
| ✅ 完全开源 | AGPLv3 协议,代码透明 |
| ✅ 数据自主 | 自托管部署,数据完全掌控 |
| ✅ 灵活定制 | 完全白标,品牌一致性 |
| ✅ 丰富集成 | 支持 100+ 第三方服务 |
| ✅ API 驱动 | 完整 API 支持二次开发 |
| ✅ 多语言 | 支持 30+ 语言 |
| ✅ 活跃社区 | 持续迭代,社区支持 |
相比 Calendly 等商业方案,Cal.com 以开源为核心,让用户真正掌控自己的预约数据和业务流程。建议需要预约系统的个人和企业考虑部署 Cal.com,享受开源带来的自由和灵活性。
相关资源
- GitHub: https://github.com/calcom/cal.com
- 官网: https://cal.com/
- 文档: https://docs.cal.com/
- 应用商店: https://app.cal.com/apps
如果你觉得这个工具对你有帮助,欢迎关注我们的更多技术分享。
