Tout ce qu'Elido fait
Pro & Business

Webhooks. Événements en temps réel, livrés de manière fiable.

Des endpoints webhook par workspace reçoivent les événements de clics, conversions et gestion de liens avec des signatures HMAC-SHA256. Nouvelles tentatives automatiques avec backoff exponentiel. Le mode SIEM diffuse les événements vers votre plateforme de sécurité.

  • 10+ types d’événements - clics, conversions, changements de domaine
  • Signature HMAC-SHA256 sur chaque livraison
  • Réessais avec backoff exponentiel sur 72 heures
  • Journal de livraison avec replay en un clic
Livraison du webhook
Source d’événementlink.clickedlink.createdElidoHMAC-SHA256signer + mettre en fileVotre endpointPOST /webhooksapi.acme.com010203
Requête sortante
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 s de latence médiane Signé HMAC-SHA256
<2s
Latence médiane de livraison
72h
Fenêtre de tentatives avant échec final
HMAC-SHA256
Algorithme de signature
10+
Types d'événements supportés

Types d’événements

10+ types d’événements prêts à l’emploi

Abonnez-vous par endpoint - ne recevez que les événements qui vous intéressent. Les événements de clic à haut volume sont envoyés par défaut dans une fenêtre batch de 5 secondes ; le mode raw-click livre par clic pour les traitements en streaming.

10+ types d’événements
  • link.clicked

    Chaque clic de redirection. Mode batch (fenêtre 5 s) ou raw-click.

  • link.created

    Un nouveau lien court a été créé dans le workspace.

  • link.updated

    Métadonnées, URL cible ou règles du lien modifiées.

  • link.deleted

    Lien supprimé - mettez à jour toute référence en aval.

  • domain.verified

    Le domaine personnalisé a passé la vérification DNS.

  • conversion.attributed

    Événement de revenu rattaché à un clic via Stripe ou Shopify.

  • campaign.completed

    La campagne a atteint sa date de fin ou son plafond de clics.

  • member.invited

    Membre du workspace ajouté ou provisionné par SCIM.

Plus link.expired, link.click_cap_reached, domain.ssl_issued et davantage - voir le catalogue complet d’événements.

Garanties de livraison

Backoff exponentiel. Fenêtre de 72 heures.

Une réponse hors 2xx ou un timeout de 30 secondes déclenche des réessais automatiques : 30 s → 2 min → 10 min → 30 min → 2 h → 8 h → 24 h → 48 h. Après 72 heures, la livraison est définitivement marquée comme échouée et retirée de la file - mais reste dans le journal pour un replay manuel.

  • Timeout de réponse de 30 secondes
    Retournez 200 immédiatement ; traitez en asynchrone si votre handler est lent.
  • 8 tentatives sur 72 heures
    Backoff exponentiel - pas d’effet avalanche au redémarrage.
  • Auto-pause après 30 échecs consécutifs
    L’admin du workspace est notifié par e-mail. Reprenez depuis le tableau de bord.
  • Replay en un clic depuis le journal
    Payload original, même event_id - le récepteur doit être idempotent.
Chronologie des réessais de livraison
Fenêtre de réessais de 72 heures
Tentative 1
14:02:01
500 Internal Server Error
Backoff 30 sexponentiel × 1
Tentative 2
14:02:31
timeout (30 s)
Backoff 2 minexponentiel × 4
Tentative 3
14:04:31
200 OK
Timeout de réponse
30 secondes
Tentatives max
8 réessais
Fenêtre
72 heures
Journal de livraison de webhook
Mode SIEM
ÉvénementEndpointStatutLatenceHeure
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
Affichage de 5 sur 1 284 livraisons · 24 dernières heuresEndpoint actif

Journal de livraison

Journal complet. Filtrez, inspectez, rejouez.

Chaque tentative est journalisée : ID d’événement, type, URL de l’endpoint, statut HTTP, corps de réponse (jusqu’à 4 Ko) et latence. Rétention : 30 jours sur Pro, 90 jours sur Business.

  • Filtrez par type d’événement, endpoint, statut et plage de dates
  • Les entrées échouées affichent le corps complet de la requête pour le débogage
  • Le replay renvoie le payload original - même event_id
  • API : POST /v1/webhooks/deliveries/:id/replay
  • Mode SIEM : JSON structuré avec garantie de réessais sur 7 jours

Ce que vous pouvez faire

  • Événements de clics, conversions, liens et domaines
  • Signature HMAC-SHA256 des requêtes
  • Nouvelles tentatives automatiques - jusqu'à 72 heures
  • Mode SIEM pour le transfert d'événements de sécurité
  • Filtrage par type d'événement
  • Journal de livraison webhook avec rejeu

