FonctionnalitésTarifsSe connecterDémarrer gratuitement →
Développeurs/Webhooks

Webhooks

Recevez des notifications HTTP en temps réel dès qu'un événement se produit dans e-Signal. Plus de polling — réagissez instantanément.

20+ événementsHMAC-SHA256Retry automatiqueLogs temps réel

Configuration

1
Configurez l'URL de réception
Dans le Dashboard → Paramètres → Webhooks, ajoutez l'URL HTTPS de votre endpoint.
2
Sélectionnez les événements
Choisissez les types d'événements à recevoir. Vous pouvez filtrer par canal ou par seuil.
3
Récupérez votre secret
Un secret HMAC unique est généré. Stockez-le en variable d'environnement.
4
Vérifiez les signatures
Chaque requête inclut un header X-ESignal-Signature-256. Vérifiez-le pour valider l'origine.

Structure du payload

Chaque webhook est un POST HTTP avec le header Content-Type: application/json. Exemple pour message.received :

Payload JSON
{
  "id": "evt_01JAB5XQKPZN3MWV...",
  "type": "message.received",
  "created_at": "2025-11-20T14:10:23Z",
  "data": {
    "id": "msg_01JAB4...",
    "conversation_id": "conv_01J7P3...",
    "contact": {
      "id": "cnt_01J8X4...",
      "name": "Kofi Asante",
      "phone": "+233241234567"
    },
    "channel": "whatsapp",
    "direction": "inbound",
    "type": "text",
    "content": "Bonjour, est-ce disponible ?",
    "ai": {
      "sentiment": "positive",
      "intent": "inquiry",
      "score": 0.76
    }
  }
}
Headers HTTP
Content-Typeapplication/json
X-ESignal-Eventmessage.received
X-ESignal-Deliveryevt_01JAB5...
X-ESignal-Signature-256sha256=abc123...
X-ESignal-Timestamp1732104623
User-AgentESignal-Webhook/1.0
Répondez 200 rapidement
e-Signal attend une réponse 2xx dans les 10 secondes. Traitez le webhook en tâche de fond pour éviter les timeouts.

Vérification des signatures

Chaque requête webhook est signée avec HMAC-SHA256. Vérifiez toujours la signature avant de traiter l'événement.

import hmac
import hashlib

def verify_signature(payload: bytes, signature: str, secret: str) -> bool:
    """Vérifie la signature HMAC-SHA256 d'un webhook e-Signal."""
    expected = hmac.new(
        secret.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(f"sha256={expected}", signature)

# Dans votre handler Flask/Django/FastAPI :
# sig = request.headers.get("X-ESignal-Signature-256")
# if not verify_signature(request.data, sig, WEBHOOK_SECRET):
#     return 401

Politique de retry

1ère
Immédiat
🔄
2ème
+30s
⏱️
3ème
+5 min
4ème
+30 min
🕐
5ème
+2h

Après 5 tentatives échouées, le webhook est marqué comme failed et un email vous est envoyé. Les webhooks peuvent être rejoués manuellement depuis le dashboard.

Catalogue d'événements

Messages

message.receivedUn message entrant est reçu sur n'importe quel canal connecté.
message.sentUn message sortant a été envoyé avec succès.
message.failedL'envoi d'un message a échoué (timeout, refus opérateur).
message.readUn message a été lu par le destinataire (WhatsApp, Instagram).

Conversations

conversation.createdUne nouvelle conversation est ouverte avec un contact.
conversation.assignedUne conversation est assignée à un agent ou une équipe.
conversation.resolvedUne conversation est marquée comme résolue.
conversation.reopenedUne conversation résolue est réouverte suite à un nouveau message.

Contacts & CRM

contact.createdUn nouveau contact est créé dans le CRM.
contact.updatedLes données d'un contact sont modifiées (champs, tags, score).
lead.scoredLe score IA d'un lead dépasse un seuil configuré.
lead.convertedUn lead est marqué comme client converti.
deal.stage_changedUn deal change d'étape dans le pipeline commercial.

Campagnes

campaign.startedL'envoi d'une campagne programmée commence.
campaign.completedTous les messages d'une campagne ont été envoyés.
campaign.message.openedUn destinataire a ouvert un message de campagne.
campaign.message.clickedUn lien dans un message de campagne a été cliqué.

Alertes IA

alert.triggeredUn seuil KPI configuré a été dépassé.
anomaly.detectedL'IA a détecté une anomalie dans les données de performance.
sentiment.negative_spikeUn pic de sentiment négatif détecté sur un ou plusieurs canaux.