Elido
Все, что делает Elido
Pro и Business

Вебхуки. События в реальном времени, надёжная доставка.

Конечные точки вебхуков для каждой рабочей области получают события кликов, конверсий и управления ссылками с подписями HMAC-SHA256. Автоматические повторы с экспоненциальной задержкой. Режим SIEM транслирует события на вашу платформу безопасности.

  • 10+ типов событий - клики, конверсии, изменения доменов
  • Подпись HMAC-SHA256 для каждой доставки
  • 72 часа повторов с экспоненциальной задержкой
  • Журнал доставок с повтором в один клик
Доставка вебхука
Источник событияlink.clickedlink.createdElidoHMAC-SHA256подпись + очередьВаш эндпоинтPOST /webhooksapi.acme.com010203
Исходящий запрос
POSThttps://api.acme.com/webhooks
X-Elido-Signature: sha256=3c4d2e1f8a...
Content-Type: application/json
X-Elido-Event: link.clicked
{
"event": "link.clicked",
"event_id": "evt_01hw...",
"data": { link_id, url, country, device, ts }
}
<2 с медианная задержка подпись HMAC-SHA256
<2с
Медианная задержка доставки событий
72ч
Окно повторов до окончательного сбоя
HMAC-SHA256
Алгоритм подписи запросов
10+
Поддерживаемых типов событий

Типы событий

10+ типов событий из коробки

Подписывайтесь на каждом эндпоинте отдельно - получайте только нужные события. Высокообъёмные события кликов по умолчанию приходят пакетами в 5-секундном окне; режим raw-click отдаёт каждое событие отдельно для потоковых обработчиков.

10+ типов событий
  • link.clicked

    Каждый клик-редирект. Пакетный режим (окно 5 с) или raw-click.

  • link.created

    В рабочем пространстве создана новая короткая ссылка.

  • link.updated

    Изменены метаданные ссылки, целевой URL или правила.

  • link.deleted

    Ссылка удалена - обновите все зависимые ссылки.

  • domain.verified

    Кастомный домен прошёл DNS-верификацию.

  • conversion.attributed

    Событие выручки сопоставлено с кликом через Stripe или Shopify.

  • campaign.completed

    Кампания достигла даты завершения или лимита кликов.

  • member.invited

    Добавлен участник рабочего пространства или провижен через SCIM.

Плюс link.expired, link.click_cap_reached, domain.ssl_issued и другие - смотрите полный каталог событий.

Гарантии доставки

Экспоненциальная задержка. Окно 72 часа.

Ответ не из диапазона 2xx или таймаут в 30 секунд запускает автоматические повторы: 30 с → 2 мин → 10 мин → 30 мин → 2 ч → 8 ч → 24 ч → 48 ч. Через 72 часа доставка окончательно помечается как неудачная и удаляется из очереди - но остаётся в журнале доставок для ручного повтора.

  • Таймаут ответа 30 секунд
    Возвращайте 200 сразу; обрабатывайте асинхронно, если ваш обработчик медленный.
  • 8 попыток в течение 72 часов
    Экспоненциальная задержка - никаких лавин при перезапуске.
  • Автопауза после 30 подряд неудачных
    Администратор рабочего пространства получит письмо. Возобновление - из панели.
  • Повтор из журнала одним кликом
    Исходный пейлоад, тот же event_id - получатель должен быть идемпотентным.
Таймлайн повторов доставки
Окно повторов 72 часа
Попытка 1
14:02:01
500 Internal Server Error
Задержка 30 сэкспонента × 1
Попытка 2
14:02:31
таймаут (30 с)
Задержка 2 минэкспонента × 4
Попытка 3
14:04:31
200 OK
Таймаут ответа
30 секунд
Макс. попыток
8 повторов
Окно
72 часа
Журнал доставки вебхуков
Режим SIEM
СобытиеЭндпоинтСтатусЗадержкаВремя
link.clickedapi.acme.com/wh200142ms14:04:31
link.createdapi.acme.com/wh20088ms14:03:19
conversion.attributedlogs.acme.com50030001ms14:02:01
domain.verifiedapi.acme.com/wh20067ms13:58:44
link.deletedlogs.acme.comtimeout30000ms13:55:12
Показано 5 из 1 284 доставок · Последние 24 часаЭндпоинт активен

Журнал доставок

Полный журнал. Фильтр, инспекция, повтор.

