
Les professionnels cherchent aujourd’hui à automatiser leur gestion client pour gagner du temps et réduire les erreurs humaines coûteuses. La gestion manuelle des rendez-vous génère souvent des pertes financières, des oublis, et une organisation difficile à maintenir. ⚡Un bot IA basé sur n8n permet de créer une automatisation prise de rendez-vous fiable, continue, et totalement personnalisable. Hébergé sur un VPS LWS, ce système garantit le contrôle total des données professionnelles sensibles.🎉
Contrairement aux solutions SaaS, vous évitez les abonnements mensuels et les limitations techniques imposées. ✨Ce tutoriel explique comment construire un système de réservation automatique connecté à Google Calendar. Vous allez créer une solution disponible en continu pour vos clients. 💯Le but est simple. Automatiser votre agenda professionnel efficacement. Vous gardez la maîtrise technique complète.
Objectif
Ce tutoriel a pour objectif de vous permettre de construire un bot IA capable de gérer entièrement une automatisation prise de rendez-vous professionnelle. 🎉Le système créé avec n8n sur VPS LWS permettra de vérifier les disponibilités en temps réel dans Google Calendar. Il pourra ensuite créer automatiquement les rendez-vous et envoyer des confirmations par email ou SMS. Vous pourrez aussi ajouter des rappels automatiques afin de réduire les absences clients. 💥Le système permettra également l’annulation ou la modification de réservation. L’objectif est d’obtenir un système de réservation automatique fonctionnant en continu. Vous disposerez d’un outil totalement personnalisable. ✔Vous garderez le contrôle total sur vos données. Vous évitez toute dépendance aux plateformes SaaS externes.
Pré-requis
Pour suivre ce guide, vous devez :
- Disposer d’un environnement technique minimal afin de garantir le bon fonctionnement du système de réservation automatique,
- Vous aurez besoin d’un VPS LWS avec n8n installé via template ou Docker selon votre configuration serveur,
- Un compte Google actif est indispensable pour connecter le calendrier rendez-vous automatique via l’API Google Calendar,
- Vous devez aussi posséder un site web permettant d’intégrer le formulaire de réservation,
- Un accès SSH VPS, l’interface n8n, et la console Google Cloud sont nécessaires pour la configuration,
- Un compte email professionnel est recommandé pour envoyer les notifications automatiques,
Ces éléments permettent de construire une base stable. Ils garantissent aussi la fiabilité du booking automatisé n8n en production.
Besoin d'un serveur privé virtuel VPS sécurisé ?
LWS vous conseille sa formule d’hébergement sur VPS en promotion à -75% (offre à partir de 4,99€ par mois au lieu de 19,99 €). Non seulement les performances sont au rendez-vous mais vous profitez en plus d’un support exceptionnel.
Cadre technique et périmètre
Le système repose sur un bot IA orchestré par n8n afin de gérer toute la chaîne de planification rendez-vous automatique. Le processus commence par une entrée utilisateur via formulaire web ou chatbot connecté au workflow n8n. Le système analyse ensuite la demande en interrogeant le calendrier rendez-vous automatique via Google Calendar API. Si le créneau est libre, le système crée automatiquement la réservation et enregistre les données client.
Ensuite, il envoie les notifications email ou SMS nécessaires. Ce fonctionnement permet d’assurer une automatisation prise de rendez-vous totalement autonome. L’ensemble du système fonctionne en continu sans intervention humaine. Cette architecture permet aussi une personnalisation complète selon les besoins métier.
Architecture technique
Le workflow technique suit une logique simple mais robuste adaptée à un booking automatisé n8n professionnel. La requête utilisateur arrive via un webhook sécurisé hébergé sur le VPS LWS. Le workflow analyse ensuite la disponibilité du créneau en interrogeant Google Calendar en temps réel.
Si le créneau est disponible, le workflow crée un événement dans Google Calendar et stocke les informations dans Google Sheets. Ensuite, le système déclenche automatiquement l’envoi des notifications. Si le créneau est occupé, le système renvoie une réponse indiquant l’indisponibilité.
Cette architecture évite les doubles réservations. Elle garantit aussi une cohérence totale entre le formulaire, le calendrier et les notifications clients.
Limites du tutoriel et cas couverts
Ce tutoriel couvre la création complète d’un système booking sans code fonctionnant avec Google Calendar et notifications email. Il permet de gérer des créneaux fixes avec durée standard et confirmation automatique. Il convient parfaitement aux freelances, cabinets médicaux, consultants ou prestataires de services.
En revanche, ce guide ne couvre pas le paiement en ligne, les abonnements récurrents complexes ou les systèmes multi-ressources. Il ne couvre pas non plus les chatbots IA avancés intégrant des modèles conversationnels. Ces fonctionnalités nécessitent des workflows supplémentaires. Le système reste cependant totalement évolutif. Il constitue une base solide pour toute solution de réservation en ligne automatisée professionnelle.
Étapes techniques à suivre
Étape 1 : Installation n8n sur VPS LWS
Cette étape consiste à préparer un environnement n8n stable sur un VPS LWS afin de construire votre système de réservation automatique. Vous devez vérifier si votre VPS contient déjà le template n8n ou installer n8n via CapRover ou Docker selon votre configuration.
L’objectif est d’obtenir une interface n8n accessible via navigateur web. Cette base permet ensuite de construire le bot IA de gestion des rendez-vous. L’environnement doit être sécurisé avec HTTPS et accès administrateur protégé. Vous devez également conserver les accès fournis lors de la livraison VPS. Cette étape garantit la stabilité du booking automatisé n8n avant création des workflows.
Pour commencer :
Rendez-vous sur le site officiel de LWS et accédez à la section « VPS KVM ». Ensuite, choisissez VPS1 minimum pour démarrer le système
Par la suite, sélectionnez un template n8n ou CapRover lors de la configuration et validez la commande VPS. Vérifiez l’email de livraison contenant accès SSH et URL n8n.
Ces actions permettent d’obtenir un environnement opérationnel pour l’automatisation du calendrier Google et les workflows futurs.
Accédez ensuite à la page de commandes.
Entrez vos informations personnelles.
Une fois que la commande est livrée, vous recevrez un mail de confirmation avec tous les détails de votre VPS KVM. Ce mail contient aussi le lien initial de connexion à Caprover (Une plateforme qui permet d’utiliser facilement n8n pour créer des automatisations). Nous en aurons besoin plus tard.
Une fois le VPS actif, vous devez tester l’accès à l’interface n8n et créer le compte administrateur sécurisé. Vérifiez aussi que le port 5678 est accessible depuis internet.
Pour cela, cliquez sur le lien de connexion à Caprover dans le mail de livraison. Entrez le mot de passe par défaut envoyé dans le mail.
Vous devez connecter un domaine et activer la connexion sécurisée HTTPS. Ensuite, vous devez déployer une nouvelle application n8n nommé par exemple Mon-app-reservation.
Terminez la configuration de l’application.
Cliquez sur le bouton « Finish », accédez à l’application via le lien fourni et configurez un compte administrateur avec le mot de passe. Ceci vous permet de commencer à utiliser n8n. Gardez l’interface n8n ouverte.
Forcez ensuite le certificat SSL si votre domaine est configuré. Une fois ces vérifications terminées, votre serveur est prêt à héberger votre prise rendez-vous 24/7 automatisée.
Étape 2 : Configuration Google Calendar API
Cette étape permet de connecter votre bot IA à Google afin de piloter un calendrier rendez-vous automatique en temps réel. Le but est d’autoriser n8n à lire et créer des événements dans Google Calendar via OAuth2 sécurisé. Cette connexion garantit que votre automatisation prise de rendez-vous évite les conflits horaires et maintient un agenda toujours synchronisé.
Vous allez créer un projet Google Cloud, activer l’API Calendar, puis générer des identifiants OAuth2.
Ensuite, vous connecterez ces identifiants dans n8n afin d’autoriser l’accès au calendrier professionnel. Cette étape est critique car elle conditionne le fonctionnement du système de réservation automatique complet. Une mauvaise configuration empêche la création des rendez-vous.
Avant de démarrer la configuration technique, vous devez préparer l’environnement Google Cloud nécessaire à l’activation de l’API.