Ce que les webhooks Elido délivrent et comment la livraison fonctionne

Les webhooks ne sont utiles que s'ils sont fiables. Les sections ci-dessous couvrent les garanties de livraison, la vérification de signature, le comportement de nouvelles tentatives et le mode SIEM.

Types d'événements
01

Événements de clics, de conversions, de cycle de vie des liens et de domaines - configurables par endpoint

Chaque endpoint webhook peut s'abonner à un ou plusieurs types d'événements : click.created (chaque clic de redirection), conversion.created (événement de conversion reçu de Stripe, Shopify ou endpoint personnalisé), 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. Les événements de clics à fort volume peuvent être bruyants - par défaut, les webhooks click.created sont envoyés avec une fenêtre d'agrégation de 5 secondes (livraison par lots, jusqu'à 100 événements par payload). Si vous avez besoin d'une livraison en temps réel par clic (par ex. alimentation d'un processeur de flux), activez le mode raw-click sur l'endpoint ; notez que cela peut produire des milliers de requêtes par minute pour les workspaces actifs et ne devrait être activé que pour les endpoints pouvant gérer le débit.

Vérification de signature
02

Chaque requête est signée en HMAC-SHA256 - vérifiez l'en-tête X-Elido-Signature avant traitement

Elido signe chaque corps de requête webhook en HMAC-SHA256 avec le secret partagé configuré sur l'endpoint. La signature est incluse dans l'en-tête X-Elido-Signature sous la forme 'sha256=<hex_digest>'. Pour vérifier : calculez le HMAC-SHA256 sur le corps brut de la requête avec le secret partagé, comparez le résultat à la valeur de l'en-tête en utilisant une fonction de comparaison à temps constant (pour prévenir les attaques temporelles). Ne traitez jamais un payload webhook avant d'avoir vérifié la signature. Le secret est affiché une seule fois à la création de l'endpoint ; effectuez la rotation dans le dashboard avec une fenêtre de chevauchement sans interruption (l'ancien secret reste valide 15 minutes après la génération d'un nouveau). Des exemples de code pour la vérification de signature en Node.js, Python et Go sont dans le guide webhooks à /docs/guides/webhooks.

Comportement de nouvelles tentatives
03

Nouvelles tentatives automatiques avec backoff exponentiel - jusqu'à 72 heures avant qu'une livraison soit marquée en échec

Si un endpoint renvoie un code de statut non-2xx ou expire (timeout de réponse de 30 secondes), Elido réessaie la livraison avec un backoff exponentiel : 30 secondes, 2 minutes, 10 minutes, 30 minutes, 2 heures, 8 heures, 24 heures, 48 heures. Après la fenêtre de 72 heures, la livraison est marquée comme définitivement échouée et retirée de la file de nouvelles tentatives. Les livraisons échouées apparaissent dans le journal de livraison webhook avec le code de statut HTTP final (ou « timeout »). Vous pouvez rejouer toute livraison échouée depuis le dashboard ou l'API (POST /v1/webhooks/deliveries/:id/replay) - utile pour récupérer un lot d'événements après une panne en aval. Les endpoints qui renvoient 5xx pendant plus de 30 livraisons consécutives sont automatiquement mis en pause et l'admin du workspace est notifié par email. Reprenez l'endpoint depuis le dashboard une fois le problème sous-jacent résolu.

Mode SIEM
04

Le mode SIEM diffuse les événements d'audit du workspace vers Splunk, Datadog ou tout endpoint d'ingestion de logs HTTPS

Le mode SIEM est une configuration webhook spéciale pour le transfert d'événements de sécurité. Au lieu des événements applicatifs (clics, conversions), le mode SIEM délivre les événements d'audit du workspace : connexions SSO, échecs de connexion, création/rotation/suppression de clés API, événements de provisionnement SCIM, changements de rôles, rotations de secrets webhook et actions admin (suppression de liens, exports en masse). Le format du payload est un JSON structuré avec un schéma standard (timestamp, actor, action, target, workspace_id, ip_address, user_agent) conçu pour l'ingestion dans les plateformes SIEM courantes. Les webhooks SIEM ont une garantie de livraison avec nouvelles tentatives sur 7 jours et sont signés séparément des webhooks applicatifs. Intégrations testées : Splunk HTTP Event Collector (HEC), Datadog Logs API, Elastic Logstash HTTP input et tout endpoint HTTPS de logs générique. Le mode SIEM est une fonctionnalité réservée au plan Business.

