Skip to main content
Lekalao appelle votre application quand quelque chose arrive : une inscription, un désabonnement, un rebond. Vous créez l’adresse à appeler dans Paramètres → Webhooks sortants (mode d’emploi).

La requête

Un POST JSON par événement et par adresse :
Répondez un code 2xx dans les 15 secondes. Les redirections ne sont pas suivies.

Les événements

Abonnés

subscriber.created, subscriber.confirmed, subscriber.unsubscribed, subscriber.tag_added, subscriber.tag_removed.
tag n’est présent que pour les deux événements de tags.
Une personne inscrite sur une liste en double opt-in qui ne confirme jamais ne déclenche aucun événement.

Campagnes

campaign.sent, quand le dernier e-mail d’une campagne est parti :

Retours des fournisseurs

mail.bounced et mail.complaint, quand un fournisseur signale un rebond ou une plainte :
type vaut hard_bounce, soft_bounce ou complaint. campaign est null pour un e-mail transactionnel ou d’automatisation.

Filtrer par liste

Une adresse réglée sur Seulement pour une liste ne reçoit que les événements de cette liste. campaign.sent suit la liste de la campagne.

Vérifier la signature

X-Lekalao-Signature est le HMAC SHA-256, en hexadécimal, du corps brut de la requête, avec le secret de signature de l’adresse. Calculez-le sur les octets reçus, avant tout décodage JSON, et comparez en temps constant.
Ne ré-encodez pas le JSON avant de calculer la signature : un espace ou un ordre de clés différent change le résultat.

Échecs

  • Lekalao ne réessaie pas tout seul. Chaque appel est dans le journal Appels que nous avons faits, avec la réponse de votre serveur, et Renvoyer le rejoue.
  • Après 10 échecs d’affilée, l’adresse est désactivée. Réactivez-la une fois votre serveur réparé.

Conseils

  • Répondez vite. Mettez le travail en file et répondez 204 tout de suite.
  • Soyez idempotent. Le même événement peut arriver deux fois, par exemple après un Renvoyer : gardez la trace de ce que vous avez déjà traité (événement, id ou adresse, date) pour ignorer un doublon.
  • Ne supposez pas l’ordre. Deux événements proches peuvent arriver dans le désordre ; relisez la ressource par l’API si l’état compte.
  • En local, exposez votre serveur avec un tunnel (ngrok, Cloudflare Tunnel) : Lekalao refuse d’appeler une adresse privée ou localhost.