Rendez-vous dans le menu projet et cliquez sur le bouton « Nouveau projet ».
Accédez à console.cloud.google.com et créez un nouveau projet nommé par exemple « Réservations n8n« .
Sélectionnez ensuite le projet.
Ouvrez la section « API et services › Bibliothèque ».
Recherchez Google Calendar API puis cliquez sur le bouton « Activer ». 
Activez ensuite l’API de Google Calendar.

Allez dans la section « API et services puis Identifiants ».
Créez un ID client OAuth application Web.
Nommez l’application :
Configurez un « Ecran consentement OAuth avec email et nom application ».
Ajoutez l’option « Scopes Google Calendar requis ». 
- Type application Web
- Nom client OAuth n8n Booking Bot
- Ajoutez l’« URL redirection OAuth fournie dans n8n ».

- Cliquez sur le bouton « Créer ».

- Copiez les options « Client ID » et « Client Secret » dans un endroit précis.

Ensuite, vous devez connecter ces identifiants dans l’interface n8n pour autoriser l’accès Google Calendar.
Rendez-vous dans l’Interface n8n et développez la section « Credentials ». Cliquez sur le bouton « Add Credential ».
Recherchez ensuite Google Calendar OAuth2.
Collez les « Client ID » et « Secret ». Cliquez sur le bouton « Connect my account ».

Autorisez l’accès au calendrier Google
Vous devez vérifier que le statut Connected apparaît dans n8n. 
Vérifiez aussi que l’URL de redirection correspond exactement entre Google Cloud et n8n. Une différence HTTPS, port ou domaine provoquera une erreur OAuth. Une fois cette étape validée, votre booking automatisé n8n peut interroger Google Calendar et créer des événements automatiquement.
Étape 3 : Création workflow de base « Vérifier disponibilité »
Cette étape représente le socle logique du bot IA car elle permet de vérifier en temps réel si un créneau est disponible dans votre calendrier de rendez-vous automatique. Le workflow agit comme un contrôleur central qui analyse chaque demande avant toute création de réservation. Lorsqu’un utilisateur soumet une date et une heure via un formulaire ou un chatbot, le workflow interroge immédiatement Google Calendar.
Cette vérification empêche toute collision entre deux réservations sur le même créneau. Cette logique garantit la fiabilité globale du système de réservation automatique et protège votre agenda professionnel. Sans cette étape, votre automatisation prise de rendez-vous risquerait de créer des conflits horaires.
Avant de commencer la création technique des nœuds, vous devez d’abord préparer l’environnement workflow dans l’interface n8n afin d’avoir une structure propre et lisible.
Pour cela, vous devez ouvrir l’interface n8n depuis votre navigateur web, puis accéder au menu « Workflows » afin de créer un nouveau workflow dédié uniquement à la vérification de disponibilité.
Vous devez ensuite attribuer un nom clair comme « Réservation – Vérifier disponibilité » afin de faciliter la maintenance future du booking automatisé n8n. 
Cette organisation permet d’éviter toute confusion lorsque vous aurez plusieurs workflows actifs sur votre serveur.
Nœud 1 : Webhook (Trigger)
- Glissez-déposez le nœud « Webhook » sur canvas

- Les paramètres sont à personnaliser comme suite :
- HTTP Method : POST
- Path : « /check-availability«
- Response Mode : « Respond When Last Node Finishes«
- Copiez « Production URL » (sera utilisée dans formulaire de reservation plus tard). Exemple URL :
https://votre-n8n.com/webhook/check-availability

