Мастер тратит до 30 минут в день на ручное перенесение бронирований в Google Calendar. Ошибки, дубли и потеря записей — частая боль салонов, клиник и образовательных центров. Ручное копирование отнимает до 15 часов в месяц — это время можно потратить на клиентов. Средняя экономия бюджета на ручном труде составляет до 30 000 рублей в месяц. Интеграция окупается за несколько месяцев.
Автоматизация с Google Calendar API исключает ошибки и дубли. Клиенты получают точное расписание, а сотрудники — свободное время. Мы реализуем синхронизацию под ключ: новые бронирования с сайта автоматически появляются в календаре, а изменения из календаря — на сайте. В основе — Google Calendar API v3, Google Calendar API, OAuth2 и Webhook-уведомления.
Как работает двусторонняя синхронизация с Google Calendar?
При односторонней синхронизации сайт отправляет события, но не получает обновлений из календаря. Когда мастер переносит запись вручную или администратор меняет время, данные расходятся. Двусторонняя синхронизация решает эту проблему через Webhook: Google Push-уведомления оповещают наш сервер о любых изменениях, и мы обновляем базу сайта.
Как Google уведомляет о изменениях?
Google Calendar использует Push Notifications. После подписки на канал, Google отправляет POST-запрос на ваш Webhook при любом изменении события. Ваш сервер обрабатывает это и синхронизирует данные. Подробнее в документации Google.| Тип синхронизации | Время внедрения | Требования |
|---|---|---|
| Односторонняя (сайт → Google Calendar) | 2–3 дня | OAuth2 токен мастера |
| Двусторонняя (с Webhook) | 4–6 дней | Публичный URL для webhook, поддержка push |
Почему синхронизация через API лучше ручного переноса?
Ручное дублирование отнимает время и создаёт ошибки. API-интеграция исключает человеческий фактор: событие создаётся за секунду после бронирования. Двусторонняя синхронизация через Webhook сохраняет данные в актуальном состоянии без участия мастера. Средняя экономия времени администратора — 10 часов в месяц.
Что входит в работу по интеграции?
Мы предоставляем полный набор работ, чтобы вы получили надёжную синхронизацию без скрытых сюрпризов.
| Что входит | Описание |
|---|---|
| Настройка OAuth2 | Подключение аккаунтов мастеров, безопасное хранение токенов |
| Реализация CRUD событий | Создание, обновление, удаление бронирований в календаре |
| Webhook-обработчик | Приём изменений из Google Calendar и синхронизация с сайтом |
| Мониторинг работы | Отслеживание ошибок, уведомления о сбоях |
| Документация | Описание API-методов и инструкция для мастеров |
| Тестирование | Покрытие основных сценариев, обработка ошибок |
Наша команда имеет 7+ лет опыта в интеграциях с Google API, реализовали более 50 проектов синхронизации для салонов, клиник и образовательных центров. Гарантируем стабильную работу 24/7 — сертифицированные инженеры Google Cloud обеспечат корректную настройку всех компонентов.
Как подключить синхронизацию: пошаговая инструкция
- Согласуйте список мастеров и доступные календари.
- Мы настраиваем OAuth2 авторизацию для каждого мастера.
- Развёртываем обработчик Webhook на вашем сервере.
- Проводим тестирование на реальных бронированиях.
- Запускаем и мониторим работу.
Google Calendar API
Используется OAuth2 для авторизации и Google Calendar API v3:
use Google\Client;
use Google\Service\Calendar;
class GoogleCalendarService
{
private Calendar $calendar;
public function __construct(string $accessToken)
{
$client = new Client();
$client->setAccessToken($accessToken);
$this->calendar = new Calendar($client);
}
public function createEvent(Booking $booking): string
{
$event = new Calendar\Event([
'summary' => "📅 {$booking->service->name} — {$booking->customer_name}",
'description' => $this->buildDescription($booking),
'start' => [
'dateTime' => $booking->starts_at->toRfc3339String(),
'timeZone' => 'Europe/Moscow',
],
'end' => [
'dateTime' => $booking->ends_at->toRfc3339String(),
'timeZone' => 'Europe/Moscow',
],
'attendees' => [
['email' => $booking->customer_email],
],
'reminders' => [
'useDefault' => false,
'overrides' => [
['method' => 'email', 'minutes' => 1440],
['method' => 'popup', 'minutes' => 60],
],
],
'extendedProperties' => [
'private' => ['booking_id' => (string) $booking->id],
],
]);
$created = $this->calendar->events->insert('primary', $event);
return $created->getId();
}
public function updateEvent(Booking $booking): void
{
$event = $this->calendar->events->get('primary', $booking->google_event_id);
$event->setStart(new Calendar\EventDateTime([
'dateTime' => $booking->starts_at->toRfc3339String(),
]));
$event->setEnd(new Calendar\EventDateTime([
'dateTime' => $booking->ends_at->toRfc3339String(),
]));
$this->calendar->events->update('primary', $booking->google_event_id, $event);
}
public function deleteEvent(string $eventId): void
{
$this->calendar->events->delete('primary', $eventId);
}
}
OAuth2 авторизация для мастеров
Каждый мастер проходит авторизацию через Google и выдаёт приложению права https://www.googleapis.com/auth/calendar.events:
Route::get('/integrations/google-calendar/connect', function () {
$client = new Google\Client();
$client->setScopes([\Google\Service\Calendar::CALENDAR_EVENTS]);
$client->setState(auth()->id());
return redirect($client->createAuthUrl());
});
Route::get('/integrations/google-calendar/callback', function (Request $request) {
$client = new Google\Client();
$tokens = $client->fetchAccessTokenWithAuthCode($request->code);
User::find($request->state)->update([
'google_calendar_token' => encrypt(json_encode($tokens)),
]);
return redirect('/settings/integrations')->with('success', 'Google Calendar подключён');
});
Двусторонняя синхронизация через Webhook
Google Calendar Push Notifications позволяют получать уведомления об изменениях в календаре:
// Подписка на уведомления
$this->calendar->events->watch('primary', new Calendar\Channel([
'id' => Str::uuid(),
'type' => 'web_hook',
'address' => 'https://example.com/webhooks/google-calendar',
]));
// Обработчик уведомлений
Route::post('/webhooks/google-calendar', function (Request $request) {
$channelId = $request->header('X-Goog-Channel-ID');
SyncGoogleCalendarChanges::dispatch($channelId);
return response('ok');
});
Сроки и как начать
Свяжитесь с нами для консультации и оценки вашего проекта. Мы предложим оптимальное решение под ваши задачи. Закажите интеграцию под ключ: односторонняя за 2–3 дня, двусторонняя за 4–6 дней. Стоимость рассчитывается индивидуально. Получите консультацию — напишите нам.
Поддержка и надёжность интеграции
После запуска мы сопровождаем интеграцию в течение 30 дней бесплатно. Мониторим доступность webhooks, обновляем OAuth2-токены при истечении срока и оперативно реагируем на изменения в Google Calendar API. Если Google обновит формат уведомлений или введёт новые ограничения на количество запросов — адаптируем решение без дополнительных затрат. Накопленный опыт в реальных проектах позволяет предусмотреть типичные сбои ещё на этапе разработки и минимизировать риски для вашего бизнеса. Обращайтесь — поможем выстроить надёжную и удобную автоматизацию бронирований.







