Intégrations et webhooks

Envoyez conversations, réservations, appels à l’équipe et demandes d’assistance à Zapier, Make ou votre serveur ; vérifiez la signature et les envois.

Les intégrations envoient les événements de l’entreprise à un autre service dès qu’ils se produisent : une nouvelle conversation, une réservation, un appel à l’équipe, une demande d’assistance. Avec Zapier ou Make, vous pouvez par exemple ajouter une ligne à un tableau, envoyer un message dans un chat ou créer une fiche dans un CRM sans copier les données à la main.

Où les trouver

Dans le menu supérieur, ouvrez « Modules », connectez le module « Intégrations » (il est désactivé par défaut) et cliquez sur « Ouvrir les intégrations » sur sa carte. L’onglet « Webhooks » s’ouvre, l’onglet « Journal des événements » se trouve à côté. Seuls Propriétaire et Administrateur peuvent ouvrir la section : l’adresse d’un destinataire peut contenir un jeton privé. Tant que le module est désactivé, rien n'est envoyé, et les événements survenus entre-temps ne seront pas renvoyés ensuite. Les destinataires restent configurés et le journal des événements continue d'être tenu.

Ajouter un destinataire

  1. Dans Zapier, créez un Zap avec le déclencheur « Webhooks by Zapier » et l’événement « Catch Hook », puis copiez l’adresse fournie. Dans Make, ajoutez le module « Custom webhook » et copiez son adresse.
  2. Sur la page des intégrations, renseignez « Nom » (par exemple le nom du Zap) et « Adresse du destinataire » (l’adresse copiée).
  3. Dans « Événements à envoyer », cochez ce qu’il faut envoyer.
  4. Cliquez sur « Ajouter le destinataire ».
  5. Le secret de signature n’apparaît qu’une fois. Copiez-le et conservez-le. Zapier et Make n’en ont pas besoin ; votre propre serveur s’en sert pour vérifier la signature. En cas de perte, créez-en un nouveau avec « Changer le secret ».
  6. Sur la fiche du destinataire, cliquez sur « Envoyer un test ». Le résultat indique Distribué ou Non distribué avec la raison.

L’adresse doit être publique et commencer par https. Sont refusées, avec la raison indiquée : les adresses http, les adresses IP à la place d’un domaine, les ports personnalisés, les adresses avec identifiant et mot de passe, les adresses internes et les adresses de domaines ReceptionWorks. La page n’affiche que le domaine et le chemin : la partie après le point d’interrogation peut contenir le jeton de votre destinataire.

Quels événements sont envoyés

Les événements du chat de test ne sont pas envoyés. Un destinataire ne reçoit que les événements survenus après son ajout et tant qu’il est actif : ce qui s’est passé pendant une pause ou une désactivation n’est pas envoyé ensuite.

« Nouveau message » et « Conversation complète » contiennent le texte intégral des conversations, y compris ce qu’écrivent les clients. Le texte quitte ReceptionWorks et arrive chez le destinataire que vous avez choisi : ne cochez ces événements que pour des destinataires de confiance. Un nouveau destinataire commence avec ces deux cases décochées. Ils ne sont envoyés que tant qu’un destinataire les a cochés et n’apparaissent ni dans le journal des événements ni dans son export : la conversation elle-même est dans la boîte de réception. Les chats de test et les clients bloqués ne sont pas envoyés.

Ce que reçoit le destinataire

Chaque événement est une requête POST avec un corps JSON. Exemple pour un appel à l’équipe demandé par un employé IA :

{
  "schema_version": "business-webhook.v1",
  "id": "5b0c5e2e-0000-4000-8000-000000000001",
  "type": "conversation.handoff_requested",
  "occurred_at": "2026-10-07T09:30:00.000Z",
  "business": { "name": "Example Studio" },
  "actor": { "kind": "ai_employee" },
  "channel": "telegram",
  "employee": { "name": "Anna" },
  "conversation": { "url": "https://app.example.com/businesses/studio/inbox?conversation=example" },
  "customer": { "name": "Maria", "email": "maria@example.com", "phone": "+1 555 0100" },
  "booking": null,
  "handoff": { "reason": "ai_request", "reason_text": "The customer wants to discuss a discount" },
  "support_case": null
}

Les sections qui ne concernent pas l’événement valent null. L’événement de « Envoyer un test » a le type webhook.test et toutes les sections sauf business valent null. Les données ne contiennent aucun texte traduit : les noms sont tels qu’enregistrés, les codes sont des mots anglais fixes et les heures sont en UTC.

"message": {
  "id": "6c1d0f52-0000-4000-8000-000000000002",
  "sequence": 12,
  "author": "customer",
  "text": "Hello, can I book for Friday?",
  "created_at": "2026-10-07T09:29:41.000Z",
  "attachments": [{ "kind": "image", "name": "photo.jpg", "media_type": "image/jpeg" }]
}

Les messages et les transcriptions peuvent arriver dans le désordre et se répéter : ne vous fiez pas à l’ordre d’arrivée. Utilisez sequence pour rétablir l’ordre des messages d’une conversation et ignorez toute livraison dont vous avez déjà traité le webhook-id. La transcription répète des messages que vous avez peut-être déjà reçus un par un : utilisez-la pour vérifier ou reconstituer toute la conversation.

Comment vérifier la signature

Chaque requête porte trois en-têtes du standard Standard Webhooks : webhook-id, webhook-timestamp et webhook-signature. Zapier et Make ne les vérifient pas. Sur votre propre serveur, utilisez la bibliothèque officielle Standard Webhooks de votre langage : donnez-lui le secret tel qu’affiché (il commence par whsec_), le corps brut non modifié de la requête et les trois en-têtes. Vérification manuelle :

signed_content = webhook-id + "." + webhook-timestamp + "." + raw request body
signature      = "v1," + base64( HMAC-SHA256( key, signed_content ) )
key            = base64-decoded part of the secret after "whsec_"

L’en-tête webhook-signature contient v1, suivi de la signature. Après « Changer le secret », il contient deux signatures séparées par un espace : acceptez la requête si l’une des deux correspond. Rejetez les requêtes dont l’horodatage diffère de votre horloge de plus de cinq minutes.

Nouveaux essais et désactivation automatique

Le destinataire doit répondre avec un code 2xx en 10 secondes. Les redirections ne sont pas suivies : une adresse qui redirige compte comme une erreur. Sinon, ReceptionWorks réessaie : tout de suite, puis après 1 minute, 5 minutes, 30 minutes, 2 heures, 6 heures et 12 heures. Cela fait 7 tentatives en 21 heures environ. Si toutes échouent, l’envoi est marqué Non distribué dans « Journal des envois » et vous pouvez cliquer sur « Renvoyer ». Les nouveaux essais portent le même webhook-id : le destinataire peut donc ignorer les doublons.

Un destinataire est désactivé automatiquement s’il répond que l’adresse n’existe plus (code 410) ou si cinq événements de suite ne sont pas distribués. La fiche affiche alors « Désactivé automatiquement » avec la raison, et votre équipe reçoit une notification. Corrigez l’adresse et cliquez sur « Activer » : les événements manqués entre-temps ne sont pas envoyés.

Pause, nouveau secret, suppression

Bon à savoir

Et ensuite

← Tous les articles