Nœud 2 : Set (préparation données)
- Ajoutez un nœud « Set« . Dans la derniere version de n8n, ce nœud s’appelle désormais « Edit fields »

- Cliquez sur le bouton « Add field » et ajoutez les différents champs ci-dessous :
- Name : requestedDate, Type : String, Value : {{ $json.body.date }}
- Name : requestedTime, Type : String, Value : {{ $json.body.time }}
- Name : duration, Type : Number, Value : 60 (durée rendez-vous minutes)

Nœud 3 : Code (calculer plage horaire)
- Ajoutez le nœud « Code«

- Mode : « Run Once for All Items«
- Insérez le code JavaScript :
// Convertir date/heure demandée en ISO 8601
const requestedDate = $input.all()[0].json.requestedDate; // Format: "2026-02-15"
const requestedTime = $input.all()[0].json.requestedTime; // Format: "14:00"
const duration = $input.all()[0].json.duration; // 60 minutes
const startDateTime = new Date(`${requestedDate}T${requestedTime}:00`);
const endDateTime = new Date(startDateTime.getTime() + duration * 60000);
return [{
json: {
timeMin: startDateTime.toISOString(),
timeMax: endDateTime.toISOString()
}
}];

Nœud 4 : Google Calendar – Get Events
- Ajoutez le nœud « Google Calendar«

- Credential : sélectionnez l’option « Google Calendar Pro » (créée à l’étape 1)
- Operation : « Get Many »
- Calendar : sélectionner calendrier principal (ex : « Rendez-vous Clients« )
- After > Time Min :
{{ $json.timeMin }} - Before > Time Max :
{{ $json.timeMax }}

Nœud 5 : IF (vérifier si créneau libre)
- Ajoutez le nœud « IF«

- Conditions :
- Value 1 :
{{ $json.items.length }}(nombre événements trouvés) - Operation : « Equal »
- Value 2 : 0
- Value 1 :
- Si égal 0 = créneau libre (branche TRUE)
- Si > 0 = créneau occupé (branche FALSE)

Nœud 6 : Respond to Webhook (créneau disponible – branche TRUE)
- Ajoutez le nœud « Respond to Webhook » après TRUE

- Respond With : JSON
- Response Body :
{
"available": true,
"slot": {
"date": "{{ $('Set').item.json.requestedDate }}",
"time": "{{ $('Set').item.json.requestedTime }}",
"duration": {{ $('Set').item.json.duration }}
},
"message": "Créneau disponible, vous pouvez réserver."
}

Nœud 7 : Respond to Webhook (créneau indisponible – branche FALSE)
- Ajoutez le nœud « Respond to Webhook » après FALSE

- Respond With : JSON
- Response Body :
{
"available": false,
"message": "Créneau déjà réservé. Veuillez choisir un autre horaire."
}

Nœud 8 : Error Trigger (gestion erreurs)
Ce noeud ne fonctionne que lorsqu’une erreur se produit :
- Ajoutez le nœud « Error Trigger«
- Connecter à nœud « Respond to Webhook »
- Response Body :
{
"error": true,
"message": "Erreur lors de la vérification. Veuillez réessayer."
}

Une fois tous les nœuds configurés, vous devrez activer le workflow en mode production afin qu’il puisse recevoir des requêtes externes. 
Vous devrez ensuite tester manuellement le webhook en envoyant une requête JSON via Postman ou curl afin de vérifier la réponse du système.
Vous devrez aussi vérifier le fuseau horaire afin d’éviter tout décalage entre votre formulaire et Google Calendar. Une fois ces tests validés, votre système sera capable de vérifier les disponibilités en temps réel.
Besoin d’un serveur VPS KVM performant et flexible ?
Découvrez nos offres VPS KVM haut de gamme : des ressources garanties et un contrôle total pour vos projets. Profitez d’un hébergement 100 % SSD, d’un accès root complet, le tout dans un datacenter en France. Démarrez dès maintenant à partir de 4,99 €/mois !
Étape 4 : Création d’un workflow « Créer réservation »
Cette étape transforme votre système en véritable bot IA opérationnel capable de créer automatiquement une réservation complète après validation de disponibilité. Le workflow va recevoir toutes les informations client puis créer un événement dans votre calendrier de rendez-vous automatique.
Il va ensuite enregistrer les données dans un tableau de suivi et envoyer les notifications nécessaires. Cette étape représente le cœur métier du système de réservation automatique car elle automatise toute la gestion administrative. Elle permet aussi d’améliorer l’expérience client grâce aux confirmations immédiates.
Une fois cette étape terminée, votre automatisation prise de rendez-vous devient totalement autonome et exploitable en production réelle.
Avant de créer le workflow dans n8n, vous devez préparer votre feuille Google Sheets afin d’enregistrer l’historique des réservations clients.
Vous devez créer une nouvelle feuille appelée par exemple « Réservations Clients », puis créer des colonnes structurées contenant :
- L’identifiant de réservation
- La date
- L’heure
- Le nom client
- L’email
- Le téléphone
- Le service demandé
- Le statut de réservation
- La date de création
Cette organisation permet de garder une traçabilité complète du booking automatisé n8n et facilite les analyses futures.
Ensuite, vous devez créer un nouveau workflow dans n8n dédié uniquement à la création des rendez-vous. Vous devez ouvrir l’interface n8n puis accéder au menu Workflows afin de créer un nouveau workflow.
Vous devez attribuer un nom clair comme « Réservation – Créer rendez-vous » afin de maintenir une architecture propre et modulaire. Cette séparation entre les workflows permet de faciliter la maintenance et l’évolution du système.
Nœud 1 : Webhook (réception données)
- Ajoutez le noeud Webhook.

