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

Вебхуки. 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
Webhook delivery
Event sourcelink.clickedlink.createdElidoHMAC-SHA256sign + enqueueYour endpointPOST /webhooksapi.acme.com010203
Outbound request
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 }
}
<2s median latency HMAC-SHA256 signed
<2с
Медианная задержка доставки событий
72ч
Окно повторов до окончательного сбоя
HMAC-SHA256
Алгоритм подписи запросов
10+
Поддерживаемых типов событий

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.

10+ event types
  • 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 timeout
    Return 200 immediately; process async if your handler is slow.
  • 8 retry attempts over 72 hours
    Exponential backoff — no avalanche effect on restart.
  • Auto-pause after 30 consecutive failures
    Workspace admin notified by email. Resume from dashboard.
  • One-click replay from log
    Original payload, same event_id — receiver must be idempotent.
Delivery retry timeline
72-hour retry window
Attempt 1
14:02:01
500 Internal Server Error
30s backoffexponential × 1
Attempt 2
14:02:31
timeout (30s)
2 min backoffexponential × 4
Attempt 3
14:04:31
200 OK
Response timeout
30 seconds
Max attempts
8 retries
Window
72 hours
Webhook delivery log
SIEM mode
EventEndpointStatusLatencyTime
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
Showing 5 of 1,284 deliveries · Last 24 hoursEndpoint active

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.

Типы событий
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://...) также подходит для автоматизированного локального тестирования.

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

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

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

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

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