Каждая попытка логируется: ID события, тип события, URL эндпоинта, HTTP-статус, тело ответа (до 4 КБ) и задержка. Срок хранения: 30 дней на Pro, 90 дней на Business.

  • Фильтр по типу события, эндпоинту, статусу и диапазону дат
  • У неудачных записей полное тело запроса для отладки
  • Повтор отправляет исходный пейлоад - тот же event_id
  • API: POST /v1/webhooks/deliveries/:id/replay
  • Режим SIEM: структурированный JSON с гарантией повторов 7 дней

Что вы можете делать

  • События кликов, конверсий, ссылок и доменов
  • Подпись запросов HMAC-SHA256
  • Автоматические повторы - до 72 часов
  • Режим SIEM для пересылки событий безопасности
  • Фильтрация по типам событий
  • Журнал доставки вебхуков с возможностью повтора

Что доставляют вебхуки Elido и как работает доставка

Вебхуки полезны только тогда, когда они надежны. Разделы ниже описывают гарантии доставки, проверку подписи, поведение при повторах и режим SIEM.

Типы событий
01

События кликов, конверсий, жизненного цикла ссылок и доменов - настраиваются для каждой конечной точки

Каждая конечная точка вебхука может быть подписана на один или несколько типов событий: click.created (каждый клик с перенаправлением), conversion.created (событие конверсии, полученное от Stripe, Shopify или пользовательской конечной точки), link.created, link.updated, link.deleted, link.expired, link.click_cap_reached, domain.verified, domain.ssl_issued, domain.ssl_error, workspace.member.added, workspace.member.removed. События кликов большого объема могут создавать шум - по умолчанию вебхуки click.created отправляются с 5-секундным окном агрегации (пакетная доставка, до 100 событий в одном пакете). Если вам нужна доставка каждого клика в реальном времени (например, для передачи в потоковый процессор), включите режим raw-click на конечной точке; учтите, что это может генерировать тысячи запросов в минуту для активных рабочих областей и должно включаться только для конечных точек, способных справиться с такой пропускной способностью.

Проверка подписи
02

Каждый запрос подписан HMAC-SHA256 - проверяйте заголовок X-Elido-Signature перед обработкой

Elido подписывает тело каждого запроса вебхука с помощью HMAC-SHA256, используя общий секрет, настроенный для конечной точки. Подпись включается в заголовок X-Elido-Signature в формате 'sha256=<hex_digest>'. Для проверки: вычислите HMAC-SHA256 по необработанному телу запроса, используя общий секрет, и сравните результат со значением заголовка с помощью функции сравнения за постоянное время (для предотвращения атак по времени). Никогда не обрабатывайте пакет вебхука до проверки подписи. Секрет отображается один раз при создании конечной точки; вы можете обновить его в панели управления с окном перекрытия для нулевого времени простоя (старый секрет остается действительным в течение 15 минут после генерации нового). Примеры кода для проверки подписи на Node.js, Python и Go находятся в руководстве по вебхукам по адресу /docs/guides/webhooks.

Поведение при повторах
03

Автоматические повторы с экспоненциальной задержкой - до 72 часов до отметки о неудачной доставке

Если конечная точка возвращает код состояния, отличный от 2xx, или происходит тайм-аут (тайм-аут ответа 30 секунд), Elido повторяет доставку с экспоненциальной задержкой: 30 секунд, 2 минуты, 10 минут, 30 минут, 2 часа, 8 часов, 24 часа, 48 часов. После 72-часового окна доставка помечается как окончательно неудачная и удаляется из очереди повторов. Неудачные доставки отображаются в журнале доставки вебхуков с итоговым кодом состояния HTTP (или 'timeout'). Вы можете повторно отправить любую неудачную доставку из панели управления или через API (POST /v1/webhooks/deliveries/:id/replay) - это полезно для восстановления пакета событий после сбоя в принимающей системе. Конечные точки, возвращающие 5xx более 30 раз подряд, автоматически приостанавливаются, а администратор рабочей области получает уведомление по электронной почте. Возобновите работу конечной точки в панели управления после устранения основной проблемы.

Режим SIEM
04

Режим SIEM транслирует события аудита рабочей области в Splunk, Datadog или любую конечную точку приема логов HTTPS