- HTTP Method : POST
- Path : « /create-booking«
- Body attendu :
{
"name": "Jean Dupont",
"email": "jean@example.com",
"phone": "+33612345678",
"date": "2026-02-20",
"time": "14:00",
"service": "Consultation"
}

Nœud 2 : Set (préparer données)
- Extraire et formater toutes données webhook
- Générer ID unique :
{{ $now.format('YYYYMMDDHHmmss') }}-{{ $json.body.name.split(' ')[0] }}

Nœud 3 : Google Calendar – Create Event
- Ajoutez le noeud Google Calendar create event.

- Credential : Google Calendar Pro
- Calendar : Rendez-vous Clients
- Start :
{{ $json.body.date }}T{{ $json.body.time }}:00 (ISO 8601) - End : calculer +60 min (ou durée service)
- Summary : « RDV
{{ $json.body.service }} - {{ $json.body.name }}« - Description :
Client : {{ $json.body.name }}
Email : {{ $json.body.email }}
Téléphone : {{ $json.body.phone }}
Service : {{ $json.body.service }}
ID Réservation : {{ $('Set').item.json.bookingId }}
- Location : (optionnel, adresse cabinet)
- Attendees :
{{ $json.body.email }}(invite client automatiquement) - Send Notifications : Yes (Google envoie invitation email)

Nœud 4 : Google Sheets – Append Row
- Ajoutez le Noeud Google Sheets-Append Row

- Credential : créer Google Sheets OAuth (C’est la même procédure que Calendar)

- Operation : « Append Row«
- Document : « Réservations Clients » (ID de la feuille Google Sheets)
- Sheet : « Feuille 1«
- Values :
{{ $('Set').item.json.bookingId }}{{ $json.body.date }}{{ $json.body.time }}{{ $json.body.name }}{{ $json.body.email }}{{ $json.body.phone }}{{ $json.body.service }}"Confirmé"{{ $now.format('YYYY-MM-DD HH:mm:ss') }}""

Nœud 5 : Gmail – Send Email (confirmation client)
- Ajoutez le noeud Gmail – send email

- Credential : créer Gmail OAuth (même procédure que Google Calendar ou Sheets)
- Resource : « Message«
- Operation : « Send«
- To :
{{ $json.body.email }} - Subject : « Confirmation rendez-vous – {{ $json.body.service }}«
- Message :
Bonjour {{ $json.body.name }},
Votre rendez-vous est confirmé :
📅 Date : {{ $json.body.date }}
🕐 Heure : {{ $json.body.time }}
💼 Service : {{ $json.body.service }}
📍 Adresse : [VOTRE ADRESSE]
📞 Contact : [VOTRE TÉLÉPHONE]
Numéro de réservation : {{ $('Set').item.json.bookingId }}
Pour annuler ou modifier : [lien annulation]
À bientôt,
[VOTRE ENTREPRISE]

- Options > Is HTML : true (si HTML utilisé)
Nœud 6 : Gmail – Send Email (notification professionnel)
- Même configuration que nœud 5
- To : votre-email-pro@example.com
- Subject : « Nouveau RDV :
{{ $json.body.name }} - {{ $json.body.date }}« - Message : résumé infos client

Nœud 7 : Respond to Webhook (succès)
- Ajoutez le noeud Respond to webhook
- Response Body :
{
"success": true,
"bookingId": "{{ $('Set').item.json.bookingId }}",
"message": "Rendez-vous créé avec succès. Email de confirmation envoyé."
}

Enregistrez ensuite votre workflow et activez-le.

Une fois ce workflow activé, votre système pourra créer automatiquement des réservations complètes avec notifications en temps réel.

