Документация
WebhookLens — это наблюдаемость вебхуков, размещённая в ЕС. Принимайте, инспектируйте, воспроизводите и пересылайте вебхуки с полной видимостью.
-
Создайте бесплатный аккаунт
Зарегистрируйтесь на app.webhooklens.cloud — для начала кредитная карта не требуется. -
Добавьте эндпоинт
В панели управления создайте эндпоинт с целевым URL, куда должны пересылаться ваши вебхуки. WebhookLens сгенерирует уникальный URL прокси. -
Направьте провайдера и отправьте тестовый вебхук
Настройте провайдера на отправку на сгенерированный URL, затем:curl -X POST https://proxy.webhooklens.cloud/wh/your-tenant/your-endpoint -H "Content-Type: application/json" -d '{"test": true}'
Прокси Webhook
WebhookLens работает как обратный прокси для ваших вебхуков. Настройте провайдеров на URL прокси — и WebhookLens будет принимать, логировать, валидировать и пересылать каждый запрос на ваш реальный эндпоинт.
Приём вебхуков
URL прокси соответствует шаблону:
POST https://proxy.webhooklens.cloud/wh/{tenant-slug}/{endpoint-slug}
При поступлении вебхука WebhookLens:
- Принимает полный HTTP-запрос (метод, заголовки, тело, параметры запроса)
- Сохраняет событие в ClickHouse для аналитики и в PostgreSQL для инспекции
- Проверяет подпись (если провайдер настроен для эндпоинта)
- Применяет трансформации (если настроены)
- Пересылает запрос на настроенный целевой URL
- Записывает код ответа, задержку и возможные ошибки
Политика повторных попыток
Неудавшиеся доставки (ответы 5xx или таймауты) повторяются с экспоненциальной задержкой:
| Попытка | Задержка |
|---|---|
| 1-я попытка | 1 секунда |
| 2-я попытка | 5 секунд |
| 3-я попытка | 30 секунд |
| 4-я попытка | 5 минут |
| 5-я попытка | 30 минут |
После 5 неудачных попыток событие помечается как failed. Вы можете воспроизвести его вручную из панели управления или через API в любое время.
Проверка подписи
Если для эндпоинта настроен провайдер, WebhookLens может криптографически верифицировать подпись вебхука с использованием алгоритма подписи провайдера. Верификация подписи (проверка HMAC по вашему секрету подписи) на данный момент доступна для Stripe и GitHub. При неудаче верификации событие помечается флагом, но по-прежнему сохраняется и пересылается (если не включён строгий режим).
Для 9 дополнительных провайдеров WebhookLens автоматически определяет и маркирует источник, анализируя характерные заголовки подписи — секрет не требуется. Это позволяет фильтровать и просматривать события по провайдеру даже без полной криптографической верификации.
Пример: проверка подписи Stripe
# При создании эндпоинта укажите провайдера и секрет подписи
curl -X POST https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "stripe-payments",
"target_url": "https://api.example.com/webhooks/stripe",
"provider": "stripe",
"signing_secret": "whsec_..."
}'
Поддерживаемые провайдеры
| Провайдер | Заголовок подписи | Алгоритм | Поддержка |
|---|---|---|---|
| Stripe | Stripe-Signature | HMAC-SHA256 (timestamp + payload) | Верификация |
| GitHub | X-Hub-Signature-256 | HMAC-SHA256 | Верификация |
| Shopify | X-Shopify-Hmac-SHA256 | HMAC-SHA256 (Base64) | Авто-определение |
| Slack | X-Slack-Signature | HMAC-SHA256 (timestamp + body) | Авто-определение |
| Twilio | X-Twilio-Signature | HMAC-SHA1 | Авто-определение |
| SendGrid | X-Twilio-Email-Event-Webhook-Signature | ECDSA | Авто-определение |
| PayPal | PAYPAL-TRANSMISSION-SIG | HMAC-SHA256 | Авто-определение |
| Paddle | Paddle-Signature | HMAC-SHA256 (timestamp + payload) | Авто-определение |
| Linear | Linear-Signature | HMAC-SHA256 | Авто-определение |
| Atlassian | X-Hub-Signature | HMAC-SHA256 | Авто-определение |
| Discord | X-Signature-Ed25519 | Ed25519 | Авто-определение |
Панель управления
События & Инспектор
Страница событий отображает все входящие вебхуки в реальном времени с автообновлением. В каждой строке показано:
- Статус — переслано (зелёный), ошибка (красный), воспроизведено (синий), таймаут (жёлтый)
- Провайдер — определяется автоматически по заголовкам (Stripe, GitHub, Shopify и др.)
- Эндпоинт — какой эндпоинт принял вебхук
- Задержка — время кругового обхода для пересылки и получения ответа
- Временная метка — относительное время («2с назад») с полной ISO-меткой при наведении
Нажмите на событие, чтобы открыть инспектор:
- Вкладка Запрос: заголовки, тело (JSON/XML с подсветкой синтаксиса), параметры запроса
- Вкладка Ответ: статус ответа цели, заголовки, тело
- Вкладка Хронология: полная хронология доставки включая повторные попытки
- Кнопка Воспроизвести: повторно отправить точно тот же запрос на цель
Эндпоинты
Эндпоинты — основная абстракция. Каждый эндпоинт содержит:
- Уникальный slug, являющийся частью URL прокси
- Целевой URL, куда пересылаются вебхуки
- Необязательный провайдер для проверки подписи
- Необязательные трансформации для изменения payload
- Необязательные правила маршрутизации для доставки на несколько целей
Аналитика
Панель аналитики предоставляет метрики в реальном времени на базе ClickHouse:
- Объём — общее количество событий за период (1ч, 24ч, 7д, 30д)
- Процент успеха — доля ответов 2xx
- Задержка — персентили P50, P95, P99
- По провайдерам — объём и успешность по каждому провайдеру
- По эндпоинтам — объём и успешность по каждому эндпоинту
Оповещения
Настройте оповещения, чтобы быть в курсе проблем:
- Порог ошибок — оповещение при превышении частоты ошибок N% за временное окно
- Порог задержки — оповещение при превышении задержки P95 значения N мс
- Отсутствие событий — оповещение при отсутствии событий в течение N минут
Уведомления могут отправляться в Slack (через входящий вебхук) или на произвольный URL вебхука.
# Создать оповещение
curl -X POST https://app.webhooklens.cloud/api/alerts \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "High failure rate",
"type": "failure_rate",
"threshold": 10,
"window_minutes": 5,
"channel": "slack",
"slack_webhook_url": "https://hooks.slack.com/services/..."
}'
Трансформации & Маршрутизация
Трансформации payload
Трансформации позволяют изменять payload вебхуков перед их пересылкой на цель. Это удобно для обогащения данных, удаления чувствительных полей или адаптации payload к формату вашего API.
Типы трансформаций
| Тип | Описание | Пример |
|---|---|---|
set_field | Установить или перезаписать JSON-поле | Добавить source: "stripe" в тело |
remove_field | Удалить JSON-поле | Удалить data.object.metadata |
rename_field | Переименовать JSON-поле | Переименовать id в external_id |
add_header | Добавить заголовок запроса | Добавить X-Source: webhooklens |
remove_header | Удалить заголовок запроса | Удалить X-Internal-Token |
Пример: добавить поле и заголовок
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transforms": [
{"type": "set_field", "path": "meta.source", "value": "stripe"},
{"type": "add_header", "key": "X-Source", "value": "webhooklens"},
{"type": "remove_field", "path": "data.object.metadata.internal"}
]
}'
Тестирование без применения (dry-run)
Протестируйте трансформации без реальной пересылки:
curl -X POST https://app.webhooklens.cloud/api/transforms/test \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transforms": [
{"type": "set_field", "path": "enriched", "value": true}
],
"payload": {"event": "payment.completed", "amount": 4999}
}'
# Ответ:
# {"event": "payment.completed", "amount": 4999, "enriched": true}
Умная маршрутизация
Направляйте один вебхук на несколько целей по условиям. Это обеспечивает веерную рассылку, условную обработку и резервные цели.
Условия маршрутизации
| Условие | Описание |
|---|---|
all | Всегда пересылать на эту цель (веерная рассылка) |
on_success | Пересылать только если основная цель вернула 2xx |
on_failure | Пересылать только если основная цель вернула не-2xx или произошёл таймаут |
Пример: веерная рассылка на 3 цели
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"target_url": "https://primary.example.com/webhook",
"routes": [
{"url": "https://analytics.example.com/ingest", "condition": "all"},
{"url": "https://backup.example.com/webhook", "condition": "all"},
{"url": "https://alerts.example.com/failure", "condition": "on_failure"}
]
}'
Справочник API
Базовый URL API — https://app.webhooklens.cloud. Для аутентифицированных эндпоинтов требуется Bearer-токен — либо JWT, полученный при входе, либо API-ключ, созданный в разделе Настройки → API-ключи (передаётся через Authorization: Bearer whl_<ключ>).
Аутентификация
Создать новый аккаунт и тенант.
curl -X POST https://app.webhooklens.cloud/api/auth/signup \
-H "Content-Type: application/json" \
-d '{
"email": "вы@пример.com",
"password": "надёжныйпароль",
"tenant_name": "мой-проект"
}'
# Ответ: {"token": "eyJhbG...", "tenant": {"id": "...", "slug": "мой-проект"}}
Аутентификация и получение JWT-токена.
curl -X POST https://app.webhooklens.cloud/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email": "вы@пример.com", "password": "надёжныйпароль"}'
# Ответ: {"token": "eyJhbG..."}
API Эндпоинтов
Получить список всех эндпоинтов текущего тенанта.
curl https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ: [{"id": "...", "slug": "stripe-prod", "target_url": "https://...", ...}]
Создать новый эндпоинт.
curl -X POST https://app.webhooklens.cloud/api/endpoints \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"slug": "stripe-prod",
"target_url": "https://api.example.com/webhooks/stripe",
"provider": "stripe",
"signing_secret": "whsec_..."
}'
Обновить эндпоинт (целевой URL, провайдер, трансформации, маршруты).
curl -X PATCH https://app.webhooklens.cloud/api/endpoints/EP_ID \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_url": "https://новая-цель.example.com/hook"}'
API Событий
Список событий с необязательными фильтрами. Поддерживает пагинацию.
# Список последних событий
curl "https://app.webhooklens.cloud/api/events?limit=50&status=failed" \
-H "Authorization: Bearer YOUR_TOKEN"
# Фильтр по эндпоинту
curl "https://app.webhooklens.cloud/api/events?endpoint_id=EP_ID&limit=20" \
-H "Authorization: Bearer YOUR_TOKEN"
Воспроизвести событие — повторно отправить исходный запрос на цель.
curl -X POST https://app.webhooklens.cloud/api/events/EVT_ID/replay \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ: {"status": "replayed", "response_code": 200, "latency_ms": 142}
API Аналитики
Получить агрегированную аналитику по тенанту.
curl "https://app.webhooklens.cloud/api/analytics/overview?period=24h" \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ:
# {
# "total_events": 12847,
# "success_rate": 99.2,
# "p50_ms": 45,
# "p95_ms": 210,
# "p99_ms": 890,
# "by_provider": [{"provider": "stripe", "count": 8420}, ...],
# "by_status": {"forwarded": 12744, "failed": 62, "replayed": 41}
# }
API Биллинга
Доступен только в облачном режиме.
Получить текущее использование и квоту плана.
curl https://app.webhooklens.cloud/api/billing/quota \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ: {"plan": "starter", "events_used": 12847, "events_limit": 100000, ...}
Создать сессию Stripe Checkout для обновления плана.
curl -X POST https://app.webhooklens.cloud/api/billing/checkout \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ: {"checkout_url": "https://checkout.stripe.com/..."}
Создать сессию Stripe Billing Portal для управления подписками.
curl -X POST https://app.webhooklens.cloud/api/billing/portal \
-H "Authorization: Bearer YOUR_TOKEN"
# Ответ: {"portal_url": "https://billing.stripe.com/..."}
Протестировать набор трансформаций без применения на примере payload.
MCP-сервер
WebhookLens предоставляет сервер Model Context Protocol, чтобы вы могли запрашивать данные о вебхуках прямо из ИИ-ассистентов, таких как Claude. Спрашивайте на естественном языке — «что не доставилось за последний час?», «покажи последнее событие Stripe», «повтори событие EVT_123» — и ассистент сам обратится к WebhookLens. Каждый инструмент ограничен вашим рабочим пространством, поэтому ассистент видит только ваши данные.
Подключение
Сервер доступен по адресу https://app.webhooklens.cloud/mcp и использует аутентификацию OAuth. Никаких API-ключей копировать не нужно: вы входите под своей обычной учётной записью WebhookLens и один раз подтверждаете доступ.
Claude Code (CLI)
claude mcp add --transport http webhooklens https://app.webhooklens.cloud/mcp
При первом использовании в браузере откроется вход в WebhookLens (пароль или GitHub) и запрос на подтверждение доступа. После этого ассистент сможет вызывать инструменты ниже.
Claude.ai (веб)
Добавьте пользовательский коннектор с URL https://app.webhooklens.cloud/mcp и выполните тот же вход. Веб-коннектор работает только через OAuth.
Доступные инструменты
| Инструмент | Описание |
|---|---|
list_endpoints | Список всех эндпоинтов вебхуков в вашем рабочем пространстве |
list_events | Список последних событий (сводки) — фильтр по эндпоинту, статусу, провайдеру, типу, поиску или диапазону времени |
get_event | Получить одно событие целиком: тело запроса, заголовки, ответ и последнюю ошибку |
analytics_overview | Статистика доставки за период: итоги, доля успехов/ошибок, перцентили задержки |
analytics_errors | Наиболее частые повторяющиеся ошибки доставки, сгруппированные по эндпоинту и сообщению |
list_retries | События, ожидающие автоматической повторной отправки |
replay_event | Повторно доставляет сохранённое событие на целевой URL его собственного эндпоинта (с записью в журнал аудита) |
replay_event — единственный инструмент, который что-либо записывает; остальные шесть доступны только для чтения.
Нужна помощь? Напишите нам на support@webhooklens.cloud.