FlowKit

n8n + Cal.com : automatiser les rappels de rendez-vous et le suivi des no-shows avec l’IA

Publié le 6 août 2026 · 7 min de lecture

Un rendez-vous manqué coûte plus qu’un créneau vide : c’est du temps de préparation perdu, un planning à recomposer, et souvent un client ou un prospect qu’il faut relancer à froid. Cal.com, l’alternative open source à Calendly, expose une prise de rendez-vous programmable via API et webhooks — et contrairement à beaucoup de concurrents, elle sait signaler nativement un no-show, même sur son offre gratuite. Branché sur n8n, cela permet de construire un pipeline complet : confirmation, rappel personnalisé par IA au bon moment, détection des absences, et journalisation pour mesurer ce que l’automatisation change réellement. Ce guide couvre l’intégration de bout en bout.

Cal.com Trigger et le node Cal.com : deux briques distinctes

n8n propose deux nodes natifs pour Cal.com, avec des rôles différents. Le Cal.com Trigger écoute les webhooks émis par votre compte Cal.com et démarre un workflow à chaque événement — nouvelle réservation, annulation, no-show constaté. Le node Cal.com (actions) fait l’inverse : il agit sur Cal.com depuis un workflow, pour créer, annuler ou reprogrammer une réservation par exemple, sans passer par l’interface. La plupart des workflows de rappel n’ont besoin que du premier ; le second devient utile pour des cas comme la reprogrammation automatique proposée à un client après un no-show.

Le webhook se configure directement dans Cal.com (Settings > Developer > Webhooks), avec l’URL de production fournie par le node Trigger n8n comme Subscriber URL. Un même webhook peut écouter plusieurs types d’événements à la fois, filtrés ensuite dans le workflow.

Les événements à écouter (et pourquoi le no-show natif change la donne)

Cal.com expose une taxonomie d’événements webhook bien plus fine que la plupart des outils de prise de rendez-vous. Pour un pipeline rappel + suivi des absences, les événements suivants sont les plus utiles :

  • BOOKING_CREATED — une nouvelle réservation est confirmée : point de départ du rappel et de la journalisation.
  • BOOKING_CANCELLED — le rendez-vous est annulé côté invité : libère le créneau et déclenche éventuellement une relance de reprise de contact.
  • BOOKING_RESCHEDULED — le rendez-vous est déplacé : à traiter comme une annulation suivie d’une nouvelle création, pour ne pas envoyer deux rappels contradictoires.
  • BOOKING_NO_SHOW_UPDATED — le statut d’absence change, marqué automatiquement (Cal Video) ou manuellement. C’est l’événement qui manque à beaucoup d’outils concurrents, où l’absence doit être déduite après coup par un Schedule Trigger qui repasse sur les rendez-vous passés — voir notre guide n8n + Calendly sur cette limite précise.
  • MEETING_ENDED et RECORDING_TRANSCRIPTION_GENERATED — pour les appels tenus sur Cal Video, utile si vous enchaînez avec un résumé automatique de la réunion, sur le même principe que notre guide de transcription de réunions avec Whisper.

Un node Switch juste après le Trigger, routé sur le champ triggerEvent du payload, sépare proprement ces branches dans un seul workflow plutôt que d’en multiplier les copies.

Vérifier la signature du webhook

Cal.com signe chaque requête webhook avec un HMAC SHA-256, transmis dans l’en-tête X-Cal-Signature-256, calculé à partir du secret défini au moment de la création du webhook. Sans cette vérification, n’importe qui découvrant l’URL du webhook pourrait injecter de fausses réservations ou de faux no-shows dans votre pipeline. Le node Crypto de n8n calcule la signature attendue à partir du corps brut de la requête et du secret, à comparer ensuite dans un node IF avec la valeur reçue — la mécanique exacte, y compris le piège classique du corps re-sérialisé par erreur, est détaillée dans notre guide du node Crypto et des signatures HMAC. Les principes généraux de sécurisation d’un webhook exposé publiquement sont couverts dans notre guide sur la sécurisation des webhooks n8n.

Rédiger un rappel qui réduit vraiment le no-show

Un rappel générique (« Rappel : vous avez rendez-vous demain à 14h ») fonctionne, mais moins bien qu’un message qui personnalise le contexte. Une étude de Martin, Bassi et Dunbar-Rees, publiée en 2012 dans le Journal of the Royal Society of Medicine (voir sur Google Scholar), a montré qu’ajouter une norme sociale explicite au rappel — par exemple rappeler que la grande majorité des personnes se présentent effectivement à leur rendez-vous, ou faire reformuler l’heure du rendez-vous par la personne elle-même au moment de la prise — réduit sensiblement le taux d’absence par rapport à un rappel neutre. C’est exactement le type de personnalisation qu’un Basic LLM Chain connecté à Claude ou GPT peut automatiser : le prompt reçoit le nom de l’invité, l’objet du rendez-vous, l’heure exacte et un taux de présence agrégé, et génère un message court qui intègre cette norme sociale plutôt qu’un texte figé identique pour tout le monde.

Le canal compte aussi : un rappel envoyé uniquement par email se noie facilement dans une boîte de réception chargée. Router le même message vers un SMS via notre guide n8n + Twilio ou vers WhatsApp via le guide de connexion WhatsApp Business augmente les chances qu’il soit vu à temps.

Programmer l’envoi au bon moment avec le node Wait

BOOKING_CREATED arrive au moment de la réservation, souvent plusieurs jours avant le rendez-vous — trop tôt pour un rappel efficace. La bonne pratique est un node Wait (n8n-nodes-base.wait) configuré pour reprendre l’exécution à une date précise, calculée en soustrayant par exemple 3 heures à l’horodatage startTime du payload avec une expression Luxon. Notre guide du node Wait détaille les pièges classiques de ce mode d’attente différée — exécutions qui s’accumulent, workflow actif pendant des heures — à connaître avant de le mettre en production sur un volume de réservations conséquent.