Étape 5 : Création de formulaire web de réservation
Cette étape permet de créer l’interface visible par vos clients afin d’alimenter votre bot IA avec des demandes réelles de réservation. Le formulaire agit comme point d’entrée du système de réservation automatique et transmet les données vers les workflows n8n via des webhooks sécurisés.
Il doit être simple, rapide et fiable afin d’assurer une excellente expérience utilisateur. Le formulaire permet aussi de déclencher la vérification du calendrier rendez-vous automatique puis la création du rendez-vous si le créneau est libre. Cette étape transforme votre automatisation de prise de rendez-vous en solution réellement exploitable par vos clients. Elle constitue le lien direct entre votre site web et votre booking automatisé n8n.
Avant d’intégrer le formulaire dans votre site web, vous devez créer un fichier HTML complet contenant la structure du formulaire et le script JavaScript permettant de communiquer avec n8n. Vous devez créer une page HTML contenant les champs essentiels nécessaires à la réservation.
- Intégrer un champ nom client permettant d’identifier la personne effectuant la réservation
- Ajouter un champ email permettant l’envoi des confirmations automatiques
- Ajouter un champ téléphone permettant l’envoi potentiel de SMS
- Intégrer un champ service permettant de sélectionner la prestation souhaitée
- Ajouter un champ date afin de sélectionner le jour du rendez-vous. Vous devez ajouter un champ heure afin de sélectionner le créneau disponible.
Voici un exemple de code à personnaliser :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Réservation en ligne</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: Arial, sans-serif; background: #f5f5f5; padding: 20px; }
.booking-form { max-width: 500px; margin: 0 auto; background: white; padding: 30px; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); }
h2 { margin-bottom: 20px; color: #333; }
.form-group { margin-bottom: 20px; }
label { display: block; margin-bottom: 5px; color: #555; font-weight: bold; }
input, select { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px; }
button { width: 100%; padding: 12px; background: #007bff; color: white; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; }
button:hover { background: #0056b3; }
button:disabled { background: #ccc; cursor: not-allowed; }
.message { padding: 15px; margin-top: 20px; border-radius: 5px; display: none; }
.success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; }
.error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; }
.loading { text-align: center; color: #007bff; }
</style>
</head>
<body>
<div class="booking-form">
<h2>Prendre un rendez-vous</h2>
<form id="bookingForm">
<div class="form-group">
<label for="name">Nom complet *</label>
<input type="text" id="name" required>
</div>
<div class="form-group">
<label for="email">Email *</label>
<input type="email" id="email" required>
</div>
<div class="form-group">
<label for="phone">Téléphone *</label>
<input type="tel" id="phone" required placeholder="+33612345678">
</div>
<div class="form-group">
<label for="service">Service *</label>
<select id="service" required>
<option value="">Choisir...</option>
<option value="Consultation">Consultation</option>
<option value="Suivi">Suivi</option>
<option value="Urgence">Urgence</option>
</select>
</div>
<div class="form-group">
<label for="date">Date *</label>
<input type="date" id="date" required>
</div>
<div class="form-group">
<label for="time">Heure *</label>
<input type="time" id="time" required step="1800">
</div>
<button type="submit" id="submitBtn">Vérifier et Réserver</button>
</form>
<div id="message" class="message"></div>
</div>
<script>
const form = document.getElementById('bookingForm');
const submitBtn = document.getElementById('submitBtn');
const messageDiv = document.getElementById('message');
// URLs webhooks n8n (REMPLACER PAR VOS URLs)
const CHECK_URL = 'https://votre-n8n.com/webhook/check-availability';
const BOOK_URL = 'https://votre-n8n.com/webhook/create-booking';
form.addEventListener('submit', async (e) => {
e.preventDefault();
submitBtn.disabled = true;
submitBtn.textContent = 'Vérification...';
showMessage('Vérification de la disponibilité...', 'loading');
// Récupérer données formulaire
const formData = {
name: document.getElementById('name').value,
email: document.getElementById('email').value,
phone: document.getElementById('phone').value,
service: document.getElementById('service').value,
date: document.getElementById('date').value,
time: document.getElementById('time').value
};
try {
// Étape 1 : Vérifier disponibilité
const checkResponse = await fetch(CHECK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
date: formData.date,
time: formData.time
})
});
const checkResult = await checkResponse.json();
if (!checkResult.available) {
showMessage('❌ Créneau indisponible. Veuillez choisir une autre date/heure.', 'error');
submitBtn.disabled = false;
submitBtn.textContent = 'Vérifier et Réserver';
return;
}
// Étape 2 : Créer réservation
submitBtn.textContent = 'Création...';
const bookResponse = await fetch(BOOK_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(formData)
});
const bookResult = await bookResponse.json();
if (bookResult.success) {
showMessage(`✅ Rendez-vous confirmé ! Numéro : ${bookResult.bookingId}. Email envoyé.`, 'success');
form.reset();
} else {
showMessage('❌ Erreur lors de la création. Veuillez réessayer.', 'error');
}
} catch (error) {
showMessage('❌ Erreur de connexion. Veuillez réessayer.', 'error');
console.error('Erreur:', error);
}
submitBtn.disabled = false;
submitBtn.textContent = 'Vérifier et Réserver';
});
function showMessage(text, type) {
messageDiv.textContent = text;
messageDiv.className = `message ${type}`;
messageDiv.style.display = 'block';
}
// Définir date minimum (aujourd'hui)
document.getElementById('date').min = new Date().toISOString().split('T')[0];
</script>
</body>
</html>
Ensuite, vous devez configurer la connexion entre votre formulaire et vos workflows n8n via les URLs webhook :
- Remplacer l’URL de vérification de disponibilité par l’URL Production du workflow check-availability créée précédemment
- Remplacer l’URL de création réservation par l’URL Production du workflow create-booking,
Vous devez vérifier que les webhooks utilisent HTTPS si votre site utilise HTTPS. Vous devez vérifier que les données envoyées sont bien au format JSON afin d’assurer la compatibilité avec n8n. Vous devez vérifier que les réponses JSON sont correctement interprétées côté JavaScript afin d’afficher les messages utilisateur.
Une fois le formulaire créé, vous devez l’intégrer sur votre site web selon votre environnement technique. Vous pouvez enregistrer le fichier HTML sous le nom reservation.html puis l’envoyer via FTP sur votre serveur web.
Vous pouvez aussi intégrer le formulaire directement dans une page WordPress via un bloc HTML personnalisé :
- Connectez-vous à votre tableau de bord puis rendez-vous dans la section « Pages > Ajouter une page ».
- Titre : « Prendre rendez-vous«
- Ajoutez un bloc HTML personnalisé

- Collez le code HTML complet

- Slug : /reservation
- Publiez ensuite le formulaire

Vous pouvez également intégrer le formulaire sous forme d’iframe afin de l’afficher dans une page existante. Cette flexibilité permet d’intégrer facilement votre réservation en ligne automatisée dans n’importe quel site professionnel.
Après l’intégration, vous devez effectuer plusieurs tests complets afin de vérifier le fonctionnement global du système. Vous devez tester la création d’une réservation valide afin de vérifier que le workflow n8n répond correctement. Vous devez tester un créneau déjà occupé afin de vérifier que le message d’indisponibilité s’affiche correctement.
Vous devez vérifier que l’événement apparaît bien dans Google Calendar. Vous devez vérifier que l’email de confirmation est bien reçu par le client. Ces tests permettent de valider que votre planification rendez-vous automatique fonctionne en conditions réelles.
Étape 6 : Ajout d’un système de rappels automatiques
Cette étape permet d’améliorer la fiabilité globale du bot IA en réduisant les absences clients grâce à des rappels automatiques programmés. Le système va analyser votre calendrier rendez-vous automatique chaque jour afin d’identifier les rendez-vous prévus dans les prochaines 24 heures.
Il enverra ensuite un message de rappel automatique par email ou SMS selon votre configuration. Cette fonctionnalité améliore fortement l’efficacité d’une automatisation de prise de rendez-vous professionnelle. Elle augmente aussi la satisfaction client car les utilisateurs reçoivent un rappel clair et utile. Cette étape transforme votre système de réservation automatique en solution professionnelle complète adaptée à un usage quotidien.
Avant de construire ce workflow, vous devez comprendre que ce système fonctionne avec un déclencheur programmé qui analyse automatiquement les événements futurs.
Vous devez créer un nouveau workflow n8n nommé « Réservation Rappels 24h » afin de séparer clairement cette fonction du reste du système.
Nœud 1 : Schedule Trigger

