← Блог

Мониторинг endpoint приёма webhooks в SaaS

Stripe, GitHub и маркетплейсы шлют POST на /webhooks/stripe, а не на публичный GET /api/v1/users. Если ingestion отдаёт 500 или таймаут, биллинг встаёт, а маркетинговый /health зелёный.

StillOnline выполняет внешние HTTP GET (или выбранный метод) по зарегистрированным URL. Webhook-маршруты обычно только POST — ниже паттерны, как доказать работу ingestion без неподписанного трафика.

Краткий ответ

Не вешайте StillOnline на URL, который принимает только POST с подписью — проба по умолчанию GET и увидит 405 или 401. Сделайте GET /webhooks/health или включите готовность ingestion в /api/health. Free — одна проверка раз в пять минут, две неудачи подрядDOWN и алерт. Для Stripe — платформенный гайд. Pro — до 10 проверок.

2xx, 401 и 405

ОтветПробаСмысл
200 на healthЗелёныйСтек ingestion доступен
401 на POST без подписиКрасный, если так пробуетеНорма для unsigned GET — неверный URL
405КрасныйGET не реализован — нужен health
500КрасныйHandler или БД

Webhooks Stripe требуют POST и Stripe-Signature — внешний монитор не подделает событие.

Паттерн — отдельный health ingestion

GET /api/webhooks/health
{ "status": "ok", "last_event_at": "2026-06-08T12:00:00Z" }
  • Без секретов в JSON.
  • 503 при переполнении очереди (опционально).
  • Полный HTTPS URL в StillOnline.
curl -sS -o /dev/null -w "%{http_code}\n" https://api.yourproduct.com/api/webhooks/health

Синтетический POST (не в StillOnline)

Cron или GitHub Actions с тестовой подписью — в CI; StillOnline держит health URL, от которого зависят клиенты.

Component на странице статуса

Webhooks или Интеграции отдельно от APIAPI-only.

Настройка StillOnline

  1. Проект.
  2. HTTP-проверка → health URL → 200.
  3. Текст для Платежей при сбое Stripe — сторонние статусы.
  4. Telegram-алерты.

Связанные материалы

FAQ

Может ли StillOnline POST с моим signing secret?

Нет. Нужен GET health или синтетика в CI.

Почему webhook URL красный?

Часто 405/401 на GET. Добавьте /webhooks/health.

Одна проверка с публичным REST API?

На Free один URL — объедините в /health или Pro.

StillOnline валидирует тело webhook?

Нет — только код и время ответа по RFC 9110.