Разработка и развёртывание · 9 мин чтения
Настройка интеграций: ID, ключи и вебхуки
Где взять credentials и какие redirect URI или вебхуки зарегистрировать для Google, Microsoft, Apple, Twenty, Zoom, Stripe, Twilio, Telegram и Resend.
Каждая интеграция необязательна и включается переменными окружения. Пока ключи не заданы, провайдер бездействует. Ниже для каждого сервиса указано, где получить credentials, какой redirect URI или вебхук зарегистрировать и в какую переменную окружения записать значение.
Две основы нужны всему. Первая — APP_URL, публичный базовый URL развёртывания, например https://braveday.work. Каждый redirect URI и вебхук ниже — это APP_URL плюс фиксированный путь. Укажите точный публичный HTTPS origin без завершающего слэша. Вторая — после изменения env vars пересоберите и заново разверните приложение: часть значений читается при сборке. Redirect URI и URL вебхуков должны ТОЧНО совпадать с зарегистрированными в консоли провайдера, иначе callback будет отклонён.
Google Calendar и вход через Google
- В Google Cloud Console создайте или выберите project и включите Google Calendar API.
- Настройте OAuth consent screen, добавьте свой аккаунт как test user или опубликуйте приложение.
- Откройте Credentials → Create OAuth client ID → Web application. Authorized redirect URI: APP_URL/api/calendars/connect/google/callback
- Задайте GOOGLE_CLIENT_ID и GOOGLE_CLIENT_SECRET, а также NEXT_PUBLIC_GOOGLE_AUTH=1, чтобы показать кнопку входа через Google.
- Scopes: calendar.events, calendar.readonly, openid, email, profile.
- Push-синхронизация в реальном времени автоматически регистрируется на APP_URL/api/webhooks/google. Google требует подтверждённый HTTPS-домен; если он недоступен, система продолжит работать и перейдёт на polling.
Microsoft 365 / Outlook
- Azure Portal → Microsoft Entra ID → App registrations → New registration.
- Redirect URI (Web): APP_URL/api/calendars/connect/microsoft/callback
- Certificates & secrets → New client secret → скопируйте VALUE.
- API permissions → Microsoft Graph → Delegated: Calendars.ReadWrite, User.Read, offline_access, openid, email, profile.
- Задайте MICROSOFT_CLIENT_ID — Application/client ID — и MICROSOFT_CLIENT_SECRET — значение secret.
Apple iCloud
Настройки разработчика и env vars не нужны. Apple Calendar подключается по CalDAV с личным паролем приложения: пользователь создаёт его на appleid.apple.com в Sign-In & Security → App-Specific Passwords и вставляет в Настройки → Календари → Apple. Настоящий пароль Apple ID вводить нельзя.
Twenty — синхронизация с собственной CRM
- Разверните Twenty на публичном HTTPS origin, например https://crm.ravefox.dev.
- Зарегистрируйте публичный OAuth-клиент с callback APP_URL/api/integrations/crm/twenty/callback и grants authorization_code и refresh_token.
- Задайте TWENTY_BASE_URL и TWENTY_CLIENT_ID. Динамически зарегистрированный client использует PKCE и не имеет client secret.
- Пользователь подключает CRM одним нажатием в Настройки → CRM. Бронирования создают или находят Person и синхронизируют связанную Task.
Zoom — ссылки на видеовстречи
- Zoom App Marketplace → Develop → Build App → OAuth (user-managed).
- Redirect / OAuth allow-list URL: APP_URL/api/integrations/zoom/callback; добавьте scope для создания встреч.
- Задайте ZOOM_CLIENT_ID и ZOOM_CLIENT_SECRET. Без них кнопка подключения скрыта.
- Для Google Meet отдельная настройка не нужна — он приходит с подключением Google Calendar. Ссылки Teams создаются через подключение Microsoft.
Stripe — биллинг Pro только для Cloud
- Developers → API keys → скопируйте Secret key в STRIPE_SECRET_KEY.
- Products → добавьте Product с RECURRING price $9/seat/mo. Откройте цену, скопируйте API ID, начинающийся с price_, в STRIPE_PRICE_PRO. Нужен именно ID price_, а не число.
- Developers → Webhooks → Add endpoint: APP_URL/api/webhooks/stripe. Events: checkout.session.completed, customer.subscription.created / updated / deleted. Скопируйте signing secret в STRIPE_WEBHOOK_SECRET.
Примечание
После оплаты вебхук переводит организацию на Pro и отслеживает изменение мест и отмену. BraveDay также сверяет тариф при возврате с успешного checkout, поэтому один пропущенный вебхук не оставит аккаунт в неверном состоянии. Для дальнейших изменений вебхук всё равно обязателен.
Twilio — напоминания по SMS и WhatsApp
- В Twilio Console скопируйте Account SID и Auth Token.
- Задайте TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_SMS_FROM с номером E.164 и TWILIO_WHATSAPP_FROM в формате whatsapp:+….
- Для входящих ответов направьте incoming-message webhook номера или Messaging Service на APP_URL/api/webhooks/twilio.
Resend — главная ошибка настройки email
- Resend → API Keys → создайте ключ и запишите его в RESEND_API_KEY.
- Domains → Add domain, добавьте DNS records и дождитесь статуса Verified.
- Задайте EMAIL_FROM с адресом НА подтверждённом домене, например "BraveDay <no-reply@yourdomain.com>".
Обратите внимание
Неподтверждённый или тестовый домен вроде example.com приведёт к отклонению КАЖДОГО письма с ошибкой 550 domain is not verified. Подтверждения и напоминания перестанут доходить. Вместо Resend можно использовать любой SMTP-сервер через SMTP_URL.
Совет
Полная таблица env vars, redirect URI и вебхуков находится в docs/INTEGRATIONS.md репозитория. Каждая ошибка логируется структурированным событием — billing_checkout_failed, confirmation_email_failed, sync_watch_failed, — которое можно найти в логах контейнера.
Связанные руководства
Собственное развёртывание
Как BraveDay разворачивается на вашем облачном сервере и из чего состоит система.
Подключение календаря
Свяжите Google, Outlook, iCloud или календарную ленту, чтобы занятое время никогда не предлагалось для записи.
Синхронизация с CRM Twenty
Каждое бронирование автоматически попадает в CRM как контакт и связанная задача.
Для разработчиков: API, вебхуки и embed
Ключи и REST endpoints, подписанные события бронирований и встраиваемый виджет.
Хотите попробовать? Начать бесплатно, или открыть все руководства.