- Trigger : « Every Day«
- Hour : 9 (9h du matin)
- Minute : 0

Nœud 2 : Code (calculer fenêtre 24h)

const now = new Date();
const tomorrow = new Date(now.getTime() + 24 * 60 * 60 * 1000);
const dayAfter = new Date(now.getTime() + 48 * 60 * 60 * 1000);
return [{
json: {
timeMin: tomorrow.toISOString(),
timeMax: dayAfter.toISOString()
}
}];

Nœud 3 : Google Calendar – Get an Event

- Calendar : Rendez-vous Clients
- Time Min :
{{ $json.timeMin }} - Time Max :
{{ $json.timeMax }} - Single Events : true

Nœud 4 : IF (vérifier si événements trouvés)

- Condition :
{{ $json.items.length }} > 0

Nœud 5 : Split In Batches (si TRUE)

- Batch Size : 1 (cela permet de traiter chaque rendez-vous individuellement)

Nœud 6 : Set (extraire infos événement)

- Extract email client depuis event.attendees
- Extract date/heure rendez-vous
- Extract service/description
Nœud 7 : Gmail – Send Email (rappel)

- To :
{{ $json.clientEmail }} - Subject : « Rappel : Rendez-vous demain«
- Message :
Bonjour,
Rappel : vous avez rendez-vous demain.
📅 Date : {{ $json.eventDate }}
🕐 Heure : {{ $json.eventTime }}
💼 Service : {{ $json.service }}
📍 Adresse : [VOTRE ADRESSE]
À demain !
[VOTRE ENTREPRISE]

Nœud 8 : Twilio Send SMS (optionnel)

- Si compte Twilio configuré
- Message court rappel SMS

Une fois le workflow activé, le système exécutera automatiquement l’envoi des rappels chaque jour sans intervention humaine. 
Vous devrez vérifier régulièrement le quota d’emails si vous utilisez Gmail gratuit. Vous devrez aussi vérifier le fuseau horaire afin d’éviter l’envoi de rappels trop tôt ou trop tard. 
Une fois validé, votre booking automatisé n8n devient beaucoup plus fiable et professionnel.
Étape 7 : Ajout d’une fonctionnalité d’annulation/reprogrammation
Cette étape permet d’améliorer fortement l’expérience utilisateur de votre bot IA en permettant aux clients d’annuler ou modifier un rendez-vous sans intervention humaine. Le système va générer automatiquement un lien unique associé à chaque réservation. Ce lien permettra d’accéder à un workflow spécifique capable de supprimer l’événement dans votre calendrier rendez-vous automatique et de mettre à jour votre base de données.
Cette fonctionnalité rend votre automatisation de prise de rendez-vous plus professionnelle et plus flexible. Elle permet aussi d’éviter les échanges email inutiles entre le client et le professionnel. Cette étape renforce la maturité globale du système de réservation automatique.
Nœud 1 : Webhook

- Path : « /cancel-booking«
- Method : GET
- Query Parameters : bookingId

Nœud 2 : Google Sheets – Lookup (Get row in sheets)

- Rechercher ligne avec bookingId
- Extraire eventId Google Calendar
Nœud 3 : Google Calendar – Delete an Event

- Calendar : Rendez-vous Clients
- Event ID :
{{ $json.eventId }}

Nœud 4 : Google Sheets – Update Row

- Colonne « Statut » : « Annulé«

Nœud 5 : Gmail – Send Email

- Confirmation annulation client
Nœud 6 : Respond to Webhook
- Page HTML confirmation : « Votre rendez-vous a été annulé »

Enfin, vous devez modifier le workflow de création de réservation afin d’intégrer le lien d’annulation dans l’email client. Vous devez ajouter dans l’email un lien contenant l’URL du webhook cancel-booking avec le bookingId dynamique.
Une fois cette étape terminée, votre booking automatisé n8n permet aux clients de gérer leurs rendez-vous en autonomie. Vous devrez vérifier que le lien est sécurisé et difficile à deviner. Vous pourrez aussi ajouter une limite empêchant l’annulation moins de deux heures avant le rendez-vous. Cette étape complète votre réservation en ligne automatisée avec une gestion client avancée.
Étape 8 : Optimisations et personnalisations
Cette étape permet d’améliorer et personnaliser votre système booking sans code selon votre métier et votre volume de réservations. Elle permet d’adapter votre planification rendez-vous automatique à des besoins plus complexes. Ces optimisations permettent aussi d’améliorer la sécurité, la performance et l’expérience utilisateur.
Cette étape n’est pas obligatoire pour le fonctionnement de base mais elle permet d’obtenir un système plus avancé. Elle permet aussi de préparer l’évolution future du bot IA vers des fonctionnalités plus intelligentes.
Voici les améliorations recommandées que vous pouvez implémenter progressivement selon vos besoins :
- Créer une gestion d’horaires variables en utilisant un Google Sheets contenant les disponibilités hebdomadaires,
- Créer une gestion de durée de service variable afin d’adapter automatiquement la durée du rendez-vous,
- Ajouter Google reCAPTCHA afin de protéger votre formulaire contre les robots et le spam,
- Ajouter une gestion multi-praticiens permettant de choisir le prestataire dans le formulaire,
- Ajouter un paiement d’acompte en ligne via Stripe afin de sécuriser les réservations,
- Créer un tableau de bord de suivi via Google Sheets ou une interface web personnalisée,
Ces optimisations permettent de transformer votre automatisation calendrier Google en solution métier complète. Elles permettent aussi d’adapter le système à une croissance future. Votre infrastructure reste évolutive et totalement personnalisable.
Vérification du bon fonctionnement de votre bot IA de reservation
Cette phase permet de vérifier que votre bot IA fonctionne correctement dans des conditions réelles d’utilisation. L’objectif est de valider chaque composant du système de réservation automatique afin d’éviter toute erreur en production. Vous devez tester l’ensemble du flux depuis le formulaire jusqu’à la création du rendez-vous dans le calendrier rendez-vous automatique.
Ces tests permettent aussi de vérifier la stabilité globale de votre automatisation prise de rendez-vous. Ils doivent être réalisés avant toute mise en service auprès de vrais clients. Cette étape permet d’identifier rapidement les erreurs de configuration ou les problèmes d’intégration entre les différents outils utilisés dans votre booking automatisé n8n.

