Интеграция Cal.com для онлайн-записи на сайте
Cal.com — open-source альтернатива Calendly. Можно использовать как SaaS (cal.com) или развернуть на собственном сервере. Даёт полный контроль над данными, брендингом и настройками.
Self-hosted vs облако
| Параметр | cal.com (облако) | Self-hosted |
|---|---|---|
| Стоимость | Free / Pro от $12/мес | Только инфраструктура |
| Брендинг | Логотип Cal.com на виджете | Полностью кастомный |
| Данные | На серверах Cal.com | На вашем сервере |
| Настройка | Минуты | 2–4 часа |
Встраивание через npm-пакет
import { getCalApi } from '@calcom/embed-react';
import { useEffect } from 'react';
export function BookingButton() {
useEffect(() => {
(async () => {
const cal = await getCalApi({ namespace: 'consultation' });
cal('ui', {
theme: 'light',
hideEventTypeDetails: false,
layout: 'month_view',
styles: { branding: { brandColor: '#4F46E5' } },
});
})();
}, []);
return (
<button
data-cal-namespace="consultation"
data-cal-link="your-company/consultation"
data-cal-config='{"layout":"month_view"}'
className="btn-primary"
>
Записаться на консультацию
</button>
);
}
Cal.com API v2
Cal.com предоставляет REST API для программного управления:
const cal = new CalApi({ apiKey: process.env.CAL_API_KEY });
// Получение забронированных встреч
const bookings = await cal.bookings.list({
status: 'upcoming',
take: 50,
});
// Создание события программно
const event = await cal.bookings.create({
eventTypeId: 123,
start: '2025-03-01T10:00:00Z',
attendee: {
name: 'Иван Петров',
email: '[email protected]',
timeZone: 'Europe/Moscow',
},
});
Webhooks Cal.com
Route::post('/webhooks/cal', function (Request $request) {
// Верификация подписи
$signature = hash_hmac('sha256', $request->getContent(), config('services.cal.webhook_secret'));
if (!hash_equals($signature, $request->header('X-Cal-Signature-256'))) {
abort(401);
}
$payload = $request->json();
match($payload['triggerEvent']) {
'BOOKING_CREATED' => CrmLead::createFromCal($payload['payload']),
'BOOKING_CANCELLED' => CrmLead::cancelFromCal($payload['payload']['uid']),
default => null,
};
return response('ok');
});
Сроки
Интеграция Cal.com (облако) с виджетом и webhook: 2–3 рабочих дня. Self-hosted + кастомный брендинг: 4–5 дней.