Journal de livraison
05

Journal de livraison complet avec corps de requête, code de réponse et rejeu en un clic pour les livraisons échouées

Chaque tentative de livraison webhook est journalisée : ID d'événement, type d'événement, URL d'endpoint, horodatage de livraison, code de statut HTTP, corps de réponse (jusqu'à 4 Ko) et latence. Le journal est interrogeable par type d'événement, endpoint, plage de dates et statut (livré, en cours de nouvelles tentatives, échoué). Les livraisons échouées incluent le corps complet de la requête pour que vous puissiez inspecter l'événement sans rejouer. Rejeu : POST /v1/webhooks/deliveries/:id/replay envoie le payload original (pas un nouvel événement) à l'endpoint - l'idempotence de votre récepteur est requise. La rétention du journal est de 30 jours sur Pro, 90 jours sur Business. Pour un audit permanent des événements webhook, configurez un endpoint SIEM ou activez l'export planifié du journal d'audit.

Équipes d'ingénierie utilisant les webhooks Elido en production

Les noms sont des exemples fictifs - les vraies études de cas clients seront publiées ici.

Nous consommons les webhooks click.created en mode batch pour alimenter notre propre pipeline d'analytics. La vérification de signature HMAC et le journal de livraison avec rejeu nous ont fait gagner des heures de débogage lors d'une panne partielle - nous avons rejoué les événements manqués depuis le dashboard sans reconstruire l'événement depuis la source.

I
Ingénierie plateforme, SaaS B2B, Amsterdam
Ingénieur Plateforme Senior

Le mode SIEM diffusant les événements d'audit du workspace vers notre Splunk HEC était la fonctionnalité entreprise que notre équipe InfoSec exigeait. Les événements de connexion SSO et rotations de clés API dans Splunk, avec le bon schéma, nous ont permis de corréler les événements d'accès Elido avec nos règles d'alerte SIEM en un jour de mise en place.

I
Ingénierie sécurité, fintech, Munich
Ingénieur Sécurité de l'Information

Les webhooks link.expired déclenchent notre workflow interne de mise à jour de la base de matériaux imprimés - quand un lien de QR code expire, notre équipe ops reçoit automatiquement une tâche pour mettre à jour l'étiquette physique. Zéro surveillance manuelle des états d'expiration de liens.

I
Ingénierie d'intégration, SaaS logistique, Riga
Ingénieur d'Intégration

Webhooks Elido vs Bitly vs Short.io

Ni Bitly ni Short.io n'offrent de webhooks sortants avec signature HMAC et garanties de nouvelles tentatives. Cette comparaison est honnête sur l'écart.

FeatureElidoBitlyShort.io
Webhooks sortantsOui - endpoints par workspace, abonnement par type d'événementNon disponibleOui - webhook basique sur clic
Signature HMAC-SHA256Oui - chaque livraison signée, exemples de code fournisNon applicablePartiel - en-tête de signature présent, non documenté
Nouvelles tentatives automatiquesOui - backoff exponentiel, fenêtre de 72 heuresNon applicablePas de nouvelles tentatives - fire and forget
Journal de livraison avec rejeuOui - 30 jours Pro, 90 jours Business, rejeu en un clicNon applicablePas de journal de livraison
Mode SIEM pour événements d'auditOui - Business, JSON structuré pour ingestion SIEMNon disponibleNon disponible
Pause automatique de l'endpoint en cas d'échecOui - mis en pause après 30 échecs consécutifs, admin notifiéNon applicableNon disponible
Types d'événementsClic, conversion, cycle de vie des liens, domaine, événements d'auditNon applicableClic uniquement

Questions sur les webhooks

Comment vérifier la signature HMAC-SHA256 ?

Lisez le corps brut de la requête en octets (avant tout parsing JSON), calculez le HMAC-SHA256 sur les octets bruts avec le secret partagé de votre endpoint, encodez en base16 (hex) le résultat, et comparez-le à la valeur de l'en-tête X-Elido-Signature après avoir retiré le préfixe 'sha256='. Utilisez une fonction de comparaison à temps constant (par ex. hmac.compare_digest en Python, crypto.timingSafeEqual en Node.js) pour prévenir les attaques temporelles. Ne comparez jamais la signature avec un opérateur d'égalité de chaîne standard. Exemples de code pour Node.js, Python et Go à /docs/guides/webhooks#verification.

Que doit renvoyer mon récepteur de webhooks ?