Voici les tests fonctionnels à effectuer afin de valider le système complet.
- Tester un flux de réservation complet en remplissant le formulaire avec des données valides afin de vérifier la création du rendez-vous.
- Vérifier que l’événement apparaît correctement dans Google Calendar avec la bonne date et la bonne heure.
- Vérifier que l’email de confirmation est reçu côté client et côté professionnel.
- Vérifier que la réservation est bien enregistrée dans Google Sheets avec le statut Confirmé.
- Tester la protection contre la double réservation en tentant de réserver deux fois le même créneau horaire.
- Tester la validation du formulaire en entrant un email invalide ou une date passée.
- Tester l’envoi des rappels automatiques en créant un rendez-vous programmé dans les prochaines 24 heures.
- Tester la fonctionnalité d’annulation en utilisant le lien présent dans l’email de confirmation.
Ces tests permettent de valider le fonctionnement global du système booking sans code. Ils permettent aussi de vérifier que toutes les automatisations fonctionnent correctement ensemble.
Erreurs fréquentes et cas de blocage

Erreur 1 : redirect_uri_mismatch Google OAuth
Cette erreur apparaît généralement lors de la connexion Google Calendar dans n8n et bloque immédiatement le fonctionnement du bot IA. Elle empêche l’accès au calendrier rendez-vous automatique et rend impossible la création ou la vérification des événements. Cette erreur provient presque toujours d’une incohérence entre l’URL OAuth configurée dans Google Cloud et celle utilisée par n8n.
Cette erreur est fréquente lors de la première configuration d’une automatisation prise de rendez-vous. Elle doit être corrigée rapidement afin de rendre votre système de réservation automatique fonctionnel.
Voici les causes les plus fréquentes identifiées dans ce type de configuration :
- Configuration d’une URL HTTP au lieu de HTTPS dans Google Cloud. Vous devez copier exactement l’URL OAuth Redirect fournie par n8n,
- Oubli d’ajouter le port n8n dans l’URL de redirection. Vous devez coller cette URL dans Google Cloud Console sans modification.
- Ajout d’un slash final différent entre Google Cloud et n8n. Vous devez supprimer les anciennes URL incorrectes enregistrées.
- Modification d’un domaine sans mettre à jour Google Cloud. Vous devez reconnecter ensuite votre compte Google dans n8n.
Erreur 2 : Fuseau horaire incorrect dans Google Calendar
Cette erreur provoque un décalage entre l’heure demandée par le client et l’heure réellement enregistrée dans le calendrier. Elle peut rendre votre booking automatisé n8n inutilisable en production si elle n’est pas corrigée. Elle est souvent liée à la gestion UTC des APIs Google. Elle peut aussi être liée au fuseau du serveur VPS. Cette erreur impacte directement la fiabilité de votre planification rendez-vous automatique.
Voici les causes principales de ce problème.
- Vous utilisez une date ISO sans spécifier le fuseau horaire. Pour cela, Vous devez ajouter explicitement le fuseau horaire Europe Paris dans vos scripts.
- Votre serveur VPS utilise un fuseau différent de votre pays. Ainsi, vous devez vérifier le fuseau horaire dans Google Calendar.
- Votre workflow n8n convertit mal les dates. Vous devez tester plusieurs réservations avec horaires différents.
Erreur 3 : Emails Gmail non envoyés quota dépassé
Cette erreur apparaît lorsque votre compte Gmail atteint sa limite quotidienne d’envoi. Elle peut bloquer les confirmations clients et dégrader la qualité du système booking sans code. Elle apparaît surtout en phase de test intensif. Elle doit être anticipée si votre automatisation prise de rendez-vous traite beaucoup de clients.
Voici les causes principales de cette erreur.
- Vous utilisez un compte Gmail gratuit limité à environ 100 emails par jour.
- Vous effectuez trop de tests successifs.
- Vous envoyez plusieurs emails pour un seul rendez-vous.
Voici les solutions recommandées pour corriger cette erreur :
- Réduire le nombre d’emails envoyés par réservation.
- Utiliser Google Workspace si votre volume est important.
- Utiliser SendGrid ou Mailgun comme alternative.
Erreur 4 : Double réservation malgré la vérification
Cette erreur est plus rare mais critique pour votre système de réservation automatique. Elle se produit lorsque deux demandes arrivent exactement au même moment. Elle est appelée race condition en automatisation. Elle peut créer deux événements sur le même créneau.
Voici les causes principales :
- Deux requêtes arrivent simultanément sur le webhook.
- Le délai entre vérification et création est trop long.
Voici les solutions recommandées :
- Vous devez réduire le délai entre vérification et création du rendez-vous.
- Vous devez utiliser un système de verrou logique temporaire.
- Vous pouvez utiliser une base transactionnelle comme Airtable.
Erreur 5 : Webhook n8n inaccessible
Cette erreur empêche le formulaire de communiquer avec votre workflow. Elle bloque totalement votre automatisation calendrier Google. Elle est souvent liée à un problème réseau ou sécurité.
Voici les causes principales.
- Workflow n8n désactivé.
- Port serveur bloqué par pare-feu.
- Problème configuration CORS.
Voici les solutions recommandées.
- Vérifier que le workflow est actif dans n8n.
- Ouvrir le port 5678 sur votre VPS.
- Configurer correctement les headers CORS.
Erreur 6 : Google Sheets ligne vide ajoutée
Cette erreur provoque l’enregistrement de lignes incorrectes dans votre base. Elle peut compliquer le suivi client dans votre système booking sans code. Elle est souvent liée à un mapping incorrect des colonnes.
Voici les causes principales.
- Ordre colonnes modifié manuellement.
- Variables n8n mal configurées.
Voici les solutions recommandées :
- Vérifier le mapping colonnes dans n8n,
- Tester chaque nœud individuellement,
Bonnes pratiques reconnues lors de la configuration du bot IA avec n8n

