Webhooks
À propos des webhooks
Comprendre le modèle de callback webhook OmniLab, les abonnements, la signature, et le comportement de livraison.
Un webhook OmniLab associe deux éléments :
- un callback, c'est-à-dire la destination HTTP et ses règles de sécurité
- un abonnement, c'est-à-dire les événements que vous voulez recevoir sur ce callback
En pratique, plusieurs abonnements peuvent pointer vers un même callback si vous voulez centraliser le traitement sur un receiver unique.
Comment fonctionne la livraison
Le callback définit notamment :
- l'URL cible
- la méthode HTTP, généralement
POST - le content type, généralement
application/json - le mode d'authentification sortant éventuel
- le secret de signature utilisé pour signer la charge utile
- les transformations éventuelles du body, de l'URL, ou de certains headers
L'abonnement définit notamment :
- le ou les
event_typeà écouter - les filtres de périmètre, par exemple
tenant_id,group_id, ouinteraction_id - l'activation ou non de la livraison pour ce flux
Headers de livraison à connaître
Lorsqu'une signature est activée, votre receiver voit généralement :
webhook-idwebhook-timestampwebhook-signatureUser-Agent
Le header webhook-signature contient une signature HMAC-SHA256 encodée en base64, sous une forme de type v1,<signature>.
Principe de vérification de signature
OmniLab signe le contenu suivant :
webhook-id + "." + webhook-timestamp + "." + raw_request_bodyVotre receiver doit :
- conserver le body brut exact de la requête
- reconstruire la chaîne signée dans le même ordre
- recalculer le HMAC-SHA256 avec le secret partagé
- comparer le résultat avec la valeur du header
webhook-signature - rejeter les messages trop anciens selon votre fenêtre de tolérance au replay
Exemple d'usage
- un CRM écoute
reward.won.v1pour enrichir la fiche contact - un data pipeline écoute
touchpoint.completed.v1etbooking.created.v1 - un portail participant écoute
booking.cancelled.v1pour synchroniser son affichage
Résultats de livraison importants
- une réponse
2xxconfirme que la livraison est acceptée - une réponse
429peut être retentée, etRetry-Afterest respecté lorsqu'il est fourni - les erreurs réseau, timeouts, et
5xxdéclenchent aussi des retries - une réponse
410 Gonedésactive le callback, utile si un endpoint doit être retiré proprement