Renvoyez HTTP 200 (ou tout code de statut 2xx) dans les 30 secondes. Le corps de la réponse est ignoré - vous pouvez renvoyer un corps vide ou { ok: true }. Si votre traitement prend plus de 30 secondes, renvoyez 200 immédiatement et traitez l'événement de manière asynchrone (ajoutez à une file interne, renvoyez 200, traitez hors du chemin de la requête). Renvoyer 4xx est traité de la même façon que 5xx pour les nouvelles tentatives - les deux déclenchent un nouvel essai. Renvoyez 200 même si l'événement n'est pas pertinent pour votre intégration (par ex. un événement link.created dont vous n'avez pas besoin) pour éviter les nouvelles tentatives parasites.

Comment fonctionne l'idempotence pour les événements webhook ?

Chaque payload webhook inclut un champ event_id (UUID). Utilisez-le comme clé d'idempotence sur votre récepteur : si vous recevez le même event_id deux fois (suite à une nouvelle tentative après un échec partiel), ne le traitez qu'une seule fois. Stockez les event_id reçus dans une table de déduplication avec un TTL d'au moins 72 heures (la fenêtre de nouvelles tentatives). Le payload de nouvelle tentative est identique à l'original - même event_id, même corps - donc une simple vérification « ai-je déjà vu cet event_id ? » suffit.

Pourquoi mon endpoint est-il automatiquement mis en pause ?

Les endpoints sont automatiquement mis en pause après 30 échecs de livraison consécutifs (non-2xx ou timeout). Cela empêche Elido de marteler un endpoint défaillant indéfiniment. Corrigez le problème sous-jacent (généralement : l'URL de l'endpoint a changé, le serveur est hors service, ou le timeout de 30 secondes est dépassé à cause d'un traitement lent), puis reprenez l'endpoint dans le dashboard. Une fois repris, Elido ne rejoue pas automatiquement les événements ignorés pendant la pause - rejouez-les manuellement depuis le journal de livraison si vous devez récupérer ces événements.

Puis-je recevoir les événements de clics en temps réel pour chaque clic individuel ?

Oui - activez le mode raw-click sur l'endpoint. En mode raw-click, Elido délivre les événements click.created individuellement sans fenêtre d'agrégation, dans les 2 secondes du clic. Sachez qu'un workspace actif peut produire des milliers d'événements par minute en mode raw-click ; assurez-vous que votre récepteur peut gérer le débit. Pour la plupart des cas d'analyse, l'agrégation par lots par défaut de 5 secondes (jusqu'à 100 clics par payload) est suffisante et produit beaucoup moins de requêtes HTTP.

Quelle est la taille maximale du payload pour les événements webhook ?

Les payloads d'événements individuels font moins de 10 Ko. Les payloads de clics par lots (mode par défaut) peuvent contenir jusqu'à 100 événements, avec une taille totale plafonnée à 100 Ko. Si un lot dépasse 100 Ko, il est automatiquement divisé en plusieurs livraisons. Les champs de métadonnées volumineux (par ex. de longues URL de referrer) sont tronqués à 2 Ko par champ. Si votre récepteur impose une limite stricte de taille de payload, configurez le mode raw-click (un événement par livraison) au lieu du mode par lots.

Existe-t-il un moyen de tester les webhooks localement pendant le développement ?

Utilisez un outil comme ngrok, Cloudflare Tunnel ou localtunnel pour exposer votre serveur local avec une URL HTTPS publique, puis enregistrez cette URL comme endpoint webhook dans votre workspace de test. Alternativement, utilisez le bouton de test webhook dans le dashboard pour envoyer un payload d'exemple pour tout type d'événement à un endpoint enregistré sans déclencher un événement réel. Le CLI Elido (elido webhook test --event click.created --endpoint https://...) fonctionne également pour les tests locaux scriptés.

Que se passe-t-il pour les événements webhook pendant une fenêtre de maintenance planifiée ?

Les événements générés pendant une fenêtre de maintenance sont mis en file d'attente dans notre flux d'événements et délivrés après la fin de la maintenance. La page de statut Elido (status.elido.app) annonce les fenêtres de maintenance planifiées à l'avance. Le SLA de livraison webhook exclut les fenêtres de maintenance annoncées. Pour une fenêtre de maintenance typique de 30 à 60 minutes, la fenêtre de nouvelles tentatives de 72 heures garantit qu'aucun événement n'est définitivement perdu - ils sont délivrés dans l'ordre de génération une fois l'endpoint à nouveau accessible.

Prêt à essayer ?

Commencez avec le forfait gratuit, passez à la version supérieure lorsque vous avez besoin d'un domaine personnalisé.