1. Sécurité et conformité
La sécurité des données doit être une priorité absolue lors du déploiement d’un bot IA gérant des informations clients sensibles. Votre système de réservation automatique doit respecter les principes de protection des données et les obligations réglementaires. Cette approche permet de renforcer la confiance client tout en protégeant votre activité. Elle permet aussi d’éviter des sanctions légales liées à une mauvaise gestion des données.
Une bonne sécurité renforce la stabilité globale de votre automatisation prise de rendez-vous. Elle garantit également que votre booking automatisé n8n reste exploitable sur le long terme.
Voici les bonnes pratiques essentielles à appliquer dès la mise en production :
- Informer les clients que leurs données sont utilisées uniquement pour la gestion des rendez-vous.
- Afficher un lien vers votre politique de confidentialité sur le formulaire.
- Sécuriser tous les accès via HTTPS avec certificat SSL valide.
- Stocker les clés API uniquement dans le gestionnaire Credentials n8n.
- Limiter les accès Google Sheets uniquement aux personnes autorisées.
Prévoir une suppression automatique des données après un délai défini. - Mettre en place des sauvegardes régulières des données critiques.
2. Performance et fiabilité
Un système booking sans code performant doit être capable de traiter les demandes rapidement tout en restant stable sous charge. Une bonne optimisation permet d’éviter les ralentissements et les erreurs d’exécution. Elle permet aussi de garantir une expérience utilisateur fluide.
La performance influence directement la perception de qualité de votre automatisation calendrier Google. Une architecture optimisée permet aussi d’absorber la croissance du nombre de réservations.
Voici les pratiques recommandées pour optimiser les performances.
- Limiter le nombre de nœuds inutiles dans chaque workflow.
- Configurer un Error Trigger sur chaque workflow n8n.
- Configurer un système de retry automatique sur les appels API.
- Surveiller l’uptime serveur via un outil de monitoring.
- Surveiller les quotas Google Calendar et Gmail.
- Analyser régulièrement les logs d’exécution n8n.
3. Expérience utilisateur
L’expérience utilisateur influence directement le taux de conversion et la satisfaction client. Un formulaire clair améliore l’efficacité de votre planification rendez-vous automatique. Une communication claire réduit le risque d’erreurs client. Une bonne UX améliore aussi la perception professionnelle de votre service.
Voici les bonnes pratiques UX à appliquer :
- Limiter le formulaire à six champs maximum.
- Afficher les erreurs de saisie en temps réel.
- Afficher un message de confirmation clair après réservation.
- Proposer des créneaux alternatifs si un créneau est occupé.
- Optimiser le formulaire pour mobile.
4. Évolutivité et maintenance
Un bon système de réservation automatique doit être conçu pour évoluer facilement selon la croissance de votre activité. Une architecture modulaire facilite l’ajout de nouvelles fonctionnalités. Elle permet aussi de simplifier la maintenance technique.
Voici les bonnes pratiques pour assurer l’évolutivité.
- Séparer chaque fonction dans un workflow n8n distinct.
- Sauvegarder régulièrement vos workflows au format JSON.
- Documenter les URLs webhook et les credentials utilisés.
- Prévoir un plan de maintenance régulier du système.
Cohérence avec l’écosystème LWS
L’intégration du bot IA dans l’écosystème LWS permet d’obtenir une infrastructure stable, souveraine et adaptée aux besoins professionnels.
Le VPS LWS permet d’héberger n8n en environnement isolé afin de garantir la performance et la sécurité du système de réservation automatique.
L’hébergement en datacenter France permet aussi de renforcer la conformité réglementaire pour la gestion des données clients. L’utilisation combinée du VPS, du domaine et du SSL permet de construire une automatisation prise de rendez-vous totalement indépendante des solutions SaaS externes.
Cette approche permet aussi d’optimiser les coûts tout en conservant une flexibilité technique complète pour votre booking automatisé n8n.
Conclusion
La mise en place d’un bot IA avec n8n sur VPS LWS permet de créer une automatisation prise de rendez-vous totalement indépendante des solutions SaaS traditionnelles. ✨Ce système permet de contrôler vos données, réduire vos coûts et automatiser votre organisation quotidienne. Grâce à l’intégration avec Google Calendar, les vérifications de disponibilité et les notifications automatiques deviennent entièrement autonomes. ⚡Votre système de réservation automatique peut fonctionner en continu sans intervention humaine. 🎁Cette solution reste évolutive et personnalisable selon vos besoins métier. Elle constitue une base solide pour développer des automatisations plus avancées.🙌
En appliquant correctement ce guide, vous obtenez un booking automatisé n8n fiable, économique et adapté aux usages professionnels modernes. Et si vous avez des questions, des ajouts ou des suggestions, n’hésitez pas à nous écrire dans la section prévue pour les commentaires.

Commentaires (0)