Режим SIEM - это специальная конфигурация вебхука для пересылки событий безопасности. Вместо событий приложения (клики, конверсии) режим SIEM доставляет события аудита рабочей области: входы через SSO, неудачные попытки входа, создание/обновление/удаление ключей API, события подготовки SCIM, изменения ролей, ротации секретов вебхуков и действия администратора (удаление ссылок, массовый экспорт). Формат полезной нагрузки - структурированный JSON со стандартной схемой (отметка времени, субъект, действие, объект, workspace_id, ip_address, user_agent), предназначенный для приема в распространенные платформы SIEM. Для вебхуков SIEM гарантируется доставка с окном повторов до 7 дней, и они подписываются отдельно от вебхуков приложения. Протестированные интеграции: Splunk HTTP Event Collector (HEC), Datadog Logs API, Elastic Logstash HTTP input и любая общая конечная точка HTTPS для логов. Режим SIEM - это функция только для тарифа Business.

Журнал доставки
05

Полный журнал доставки с телом запроса, кодом ответа и повтором неудачных доставок в один клик

Каждая попытка доставки вебхука регистрируется: ID события, тип события, URL конечной точки, отметка времени доставки, код состояния HTTP, тело ответа (до 4 КБ) и задержка. Журнал доставки можно фильтровать по типу события, конечной точке, диапазону дат и статусу (доставлено, повторяется, ошибка). Неудачные доставки включают полное тело запроса, чтобы вы могли просмотреть событие, вызвавшее сбой, без повторной отправки. Повтор: POST /v1/webhooks/deliveries/:id/replay отправляет исходную полезную нагрузку (не новое событие) на конечную точку - на стороне приемника требуется идемпотентность. Срок хранения журнала доставки составляет 30 дней для Pro, 90 дней для Business. Для постоянного аудита событий вебхуков настройте конечную точку SIEM или включите запланированный экспорт журнала аудита.

Инженерные команды, использующие вебхуки Elido в продакшене

Имена являются заполнителями - реальные кейсы клиентов появятся здесь по мере их публикации.

Мы используем вебхуки click.created в пакетном режиме для наполнения собственного конвейера аналитики. Проверка подписи HMAC и журнал доставки с возможностью повтора сэкономили нам часы при отладке частичного сбоя - мы переотправили пакет пропущенных событий из панели управления без восстановления событий из источника.

P
Platform engineering, B2B SaaS, Амстердам
Senior Platform Engineer

Трансляция событий аудита рабочей области в режиме SIEM в наш Splunk HEC была именно той корпоративной функцией, которая требовалась нашей команде InfoSec. События входа через SSO и ротации ключей API в Splunk с правильной схемой позволили нам сопоставить события доступа Elido с нашими правилами оповещения SIEM в течение одного дня после настройки.

S
Security engineering, fintech, Мюнхен
Information Security Engineer

Вебхуки link.expired запускают наш внутренний рабочий процесс для обновления базы данных печатных материалов - когда ссылка QR-кода истекает, наша операционная команда автоматически получает задачу на обновление физической метки. Никакого ручного мониторинга состояния истечения ссылок.

I
Integration engineering, logistics SaaS, Рига
Integration Engineer

Вебхуки Elido против Bitly и Short.io

Ни Bitly, ни Short.io не предлагают исходящие вебхуки с подписью HMAC и гарантиями повтора. Это сравнение честно указывает на этот пробел.

FeatureElidoBitlyShort.io
Исходящие вебхукиДа - конечные точки для каждой рабочей области, подписка по типам событийНедоступноДа - базовый вебхук при клике
Подпись HMAC-SHA256Да - каждая доставка подписана, предоставлены примеры кодаНе применимоЧастично - заголовок подписи присутствует, но не документирован
Автоматические повторыДа - экспоненциальная задержка, 72-часовое окноНе применимоНет повторов - отправил и забыл
Журнал доставки с повторомДа - 30 дней в Pro, 90 дней в Business, повтор в один кликНе применимоНет журнала доставки
Режим аудита событий SIEMДа - в тарифе Business, структурированный JSON для приема в SIEMНедоступноНедоступно
Автопауза конечной точки при сбоеДа - пауза после 30 последовательных сбоев, уведомление администратораНе применимоНедоступно
Типы событийКлик, конверсия, жизненный цикл ссылки, домен, аудитНе применимоТолько клики

Вопросы по вебхукам

Как проверить подпись HMAC-SHA256?

Прочитайте необработанное тело запроса в виде байтов (до любого парсинга JSON), вычислите HMAC-SHA256 по этим байтам, используя общий секрет вашей конечной точки, закодируйте результат в base16 (hex) и сравните его со значением в заголовке X-Elido-Signature после удаления префикса 'sha256='. Используйте функцию сравнения за постоянное время (например, hmac.compare_digest в Python, crypto.timingSafeEqual в Node.js), чтобы предотвратить атаки по времени. Никогда не сравнивайте подпись стандартным оператором равенства строк. Примеры кода для Node.js, Python и Go находятся по адресу /docs/guides/webhooks#verification.

