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
- 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.
- Sur la page des intégrations, renseignez « Nom » (par exemple le nom du Zap) et « Adresse du destinataire » (l’adresse copiée).
- Dans « Événements à envoyer », cochez ce qu’il faut envoyer.
- Cliquez sur « Ajouter le destinataire ».
- 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 ».
- 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
- « Nouvelle conversation » (
conversation.started) : un client a démarré une nouvelle conversation, quel que soit le canal. Les chats de test et les clients bloqués ne sont pas envoyés. - « Membre de l’équipe demandé » (
conversation.handoff_requested) : l’employé IA ou le système a demandé un membre de l’équipe. L’événement indique le motif : demande de l’employé IA lui-même, réponses automatiques arrêtées, mode manuel, employé IA indisponible, limite de réponses atteinte ou forfait inactif. - « Conversation transférée à un membre de l’équipe » (
conversation.handed_off) : un membre de l’équipe a repris la conversation. L’événement est envoyé à chaque fois. - « Nouvelle réservation », « Réservation modifiée » et « Réservation annulée » (
booking.created,booking.changed,booking.cancelled) : une réservation a été créée, modifiée ou annulée par un employé IA, par vous dans le calendrier ou par l’assistant de l’entreprise. - « Nouvelle demande d’assistance » (
support_case.created) et « Demande d’assistance modifiée » (support_case.updated) : une demande d’assistance a été créée, ou son statut, sa priorité ou sa description a changé. Les notes internes de l’équipe ne sont pas envoyées. - « Nouveau message » (
message.created) : chaque message visible par le client, envoyé dès qu’il est écrit : du client, de l’employé IA, d’un membre de l’équipe ou du système (un avis dans la conversation). Le texte du message est inclus. - « Conversation complète » (
conversation.transcript) : toute la conversation, envoyée quand elle n’a reçu aucun message pendant 30 minutes. Si la conversation continue, elle est renvoyée après chaque pause suivante.
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
}
id: l’identifiant de l’événement. Il reste identique à chaque nouvel essai, ignorez donc un id déjà traité.type: le type d’événement de la liste ci-dessus ;occurred_at: l’heure en UTC.business: le nom de votre entreprise.actor: qui a provoqué l’événement.kindvautcustomer,ai_employee,team_member(un membre de l’équipe ou l’assistant de l’entreprise) ousystem.channel:web,telegram,instagram,whatsappoumessenger, ounullsi l’événement n’a pas de conversation.employee: le nom de l’employé IA, ounullsi l’équipe ou l’assistant de l’entreprise a agi.conversation.url: un lien vers la conversation ; il s’ouvre pour les membres de l’équipe connectés.nulls’il n’y a pas de conversation.customer: nom, e-mail et téléphone au moment de l’envoi, ounull. Les contacts sont envoyés en entier, n’ajoutez donc que des destinataires de confiance.booking: uniquement pour les événements de réservation :service,starts_at,ends_at,statusetlocation.handoff: uniquement pour « Membre de l’équipe demandé » :reason(ai_request,automation_stopped,manual_mode,ai_unavailable,quota_exhaustedouplan_inactive) etreason_text, l’explication de l’employé IA lui-même ounull.support_case: uniquement pour les événements de demandes d’assistance :subject,status(open,in_progress,waiting_customer,resolvedouclosed) etpriority(low,normal,highouurgent).message: uniquement pour « Nouveau message » :id,sequence(la position du message dans la conversation),author(customer,ai_employee,team_memberousystem),text,created_atetattachments: une liste aveckind(toujoursimage),nameetmedia_type. Seuls le nom et le type de la pièce jointe sont envoyés, pas le fichier.transcript: uniquement pour « Conversation complète » :message_count(messages de la conversation),truncatedetmessages: des messages de même forme quemessage. Une transcription contient au plus les 500 messages les plus récents et 512 Kio de texte ;truncatedvauttruesi des messages plus anciens ont été omis.
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
- « Mettre en pause » arrête l’envoi sans supprimer le destinataire ; cliquez sur « Activer » pour reprendre.
- « Changer le secret » puis « Créer un nouveau secret » : un nouveau secret s’affiche une seule fois. L’ancien reste valable 24 heures pour que vous puissiez mettre à jour le destinataire sans perdre d’événements.
- « Supprimer » puis « Supprimer le destinataire » suppriment définitivement le destinataire.
Bon à savoir
- Seuls Propriétaire et Administrateur gèrent les intégrations. Une entreprise peut avoir jusqu’à 5 destinataires.
- Le journal des envois indique l’événement, le destinataire, l’heure, l’état, les tentatives et la prochaine tentative. Il ne conserve pas le texte des requêtes.
- Le test avec « Envoyer un test » ne crée pas d’entrée dans le journal et n’exige pas de vrai événement.