Вебхуки. Real-time events, delivered reliably.
Конечные точки вебхуков для каждой рабочей области получают события кликов, конверсий и управления ссылками с подписями HMAC-SHA256. Автоматические повторы с экспоненциальной задержкой. Режим SIEM транслирует события на вашу платформу безопасности.
- 10+ event types — clicks, conversions, domain changes
- HMAC-SHA256 signature on every delivery
- 72-hour exponential-backoff retry
- Delivery log with one-click replay
Event types
10+ event types out of the box
Subscribe per endpoint — receive only the events you care about. High-volume click events ship in a 5-second batched window by default; raw-click mode delivers per-click for stream processors.
- link.clicked
Every redirect click. Batched (5s window) or raw-click mode.
- link.created
A new short link was created in the workspace.
- link.updated
Link metadata, target URL, or rules changed.
- link.deleted
Link removed — update any downstream references.
- domain.verified
Custom domain passed DNS verification.
- conversion.attributed
Revenue event matched to a click via Stripe or Shopify.
- campaign.completed
Campaign reached its end date or click cap.
- member.invited
Workspace member added or SCIM-provisioned.
Plus link.expired, link.click_cap_reached, domain.ssl_issued, and more — see the full event catalog.
Delivery guarantees
Exponential backoff. 72-hour window.
A non-2xx response or a 30-second timeout triggers automatic retries: 30 s → 2 min → 10 min → 30 min → 2 h → 8 h → 24 h → 48 h. After 72 hours the delivery is permanently failed and removed from the queue — but still in the delivery log for manual replay.
- 30-second response timeoutReturn 200 immediately; process async if your handler is slow.
- 8 retry attempts over 72 hoursExponential backoff — no avalanche effect on restart.
- Auto-pause after 30 consecutive failuresWorkspace admin notified by email. Resume from dashboard.
- One-click replay from logOriginal payload, same event_id — receiver must be idempotent.
| Event | Endpoint | Status | Latency | Time | |
|---|---|---|---|---|---|
link.clicked | api.acme.com/wh | 200 | 142ms | 14:04:31 | |
link.created | api.acme.com/wh | 200 | 88ms | 14:03:19 | |
conversion.attributed | logs.acme.com | 500 | 30001ms | 14:02:01 | |
domain.verified | api.acme.com/wh | 200 | 67ms | 13:58:44 | |
link.deleted | logs.acme.com | timeout | 30000ms | 13:55:12 |
Delivery log
Full log. Filter, inspect, replay.
Every attempt is logged: event ID, event type, endpoint URL, HTTP status, response body (up to 4 KB), and latency. Retention is 30 days on Pro, 90 days on Business.
- Filter by event type, endpoint, status, and date range
- Failed entries show full request body for debugging
- Replay sends original payload — same event_id
- API: POST /v1/webhooks/deliveries/:id/replay
- SIEM mode: structured JSON with 7-day retry guarantee
What you can do
- События кликов, конверсий, ссылок и доменов
- Подпись запросов HMAC-SHA256
- Автоматические повторы — до 72 часов
- Режим SIEM для пересылки событий безопасности
- Фильтрация по типам событий
- Журнал доставки вебхуков с возможностью повтора
Что доставляют вебхуки Elido и как работает доставка
Вебхуки полезны только тогда, когда они надежны. Разделы ниже описывают гарантии доставки, проверку подписи, поведение при повторах и режим SIEM.
События кликов, конверсий, жизненного цикла ссылок и доменов — настраиваются для каждой конечной точки
Каждая конечная точка вебхука может быть подписана на один или несколько типов событий: 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 на конечной точке; учтите, что это может генерировать тысячи запросов в минуту для активных рабочих областей и должно включаться только для конечных точек, способных справиться с такой пропускной способностью.
Каждый запрос подписан HMAC-SHA256 — проверяйте заголовок X-Elido-Signature перед обработкой
Elido подписывает тело каждого запроса вебхука с помощью HMAC-SHA256, используя общий секрет, настроенный для конечной точки. Подпись включается в заголовок X-Elido-Signature в формате 'sha256=<hex_digest>'. Для проверки: вычислите HMAC-SHA256 по необработанному телу запроса, используя общий секрет, и сравните результат со значением заголовка с помощью функции сравнения за постоянное время (для предотвращения атак по времени). Никогда не обрабатывайте пакет вебхука до проверки подписи. Секрет отображается один раз при создании конечной точки; вы можете обновить его в панели управления с окном перекрытия для нулевого времени простоя (старый секрет остается действительным в течение 15 минут после генерации нового). Примеры кода для проверки подписи на Node.js, Python и Go находятся в руководстве по вебхукам по адресу /docs/guides/webhooks.
Автоматические повторы с экспоненциальной задержкой — до 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 транслирует события аудита рабочей области в 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.
Полный журнал доставки с телом запроса, кодом ответа и повтором неудачных доставок в один клик
Каждая попытка доставки вебхука регистрируется: ID события, тип события, URL конечной точки, отметка времени доставки, код состояния HTTP, тело ответа (до 4 КБ) и задержка. Журнал доставки можно фильтровать по типу события, конечной точке, диапазону дат и статусу (доставлено, повторяется, ошибка). Неудачные доставки включают полное тело запроса, чтобы вы могли просмотреть событие, вызвавшее сбой, без повторной отправки. Повтор: POST /v1/webhooks/deliveries/:id/replay отправляет исходную полезную нагрузку (не новое событие) на конечную точку — на стороне приемника требуется идемпотентность. Срок хранения журнала доставки составляет 30 дней для Pro, 90 дней для Business. Для постоянного аудита событий вебхуков настройте конечную точку SIEM или включите запланированный экспорт журнала аудита.
Инженерные команды, использующие вебхуки Elido в продакшене
Имена являются заполнителями — реальные кейсы клиентов появятся здесь по мере их публикации.
“Мы используем вебхуки click.created в пакетном режиме для наполнения собственного конвейера аналитики. Проверка подписи HMAC и журнал доставки с возможностью повтора сэкономили нам часы при отладке частичного сбоя — мы переотправили пакет пропущенных событий из панели управления без восстановления событий из источника.”
“Трансляция событий аудита рабочей области в режиме SIEM в наш Splunk HEC была именно той корпоративной функцией, которая требовалась нашей команде InfoSec. События входа через SSO и ротации ключей API в Splunk с правильной схемой позволили нам сопоставить события доступа Elido с нашими правилами оповещения SIEM в течение одного дня после настройки.”
“Вебхуки link.expired запускают наш внутренний рабочий процесс для обновления базы данных печатных материалов — когда ссылка QR-кода истекает, наша операционная команда автоматически получает задачу на обновление физической метки. Никакого ручного мониторинга состояния истечения ссылок.”
Вебхуки Elido против Bitly и Short.io
Ни Bitly, ни Short.io не предлагают исходящие вебхуки с подписью HMAC и гарантиями повтора. Это сравнение честно указывает на этот пробел.
| Feature | Elido | Bitly | Short.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://...) также подходит для автоматизированного локального тестирования.
Что происходит с событиями вебхуков во время запланированного технического обслуживания?
События, сгенерированные во время технического обслуживания, ставятся в очередь в Redpanda и доставляются после окончания работ. Страница состояния Elido (status.elido.app) заранее сообщает о запланированных окнах обслуживания. SLA доставки вебхуков исключает объявленные окна обслуживания. Для типичного окна обслуживания в 30–60 минут 72-часовое окно повторов означает, что события не будут потеряны безвозвратно — они будут доставлены в том порядке, в котором были сгенерированы, как только конечная точка снова станет доступна.
Keep reading
Синхронное дополнение API к асинхронным вебхукам — создание и запрос ссылок программно.
Получайте события конверсий через вебхуки от Stripe и Shopify — сторона входящих вебхуков.
Режим SIEM доставляет события аудита рабочей области — входы SSO, подготовку SCIM, изменения ролей.
События кликов в ClickHouse — альтернатива получению кликов через вебхук на стороне запросов.
Готовы попробовать?
Начните с бесплатного тарифа, перейдите на платный, когда вам понадобится пользовательский домен.