Что должен возвращать мой приемник вебхуков?

Возвращайте HTTP 200 (или любой код состояния 2xx) в течение 30 секунд. Тело ответа игнорируется - вы можете вернуть пустое тело или { ok: true }. Если ваша обработка занимает более 30 секунд, немедленно верните 200 и обрабатывайте событие асинхронно (поместите во внутреннюю очередь, верните 200, обрабатывайте вне пути запроса). Возврат 4xx обрабатывается так же, как 5xx для целей повтора - оба вызывают повторную попытку. Возвращайте 200, даже если событие не относится к вашей интеграции (например, событие link.created, которое вам не нужно), чтобы избежать лишних повторов.

Как работает идемпотентность для событий вебхуков?

Каждая полезная нагрузка вебхука включает поле event_id (UUID). Используйте его в качестве ключа идемпотентности на вашем приемнике: если вы получаете один и тот же event_id дважды (из-за повтора после частичного сбоя), обработайте его только один раз. Храните полученные ID событий в таблице дедупликации с TTL не менее 72 часов (окно повторов). Полезная нагрузка при повторе идентична исходной - тот же event_id, то же тело - поэтому простой проверки 'видел ли я этот event_id?' достаточно.

Почему моя конечная точка была приостановлена автоматически?

Конечные точки автоматически приостанавливаются после 30 последовательных неудач доставки (не 2xx или тайм-аут). Это предотвращает бесконечные попытки Elido достучаться до сломанной точки. Исправьте основную проблему (обычно: URL изменился, сервер не работает или превышен 30-секундный тайм-аут из-за медленной обработки), затем возобновите работу конечной точки в панели управления. После возобновления Elido не переотправляет автоматически события, которые были пропущены во время паузы - отправьте их вручную из журнала доставки, если вам нужно их восстановить.

Могу ли я получать события кликов в реальном времени для каждого отдельного клика?

Да - включите режим raw-click на конечной точке. В режиме raw-click Elido доставляет события click.created индивидуально без окна пакетной обработки в течение 2 секунд после клика. Имейте в виду, что активная рабочая область может генерировать тысячи событий в минуту в режиме raw-click; убедитесь, что ваш приемник может справиться с такой пропускной способностью. Для большинства аналитических задач достаточно стандартной 5-секундной пакетной агрегации (до 100 кликов в пакете), которая создает гораздо меньше HTTP-запросов.

Каков предел размера полезной нагрузки для событий вебхуков?

Полезная нагрузка отдельных событий составляет менее 10 КБ. Пакетные полезные нагрузки кликов (режим по умолчанию) могут содержать до 100 событий в пакете, с общим ограничением размера полезной нагрузки в 100 КБ. Если пакет превышает 100 КБ, он автоматически разбивается на несколько доставок. Большие поля метаданных кликов (например, длинные URL рефереров) обрезаются до 2 КБ на поле. Если ваш приемник применяет строгое ограничение на размер полезной нагрузки, настройте режим raw-click (одно событие на доставку) вместо пакетного режима.

Есть ли способ протестировать вебхуки локально во время разработки?

Используйте инструмент, такой как ngrok, Cloudflare Tunnel или localtunnel, чтобы предоставить доступ к вашему локальному серверу через публичный HTTPS URL, а затем зарегистрируйте этот URL как конечную точку вебхука в вашей тестовой рабочей области. Кроме того, используйте кнопку тестового запуска вебхука в панели управления, чтобы отправить образец полезной нагрузки для любого типа события на зарегистрированную конечную точку без запуска реального события. Elido CLI (elido webhook test --event click.created --endpoint https://...) также подходит для автоматизированного локального тестирования.

Что происходит с событиями вебхуков во время запланированного технического обслуживания?

События, сгенерированные во время технического обслуживания, ставятся в очередь в нашем потоке событий и доставляются после окончания работ. Страница состояния Elido (status.elido.app) заранее сообщает о запланированных окнах обслуживания. SLA доставки вебхуков исключает объявленные окна обслуживания. Для типичного окна обслуживания в 30–60 минут 72-часовое окно повторов означает, что события не будут потеряны безвозвратно - они будут доставлены в том порядке, в котором были сгенерированы, как только конечная точка снова станет доступна.

Готовы попробовать?

Начните с бесплатного тарифа, перейдите на платный, когда вам понадобится пользовательский домен.