Webhook-алерты: инциденты в ваши системы

Почта и Telegram не исчерпывают сценарии. Webhook-контакты шлют события на ваш HTTPS endpoint — дальше маршрутизация, тикеты и on-call остаются у вас.

Когда выбирают webhook

Уже есть бот, тикет-система или свой on-call — webhook убирает ручной перенос текста.

Как устроены контакты

URL webhook добавляется как контакт оповещений и назначается мониторам, как email или Telegram.

Ожидания к payload

Endpoint должен принимать HTTPS POST от SitePuls; подписи и секреты — по вашей модели безопасности.

Повторы и ошибки

Логируйте на приёме, следите за таймаутами и идемпотентностью.

По сравнению с email

Почта для людей; webhook — для автоматизации.

По сравнению с Telegram

Telegram — человеческий канал; webhook — для машин, часто используют оба.

Чего SitePuls не делает

Готовых коннекторов «на всё» — даётся URL; дальше вы сами вешаете Slack, Jira и т.д.

Дальше

Создайте webhook-контакт, проверьте доставку, затем повесь на самые важные мониторы.

Что можно проверять в SitePuls на этой странице

  • Контакты-вебхуки отправляют JSON методом POST на HTTPS-URL из контакта.
  • Опциональный общий секрет — в заголовке X-SitePuls-Token, если задан в контакте.
  • В настройках контакта выбирают режим полезной нагрузки: generic JSON или Slack-формат.

Куда уходят оповещения об инцидентах

  • Адреса электронной почты в контактах получают письма при открытии и закрытии инцидентов (в рамках настроек уведомлений).
  • Уведомления в Telegram через бота SitePuls после привязки чата к контакту (включая сценарий /start для ожидающих контактов).
  • HTTPS-вебхуки с JSON: тип события, идентификаторы монитора, статус, время, при необходимости id инцидента и короткое сообщение — для своих интеграций.
  • Режим Slack-compatible incoming webhook: отдельный формат полезной нагрузки в настройках контакта.

Иллюстративный пример: имена полей как в продукте, значения — вымышленные.

Пример: JSON тела generic webhook

{
  "event_type": "down",
  "monitor_id": 123,
  "monitor_name": "Пример API",
  "monitor_type": "http",
  "status": "down",
  "timestamp": "2026-03-31T12:00:00Z",
  "message": "Последняя проверка не прошла (пример)",
  "incident_id": 456
}

Пример: payload в стиле Slack incoming webhook

{
  "text": "🔴 *DOWN*\nMonitor: Пример API (http)\nTime: 2026-03-31 12:00:00 UTC\nПоследняя проверка не прошла (пример)\nIncident ID: 456"
}

Вопросы и ответы

Есть встроенный Slack?

Используйте incoming webhook Slack или мост — отдельный OAuth Slack внутри SitePuls не обязателен для базовой доставки.

Можно JSON?

Смотрите формат payload в документации приложения.

Шифрование?

Используйте HTTPS и авторизацию endpoint по угрозам.

Разные webhook на монитор?

Назначайте контакты явно по мониторам.

Webhook заменяет список инцидентов?

Нет — в UI инциденты остаются; webhook — копия наружу.

Лимиты частоты?

Избегайте петель: отвечайте быстро и без лишних повторных побочных эффектов.

Тест без реального сбоя?

Используйте тест контакта в приложении или временный request bin.

Где документация?

Контакты и мониторы настраиваются в веб-приложении после входа.