Traiter les annulations et les no-shows confirmés

Une annulation (BOOKING_CANCELLED) mérite mieux qu’un simple archivage silencieux : selon le contexte commercial, un message de reprise de contact automatique — ou une alerte Slack pour qu’un humain reprenne la main, sur le principe de l’approbation humaine avant action sensible — peut transformer un rendez-vous perdu en nouvelle tentative de prise de contact plutôt qu’en abandon silencieux. Un BOOKING_NO_SHOW_UPDATED confirmé déclenche typiquement une séquence différente : une notification à la personne qui devait tenir le rendez-vous, et pour les cas répétés, un signalement pour ajuster la politique (acompte, confirmation obligatoire 24h avant).

Journaliser pour mesurer ce que ça change réellement

Sans journalisation, impossible de savoir si le taux de no-show baisse réellement après la mise en place des rappels IA — seulement une impression. Une table Supabase avec l’identifiant de réservation, l’horodatage, le statut (honoré, annulé, no-show) et le canal de rappel utilisé permet de calculer ce taux semaine après semaine. Notre guide de connexion n8n ↔ Supabase couvre la mise en place de ce type de table, sur le même principe que le workflow d’enregistrement d’audit Supabase du Pack Conformité & Audit — toute action automatisée mérite une trace, ne serait-ce que pour objectiver son efficacité.

Cal.com vs Calendly dans n8n : lequel choisir

Les deux outils se branchent sur n8n selon le même schéma général (Trigger en écoute, node d’action en complément), mais deux différences pèsent concrètement sur ce type de workflow. D’abord, Cal.com inclut les webhooks dans son offre gratuite individuelle, quand Calendly les réserve à un plan payant (Standard ou supérieur) — un détail qui change la donne pour tester l’automatisation avant d’investir. Ensuite, la détection native des no-shows sur Cal.com (via Cal Video ou marquage manuel déclenchant un webhook) évite le contournement nécessaire côté Calendly, où aucun événement n’est émis pour une absence : il faut un Schedule Trigger qui repasse périodiquement sur les rendez-vous passés pour la déduire. Pour une équipe déjà engagée sur l’un des deux outils, ce n’est pas une raison de migrer ; pour un choix encore ouvert, ces deux points comptent.

Bonnes pratiques et limites

  • Filtrer par type d’événement dès le Trigger, avec un Switch sur triggerEvent, plutôt que de tout traiter dans une seule branche linéaire — la lisibilité du workflow s’en ressent vite au-delà de trois ou quatre événements écoutés.
  • Ne pas sur-solliciter : un rappel unique 24h ou 3h avant suffit dans la plupart des cas ; multiplier les canaux et les relances rapproche du spam et peut inverser l’effet recherché.
  • Respecter le consentement pour les rappels SMS ou WhatsApp, qui relèvent de canaux différents de l’email transactionnel — vérifiez la base légale retenue, dans le même esprit que notre guide sur le traitement des demandes RGPD.
  • Tester avec de vrais événements avant la mise en production : Cal.com permet de renvoyer un événement de test depuis son panneau de webhooks, à vérifier de bout en bout comme pour n’importe quel webhook n8n.

Pour aller plus loin

Ce pipeline illustre un principe déjà présent dans plusieurs guides FlowKit : brancher un LLM sur un événement métier précis transforme une tâche répétitive — ici, relancer et suivre des rendez-vous — en process qui tourne seul, avec une meilleure conversion qu’un rappel générique. Le Pack Conformité & Audit (149 €) embarque déjà le pattern de relance automatique avec journalisation Supabase, directement réutilisable pour ce cas d’usage. Le Pack Inbox IA (79 €) complète naturellement le dispositif côté notifications d’équipe (digest Slack ou Telegram des rendez-vous du jour), et le Bundle FlowKit Complet (269 €) couvre l’ensemble.

FAQ

Questions fréquentes

Le Cal.com Trigger nécessite-t-il un serveur exposé publiquement ?

Oui, comme tout webhook : Cal.com doit pouvoir joindre votre instance n8n en HTTPS depuis internet. Sur n8n Cloud, l’URL est fournie automatiquement. En self-hosted, il faut un nom de domaine avec certificat valide (voir notre guide sur la mise en HTTPS avec Traefik ou Caddy) ; pour tester en local avant de configurer le vrai endpoint, un tunnel comme ngrok suffit, exactement comme pour tester n’importe quel webhook n8n en local.

Cal.com détecte-t-il vraiment les no-shows automatiquement, ou faut-il les marquer à la main ?

Cela dépend du type de rendez-vous. Pour les visioconférences tenues sur Cal Video, Cal.com peut détecter automatiquement l’absence de l’hôte ou de l’invité et déclencher l’événement BOOKING_NO_SHOW_UPDATED sans intervention humaine. Pour un rendez-vous physique ou sur un autre outil de visio, il n’existe aucune détection automatique : le no-show doit être marqué manuellement (dashboard ou API), ce qui déclenche alors le même événement webhook.

Faut-il un abonnement Cal.com payant pour utiliser les webhooks avec n8n ?

Non, contrairement à Calendly où les webhooks d’organisation exigent un plan payant, Cal.com inclut les webhooks dans son offre gratuite individuelle. Le Cal.com Trigger fonctionne donc dès le plan gratuit, ce qui en fait une option d’entrée de gamme intéressante pour tester ce type d’automatisation avant d’investir dans un plan Team.

Bundle FlowKit Complet

269 €