Configurer les Webhooks
Configurez les webhooks pour recevoir des notifications en temps réel sur les messages, les mises à jour de statut de livraison et les événements de campagne.
Un événement se produit (par ex., message reçu)
SendSeven envoie une requête HTTP POST à votre URL
Si pas de 200, nous réessayons avec backoff exponentiel
Événements : Sélectionnez les événements à recevoir
ID unique de l'evenement (utiliser pour la deduplication)
ID de la ressource ayant declenche l'evenement
Payload specifique a l'evenement (varie selon le type)
Afficher un exemple avec piece jointe media
Le tableau attachments n'est present que lorsque le message inclut un media. Chaque piece jointe comprend un id unique, content_type, file_size et deux URLs de telechargement. Types pris en charge : image, video, audio, document, sticker.
url — Endpoint API stable. Necessite une authentification (cle API ou token de session). N'expire jamais.
signed_url — URL GCS pre-signee. Aucune authentification requise. Expire apres 24 heures.
Si le telechargement media de la plateforme echoue, les donnees brutes de la plateforme sont transmises avec un marqueur "source": "platform" au lieu des champs enrichis. Les types non-fichier (localisation, contacts, reactions) ne sont pas affectes.
Chaque evenement incluant un objet contact contient egalement un tableau contact_methods[] listant tous les identifiants du contact (le principal en premier). Les champs phone et email de premier niveau sont conserves pour la compatibilite ascendante.
Les selections de reponse rapide et de liste arrivent avec message_type "button". La legende est dans "text" et un objet "meta.button" structure contient l'id et le payload, ce qui permet de router la selection sans analyser le texte.
Afficher un exemple avec clic sur bouton (reponse rapide / liste)
Identifiant stable du bouton tel que defini lors de l'envoi du message.
Payload retourne par le canal (correspond a l'id pour les reponses rapides).
Legende lisible que l'utilisateur a vue et touchee.
Les messages sortants incluant des pieces jointes contiennent le meme schema enrichi (id, url, signed_url, content_type, file_size) que les messages entrants.
Le champ error est au niveau data (pas dans message.meta). Les objets conversation et contact complets sont egalement inclus.
Les evenements de mise a jour de statut (delivered, read) utilisent un objet conversation simplifie sans bot_session_id ni champs d'horodatage last_*_at. L'objet contact_method n'est pas inclus.
Les objets conversation email incluent des champs supplementaires : email_integration_id et email_thread_id pour le contexte de fil de discussion.
L'evenement reopened inclut moins de champs de conversation que les autres evenements de conversation (pas de bot_session_id, d'horodatages last_*_at ou de subject).
contact.updated et contact.deleted utilisent la meme structure. Le champ type de l'evenement permet de les distinguer.
Obtenez le corps brut de la requête (avant parsing JSON)
Calculez HMAC-SHA256 en utilisant votre secret webhook
Comparez avec l'en-tête X-SendSeven-Signature
Utilisez une comparaison sécurisée contre les attaques temporelles
Votre URL est accessible publiquement (pas localhost)
Votre certificat SSL est valide (pas auto-signé)
Votre serveur autorise les requêtes POST
Aucun pare-feu ne bloque les IP de SendSeven
Utilisation de JSON analysé au lieu du corps brut
Mauvais secret webhook (copiez-le à nouveau depuis les paramètres)
Middleware modifiant le corps de la requête
Stockez l'ID de l'événement et vérifiez les doublons avant traitement
Rendez vos gestionnaires d'événements idempotents
Répondez avec 200 aussi rapidement que possible (traitement async)
Les Webhooks sont des callbacks HTTP que SendSeven utilise pour envoyer des evenements en temps reel a votre application. Au lieu d'interroger l'API REST, votre endpoint recoit des notifications instantanees lorsqu'un evenement important se produit — un message arrive, une conversation se termine, un contact est cree ou un statut de livraison change. Chaque requete webhook est signee par HMAC pour la securite et automatiquement retentee en cas d'echec avec un backoff exponentiel, garantissant qu'aucun evenement n'est perdu.
Un compte SendSeven avec au moins un canal connecte
Un endpoint HTTPS public capable de recevoir des requetes HTTP POST
Un certificat SSL valide (Let's Encrypt fonctionne tres bien)
Une comprehension de base des API REST et du JSON
Page Webhooks du tableau de bord SendSeven avec le bouton Ajouter un endpoint mis en evidence
Dialogue Ajouter un endpoint avec le champ URL HTTPS et les abonnements aux evenements dans SendSeven
Evenements : Selectionnez les evenements a recevoir
Popup Webhook cree avec succes affichant la cle secrete avec un bouton Copier
Page de detail du webhook affichant l'URL de l'endpoint, les evenements souscrits, l'historique de livraison et l'etat de sante dans SendSeven
Automatiquement lors de la creation d'un webhook via le tableau de bord
Automatiquement lors de la creation d'un webhook via l'API (POST /api/v1/webhook-endpoints)
Automatiquement lorsque l'URL du webhook est modifiee
A la demande via l'endpoint de verification (POST /api/v1/webhook-endpoints/{id}/verify)
- Créer un point de terminaison webhook
- Enregistrer le webhook dans SendSeven
- Sélectionner les types d'événements à recevoir
- Gérer la vérification du webhook
- Vérifier la signature du webhook
- Traiter les événements entrants
- Tester avec des événements exemples
FAQ
A quels evenements puis-je m'abonner ?
Les webhooks SendSeven prennent en charge six types d'evenements principaux : message.received (message entrant), message.sent (message sortant), conversation.closed (conversation terminee), contact.created (nouveau contact), contact.updated (contact modifie) et delivery.status (statut modifie).
Comment fonctionne le reessai des webhooks ?
Si votre endpoint renvoie un code de statut non-2xx ou ne repond pas dans les 30 secondes, SendSeven retente automatiquement avec un backoff exponentiel : immediatement, 5 secondes, 30 secondes, 5 minutes, 30 minutes et 24 heures. Apres 6 tentatives de livraison echouees, le webhook est automatiquement desactive et vous recevez une notification.
Comment verifier les signatures des webhooks ?
Chaque requete webhook inclut un en-tete X-SendSeven-Signature. Pour verifier, calculez le HMAC-SHA256 du corps brut de la requete en utilisant votre cle secrete webhook, puis comparez-le avec la valeur de l'en-tete. S'ils correspondent, la requete est authentique et provient de SendSeven.
Quel est le format du payload webhook ?
Les webhooks sont envoyes sous forme de requetes JSON POST avec une structure coherente : id (identifiant unique de l'evenement), type (type d'evenement), timestamp (horodatage Unix), l'objet data correspondant (message, conversation ou contact) et le contexte du canal. Les payloads font generalement entre 1 et 5 Ko pour les evenements standards.
Puis-je configurer plusieurs endpoints webhook ?
Oui. Vous pouvez ajouter jusqu'a 10 endpoints webhook par espace de travail. Chaque endpoint peut avoir une URL differente et s'abonner a differents types d'evenements, ce qui vous permet de router les evenements vers differents systemes.
Comment tester mon endpoint webhook ?
SendSeven fournit un bouton "Envoyer un evenement de test" dans le tableau de bord webhook qui envoie un payload d'exemple a votre endpoint sans affecter les donnees reelles. Pour les tests locaux, utilisez des outils de debogage webhook comme webhook.site, RequestBin ou ngrok.
Que se passe-t-il si mon endpoint est temporairement indisponible ?
Les webhooks sont mis en file d'attente et retentes pendant 48 heures maximum. Pendant ce temps, vous pouvez corriger votre endpoint et les evenements en attente seront livres. Si le probleme n'est pas resolu dans les 48 heures, les evenements sont definitivement supprimes et consignes dans l'historique de livraison de votre webhook.