Recevoir des Réservations avec WebBlocks Appointments

Permettez aux visiteurs de réserver du temps sur votre site. Définissez ce qu'ils peuvent réserver, la personne ou ressource qui assure le service et ses disponibilités ; placez ensuite le formulaire natif sur une page CMS et gérez les rendez-vous dans le panneau.

Notre exemple est Northstar Studio. Les visiteurs demandent une Portfolio consultation de 45 minutes avec Studio adviser. Le conseiller travaille du lundi au vendredi, de 09:00 à 17:00, dans le fuseau Europe/Berlin, avec 15 minutes après chaque entretien pour la préparation et les notes. Vous soumettrez une demande, la confirmerez comme opérateur, ajouterez une réservation téléphonique et retrouverez une annulation du visiteur dans la liste.

Ce parcours a été vérifié avec Appointments 0.16.1 et WebBlocks CMS 1.105.26. L'exemple facultatif d'accès des membres utilise aussi Memberships 0.2.0. Les noms, réservations et adresses des captures sont fictifs. Réservation, changements d'état, fermeture datée, annulation et visibilité des services membres ont été testés localement. La livraison réelle des emails et la planification des rappels en production n'ont pas été testées ; les avertissements du courrier local sont volontairement visibles. Les captures sont en anglais ; les noms des champs et boutons restent en anglais pour leur correspondre.

Comprendre d'abord les quatre éléments

Élément Ce qu'il contrôle Exemple Northstar Studio
Personnel ou salle Une ressource qui assure un rendez-vous à la fois. Studio adviser ou Workshop room.
Service Objet de la réservation, durée, marges et ressources affectées. Portfolio consultation, 45 minutes, marge de 15 minutes après.
Horaires et exceptions Disponibilités récurrentes et modifications datées. Semaine 09:00–17:00 ; fermeture le 4 novembre.
Bloc Appointment Form Point d'entrée du visiteur, titre, introduction et bouton. Book your consultation avec le bouton Request appointment.

Services, ressources, horaires et règles appartiennent au site, pas à chaque bloc de formulaire. Deux pages de réservation du même site utilisent les mêmes données opérationnelles. Modifier le titre du formulaire ne change pas la durée et n'ouvre pas un autre calendrier.

Appointments est un plugin de planification. Cette version n'encaisse pas de paiement de réservation, ne crée pas de lien de réunion et ne synchronise pas le calendrier Google ou Outlook de l'opérateur. Le mail de confirmation peut contenir une pièce jointe de calendrier .ics à importer ; cela diffère d'une synchronisation continue d'un calendrier externe.

Memberships est facultatif. Les réservations ordinaires des invités ne nécessitent pas de compte. Un service restreint peut exiger un membre vérifié ou un forfait actif précis, comme expliqué plus loin. Un droit payant Memberships peut donner accès à ce forfait, mais le formulaire n'encaisse pas de frais supplémentaires pour le rendez-vous.

Pour les routes développeur et le contrat détaillé, consultez la référence Appointments. Ce guide suit le parcours actuel du panneau et du visiteur.

Avant de commencer

Apprenez sur un site de test et préparez :

  • Une installation fonctionnelle de WebBlocks CMS et un compte Super admin pour installer et configurer les plugins.
  • Une version compatible. Appointments 0.16.1 déclare CMS ^1.99.0 et PHP >=8.3 ; son catalogue indique la compatibilité Laravel 13. Vérifiez le résultat pour votre installation réelle, avec les exigences du CMS.
  • Les autorisations de gestion des rendez-vous, services et horaires du site prévu. Consultation, gestion et modification des paramètres sont distinctes. Site Admin possède par défaut les rôles de consultation/gestion du plugin ; ne supposez pas que cela inclut les paramètres.
  • Le bon fuseau horaire du site, le domaine canonique et une configuration réelle du courrier sortant CMS avant d'accueillir les visiteurs.
  • Un administrateur d'hébergement capable de planifier la commande si vous souhaitez des rappels.

Vérifiez Timezone dans Sites avant de créer des rendez-vous. Ici, nous utilisons Europe/Berlin. Les heures publiques et celles saisies par l'opérateur suivent l'horloge du site ; elles ne sont pas converties automatiquement au fuseau du navigateur. Précisez le fuseau aux visiteurs, surtout pour les consultations à distance.

Le plugin est gratuit dans le catalogue de plugins WebBlocks. Commerce et Memberships ne sont pas nécessaires pour la partie réservations d'invités.

1. Installer et activer Appointments

  1. Ouvrez System → Plugins comme Super admin.
  2. Choisissez Browse Plugin Catalog puis WebBlocks Appointments.
  3. Vérifiez la version, la compatibilité et les notes de version.
  4. Choisissez Install from Catalog lorsqu'une version compatible est proposée.
  5. Ouvrez les détails du plugin installé et choisissez Enable Plugin. Les nouveaux paquets sont initialement désactivés pour permettre leur contrôle.
Écran Plugins avec Appointments 0.16.1 activé dans WebBlocks CMS 1.105.26 et avertissements sur le courrier local

Si l'administrateur fournit un ZIP de version fiable, utilisez Plugin ZIP → Upload Plugin ZIP, vérifiez-le et activez-le. L'installation depuis le panneau ne nécessite pas de compiler les sources. Les versions actuelles préparent les modifications de base de données pendant installation, mise à jour et activation ; résolvez toute erreur avant de continuer.

La barre latérale reçoit le groupe Appointments, avec Appointments, Services, Staff & Rooms, Opening Hours et Settings. En multisite, utilisez les contrôles disponibles et vérifiez le contexte du site avant de modifier. Le formulaire public lit le site de la page où il est placé.

Plugin Health contrôle tables, services et ressources actifs, affectations, horaires, destinataire, courrier sortant et planification des rappels. Un avertissement apporte une information utile, pas une autorisation d'ignorer la configuration. Les captures utilisent un transport local sans livraison : le plugin signale correctement un besoin d'attention même si les réservations fonctionnent.

2. Ajouter le membre du personnel ou la salle

Ouvrez Appointments → Staff & Rooms → Add staff or room.

  1. Saisissez Studio adviser dans Name.
  2. Cochez Use as the default for new bookings pour cet exemple.
  3. Laissez Active coché.
  4. Choisissez Save.
Formulaire de la ressource Studio adviser avec options par défaut et active cochées

Une ressource représente une capacité d'un rendez-vous à la fois : personne, poste de consultation ou salle. Créez une ressource par calendrier réservable indépendamment. L'appeler « Équipe de six » ne crée pas six places simultanées.

Notre seconde ressource est Workshop room, utilisée par un service distinct Studio room session. Elle n'est pas réservée automatiquement avec le conseiller. Un rendez-vous possède une ressource ; en affecter plusieurs à un service ne réserve pas conjointement un employé et une salle.

Pour commencer, affectez la consultation uniquement à Studio adviser. Cette version utilise la première ressource affectée active, en privilégiant celle par défaut puis l'ordre de tri. Il n'y a ni choix du personnel par le visiteur ni recherche de la prochaine ressource libre. Si celle retenue est occupée, ne supposez pas un remplacement automatique.

3. Créer le service et affecter sa ressource

Ouvrez Appointments → Services → Add service et saisissez :

Champ Exemple Signification
Name Portfolio consultation Nom choisi par le visiteur.
Slug portfolio-consultation Laissez vide pour le générer du nom ou utilisez un identifiant stable.
Duration 45 Minutes passées avec le visiteur.
Buffer before (min) 0 Pas de préparation avant dans cet exemple.
Buffer after (min) 15 Temps réservé après la consultation.
Delivered by Studio adviser Ressource qui assure le service.
Verified members only Désactivé Les invités peuvent réserver l'exemple de base.
Required membership package No package requirement Aucun forfait requis pour l'instant.
Active Activé Service ouvert aux nouvelles réservations.
Service Portfolio consultation : durée 45, marge avant 0, après 15 et Studio adviser affecté

Choisissez Save. Vérifiez nom, durée, marges, ressource et état Active dans le catalogue. Pour proposer des heures, le service doit avoir une ressource affectée active avec des horaires adaptés.

Durée et intervalle des débuts sont différents. Un service de 45 minutes ne doit pas commencer seulement toutes les 45 minutes. Vous choisirez 15 minutes dans Settings pour permettre 09:00, 09:15, 09:30, etc., si la durée complète et les contrôles de conflit le permettent.

Une consultation 10:00–10:45 avec 15 minutes après occupe le conseiller jusqu'à 11:00. La suivante ne peut pas débuter à 10:45. Des débuts antérieurs peuvent aussi disparaître si leur rendez-vous et rangement chevauchent le temps réservé.

Le rendez-vous doit finir dans une plage d'ouverture. Une marge peut la dépasser : une consultation finissant à 17:00 peut avoir du rangement après fermeture. Si tout travail doit finir à une limite stricte, prévoyez-le dans la dernière plage réservable.

4. Définir les horaires hebdomadaires

Ouvrez Appointments → Opening Hours. Choisissez Studio adviser dans Staff or room, puis Apply.

Sous Add hours, choisissez le jour et renseignez Opens et Closes. Ajoutez 09:00–17:00 du lundi au vendredi. Enregistrez chaque règle avec Add hours.

Horaires de Studio adviser du lundi au vendredi, de 09:00 à 17:00

Ce sont des heures locales dans le fuseau du site. Ajoutez les règles séparément pour chaque ressource ; les horaires du conseiller ne créent pas ceux de Workshop room.

Pour fermer à midi, utilisez deux plages le même jour, par exemple 09:00–12:00 et 13:00–17:00, plutôt qu'une plage continue. Le service doit tenir entièrement dans une plage et ne traverse pas la pause déjeuner. Évitez les règles dupliquées qui se chevauchent et compliquent la lecture.

Les jours sans règle n'ont pas d'ouverture régulière. Activer un service ne rend pas automatiquement les soirées et week-ends réservables.

5. Ajouter jours fériés et exceptions datées

Dans Opening Hours, utilisez Add exception pour une fermeture ponctuelle ou un changement d'heures. L'exemple ferme le studio le 4 novembre 2026 :

  1. Réglez Date sur ce jour.
  2. Choisissez Whole site dans Staff or room pour cet exemple à site unique.
  3. Laissez Closed coché.
  4. Saisissez Studio planning day dans Reason.
  5. Choisissez Add exception.
Fermeture de planification pour tout le site enregistrée et formulaire du 4 novembre 2026

Pour une seule personne ou salle, choisissez sa ressource plutôt que Whole site. Pour ouvrir autrement, décochez Closed et entrez les nouveaux Opens et Closes. Une exception ouverte remplace les horaires réguliers du jour ; elle n'ajoute pas une équipe supplémentaire. Une fermeture correspondante prime sur les plages ouvertes.

En multisite, privilégiez les exceptions par ressource et testez tous les sites concernés avant d'utiliser Whole site en 0.16.1. La recherche des créneaux peut appliquer une fermeture datée générale hors du site prévu. Les exceptions par ressource limitent l'exemple à la ressource choisie.

Après enregistrement, ouvrez le formulaire à cette date. Le jour fermé ne doit proposer aucune heure. Vérifiez les réservations existantes : changer les horaires ou ajouter une fermeture n'annule pas automatiquement les rendez-vous enregistrés. Contactez les clients concernés et gérez-les séparément.

6. Définir les règles de réservation

Ouvrez Appointments → Settings. Utilisez :

Paramètre Valeur Résultat
Slot interval (min) 15 Débuts proposés espacés de 15 minutes.
Minimum notice (min) 120 Réservation publique au moins deux heures à l'avance.
Booking horizon (days) 60 Calendrier public ouvert jusqu'à 60 jours.
Confirm bookings automatically Désactivé Les demandes commencent Pending pour contrôle.
Notification email bookings@example.test Destinataire fictif ; utilisez votre adresse réelle hors test.
Reminder (hours before) 24 Le rappel devient dû dans les 24 heures précédant le rendez-vous.
Let visitors cancel from their confirmation email Activé Permet de confirmer l'annulation via un lien privé dans le mail.
Paramètres : intervalle 15 minutes, préavis 120 minutes, horizon 60 jours, confirmation manuelle, rappels 24 heures et annulation

Choisissez Save. Les règles sont propres au site. Les modifications affectent les disponibilités et demandes publiques suivantes ; elles ne déplacent pas les rendez-vous et ne réécrivent pas les données client d'origine.

Pending n'est pas un créneau vide. Un rendez-vous en attente occupe déjà ressource et temps comme un rendez-vous confirmé. Choisissez la confirmation manuelle si un opérateur examinera rapidement les demandes. L'activer automatiquement change l'état initial des nouvelles réservations, sans confirmer rétroactivement la liste en attente.

Sans destinataire défini dans le plugin, Notification email utilise le contact du site puis l'expéditeur configuré. Une adresse ne configure pas la livraison : le CMS a besoin d'un transport réel. Réglez Reminder sur 0 si vous ne souhaitez pas de rappels.

7. Ajouter Appointment Form sur une page

Créez une page brouillon comme Book a studio visit sur le même site, ou préparez une mise à jour en staging d'une page existante. Décrivez brièvement le service, son fuseau et la suite d'une demande.

Dans l'emplacement Main :

  1. Choisissez Add Block, puis Appointment Form.
  2. Ouvrez Block Fields.
  3. Réglez Heading sur Book your consultation.
  4. Réglez Intro text sur Choose a service and a date. Times are shown in the studio clock (Europe/Berlin).
  5. Réglez Submit button label sur Request appointment pour la confirmation manuelle.
  6. Choisissez Save Block, puis Preview de la page enregistrée.
Champs Appointment Form pour titre, introduction et bouton de demande

Ces champs contrôlent les textes de cette instance. Ils ne contiennent ni catalogue, ni affectations, ni horaires. Aucun bloc Trusted HTML, widget externe collé ou compte fournisseur séparé n'est nécessaire.

Vous pouvez traduire les textes pour les autres langues activées dans l'éditeur de blocs. Cette version ne propose qu'un champ Name pour le service : vérifiez ce que voit le visiteur sans supposer que traduire la page traduit aussi les services.

L'aperçu instantané de l'éditeur ne prend pas en charge les formulaires de plugins. Enregistrez et utilisez l'aperçu de la page sauvegardée. Soumettre une réservation depuis cet aperçu crée un vrai rendez-vous dans l'installation. Apprenez sur un site de test avec des données fictives, puis publiez quand parcours et courrier sont prêts.

8. Soumettre une demande comme visiteur

Les captures utilisent une page locale avec le formulaire sauvegardé. Sur votre site de test, ouvrez l'aperçu ou la page vérifiée et choisissez :

  • Service : Portfolio consultation.
  • Date : un jour ouvert futur dans l'horizon ; 3 novembre 2026 dans l'exemple.
  • Time : 10:00, selon l'horloge Europe/Berlin du studio.
Formulaire visiteur avec Portfolio consultation et heures disponibles le 3 novembre 2026

Avec JavaScript, changer service ou date actualise les heures. Le bouton Show available times, rendu par le serveur, sert sans JavaScript. Le serveur contrôle à nouveau la disponibilité à l'envoi : une heure affichée n'est pas réservée pendant la saisie.

Entrez nom et email, par exemple Example visitor et visitor@example.test. Phone et Anything we should know? sont facultatifs. Laissez Phone vide et ajoutez une brève note fictive. Utilisez une adresse contrôlée pour tester la livraison réelle.

Heure 10:00 choisie et données fictives avant envoi de Request appointment

Choisissez Request appointment une fois. Si une autre réservation prend l'heure avant vous, choisissez-en une nouvelle. Un test humain normal doit laisser le temps de remplir le formulaire ; ne vérifiez pas la livraison avec des envois automatisés instantanés répétés.

Bannière de résultat et heures disponibles actualisées après la demande

Le résultat indique Your appointment is booked. Dans ce parcours à confirmation manuelle, l'état enregistré reste Pending. La bannière parle aussi de l'envoi des détails de manière générique ; cela ne prouve pas que l'email est arrivé. Le transport local ne livre pas de messages. Vérifiez ensuite le rendez-vous enregistré et les résultats séparés des notifications.

Rouvrez le même service et la même date. Le rendez-vous Pending de 10:00 et sa marge doivent retirer les débuts incompatibles. Une date fermée ne doit proposer aucune heure. Choisissez une date future adaptée à votre test au lieu de réutiliser indéfiniment celles des captures.

9. Retrouver et confirmer la demande

Ouvrez Appointments → Appointments. Cette version liste par défaut les réservations de plusieurs dates, les plus tardives d'abord. Elle n'est pas limitée à aujourd'hui. Filtrez avec Date, Status ou Search, puis Apply ; Reset efface les filtres.

Trouvez Example visitor le 3 novembre 2026, 10:00–10:45, avec Studio adviser. Le fuseau figure près du titre ; la liste présente service, client, état et résultats séparés des notifications.

Liste filtrée par date avec demande Pending et deux notifications not configured

Dans Actions, choisissez le crayon Edit status. Sélectionnez Confirmed dans la fenêtre, puis Save status.

Fenêtre Edit appointment status avec Confirmed sélectionné pour le visiteur

Les principaux états sont :

État Signification opérationnelle
Pending Demande à examiner ; le créneau est déjà occupé.
Confirmed Rendez-vous accepté ; le créneau reste occupé.
Completed Rendez-vous enregistré comme terminé ; son créneau historique reste occupé.
No show Absence du visiteur ; ne sert pas à déplacer une réservation future.
Cancelled Rendez-vous annulé qui libère le créneau.

Changer l'état ne renvoie pas les messages de réservation initiaux. Si une acceptation ou modification nécessite un avis personnel, contactez le client par votre canal habituel et vérifiez le résultat. Sélectionner Confirmed n'envoie pas automatiquement une nouvelle confirmation.

La liste permet de changer l'état, pas de reprogrammer complètement date et heure. Convenez du nouvel horaire, annulez volontairement l'original et créez une nouvelle réservation. Vérifiez séparément les notifications. Ne supprimez pas l'original pour ranger la liste : la suppression est définitive et n'envoie pas d'avis d'annulation.

10. Saisir une réservation téléphonique

Ouvrez Appointments → Appointments → Add appointment. Choisissez :

  1. Service : Portfolio consultation.
  2. Staff or room : Studio adviser.
  3. Date : le même jour futur de test.
  4. Time : 15:00, dans le fuseau du site.
  5. Customer : Example phone booking.
  6. Email : phone@example.test.
  7. Une note facultative sur la demande téléphonique.
Formulaire opérateur Add appointment pour une réservation téléphonique distincte à 15:00

Choisissez Save. La réservation indique entered manually. Avec confirmation automatique désactivée, elle commence aussi Pending ; confirmez-la par Edit status si nécessaire.

Liste avec réservation manuelle de 15:00 et rendez-vous visiteur confirmé de 10:00

La saisie manuelle vérifie chevauchements et marges. Elle ignore volontairement le contrôle public des horaires, du préavis et de l'horizon pour autoriser une exception opérateur. Vérifiez vous-même ces contraintes, choisissez la bonne ressource et ne considérez pas cette saisie comme preuve de disponibilité publique.

11. Contrôler les emails et planifier les rappels

Après l'enregistrement, Appointments tente deux messages indépendants : avis à l'établissement et confirmation au visiteur. La confirmation peut contenir une pièce jointe .ics avec le rendez-vous. Le visiteur peut l'importer sans connecter un compte calendrier externe au CMS.

Contrôlez Business notified et Visitor notified sur la ligne. L'échec de l'un ne signifie pas nécessairement celui de l'autre. Les états incluent sent, failed, skipped et not configured. Sent signifie que le transport a accepté le message, pas qu'il a été lu ni même reçu en boîte de réception.

L'exemple indique not configured car le courrier est enregistré localement. Le rendez-vous reste sauvegardé si l'email échoue. Avant les vrais visiteurs, faites configurer courrier et expéditeur CMS, vérifiez le domaine canonique et testez les deux destinataires ainsi que la pièce jointe avec des boîtes contrôlées.

Pour les rappels, demandez à l'administrateur d'hébergement de planifier :

php artisan webblocks-appointments:dispatch-reminders

Exécutez-la toutes les quelques minutes, par exemple via le planificateur Laravel de l'application hôte exécuté chaque minute, ou une tâche cron équivalente. Le fonctionnement du planificateur hôte ne programme pas à lui seul cette commande. Ajoutez explicitement la tâche. L'écran de santé ne vérifie pas l'exécution du cron des rappels chez l'hébergeur : contrôlez-la aussi à ce niveau.

Un administrateur peut consulter les rappels dus sans envoyer :

php artisan webblocks-appointments:dispatch-reminders --site=1 --dry-run

Remplacez 1 par l'ID réel du site. Avec 24 heures, une réservation plus éloignée n'est pas encore due ; une simulation vide peut être correcte. Sa sortie peut lister les emails des visiteurs : conservez-la dans le contexte privé adapté.

Chaque rendez-vous futur éligible est considéré une fois. Le résultat est enregistré même si la livraison échoue ou si le courrier n'est pas configuré ; les passages répétés ne sont pas un service de nouvelle tentative automatique. Les rendez-vous annulés sont exclus ; les Pending peuvent être éligibles puisqu'ils occupent encore le créneau. Vérifiez l'adéquation avec l'approbation manuelle et testez avant usage opérationnel.

12. Tester l'annulation du visiteur

Gardez Let visitors cancel from their confirmation email activé. Pour un vrai test de courrier, le visiteur suit le lien privé de la confirmation ou du rappel. Les captures utilisent le lien de la réservation locale sans envoyer de mail.

Confirmation d'annulation avec service, heure et bouton Cancel this appointment

Ouvrir le lien affiche seulement une confirmation. Le rendez-vous est annulé lorsque le visiteur choisit Cancel this appointment. Cela évite qu'un scanner d'emails annule simplement en visitant le lien.

Résultat indiquant que le rendez-vous est déjà annulé

Revenez à la liste opérateur. Le dossier doit indiquer Cancelled. L'heure de 10:00 doit redevenir disponible si service, horaires, préavis et horizon le permettent encore. La réservation téléphonique distincte de 15:00 reste inchangée.

Liste après annulation avec le dossier annulé et l'autre rendez-vous manuel conservés

Le lien donne un accès privé à cette réservation. Ne le placez pas sur une page publique, dans une note analytique ou une capture partagée. Cette page ne permet pas d'annuler l'annulation ; réserver à nouveau est une action distincte. Un rendez-vous commencé ne peut plus être annulé ici. Si l'annulation en ligne est désactivée, le visiteur doit contacter l'établissement.

Après sauvegarde de l'annulation du visiteur, une notification à l'établissement est tentée. Un échec ne rétablit pas la réservation. Les changements d'état opérateur sont un autre parcours et n'envoient pas automatiquement cet avis.

13. Restreindre facultativement un service avec Memberships

Terminez d'abord le parcours invité. Pour réserver des services aux membres, installez et activez une version compatible de Memberships dans la même installation. Appointments 0.16.1 accepte Memberships ^0.1 ou ^0.2. Suivez le guide Memberships pour préparer comptes vérifiés, forfait actif et attribution courante ou droit payant.

Dans l'éditeur de service :

  1. Créez ou ouvrez Member portfolio review.
  2. Affectez la ressource active et la durée normalement.
  3. Cochez Verified members only pour exiger un compte vérifié.
  4. Choisissez Workshop circle dans Required membership package si ce forfait est nécessaire.
  5. Gardez le service actif et choisissez Save.
Service Member portfolio review réservé aux membres vérifiés avec forfait Workshop circle

Un forfait requis exige aussi un membre vérifié ; sélectionner un forfait ne permet pas l'accès anonyme. La recherche publique de créneaux et la soumission de réservation contrôlent toutes deux l'éligibilité pour le site du service. Les membres éligibles connectés peuvent avoir leur nom et email préremplis ; la réservation conserve l'association au membre avec l'instantané des données client.

Testez déconnecté, avec un compte vérifié sans forfait et avec un titulaire actuel. Les services restreints sont filtrés ; s'il ne reste aucun service éligible, le formulaire demande une adhésion active. Ici les invités voient encore consultation ordinaire et salle, tandis que le membre vérifié Workshop circle peut découvrir Member portfolio review.

Si Memberships est désactivé ou indisponible, les services ordinaires peuvent rester accessibles mais les restreints restent fermés. Modifier une attribution ne réécrit pas les instantanés client passés. La saisie manuelle reste disponible et doit être considérée comme décision opérateur, pas comme test d'éligibilité du visiteur.

14. Maintenir services et ressources sans perdre l'historique

Pour une pause temporaire, modifiez le service ou la ressource et décochez Active. Ne supposez pas que cela annule ses rendez-vous existants ; vérifiez-les et gérez-les séparément.

Supprimer un service ou une ressource ayant des rendez-vous le désactive au lieu de le retirer. Cela préserve la relation historique. Un dossier sans historique peut être supprimé : vérifiez avant de confirmer. Supprimer un rendez-vous est définitif, retire ses données enregistrées et n'envoie pas d'avis d'annulation.

Modifier la durée ne reprogramme pas les débuts et fins déjà sauvegardés. Les contrôles des marges utilisent les valeurs actuelles du service ; les changer peut donc modifier les heures proposées autour des rendez-vous existants. Vérifiez ensuite le calendrier.

Gardez le fuseau stable après l'ouverture. Les instants sont en UTC, les horaires sont des règles locales. Un changement de fuseau peut modifier affichage et disponibilités futures. Aux changements d'heure, les heures locales inexistantes ne sont pas proposées et une heure répétée utilise sa première occurrence. Testez ces dates si vous travaillez pendant ces heures.

Dépannage

Symptôme Vérifier d'abord
Appointments est absent Plugin activé, base préparée, autorisations et site autorisé.
Le formulaire indique la réservation indisponible Services actifs, ressource affectée active, bon site et configuration complète.
Aucun horaire pour un service actif Ressource, jours, exceptions, durée dans une plage, réservations, marges, préavis et horizon.
Ressource apparemment libre mais sans horaires Le formulaire peut utiliser une autre ressource affectée par défaut ; il ne regroupe pas les calendriers.
Un trou à midi n'est pas réservable Le service doit tenir dans une plage et ne pas traverser la pause.
Les heures semblent décalées Fuseau du site, changement d'heure et différence avec l'horloge du visiteur.
Une fermeture touche un autre site En 0.16.1 utilisez les exceptions par ressource et vérifiez Whole site dans l'installation.
Succès affiché mais réservation introuvable Site et filtres, puis validation/antispam. Confirmez un dossier enregistré sans dépendre de la bannière.
Une demande est Pending Confirmation automatique désactivée ; contrôlez et confirmez explicitement.
État changé mais aucun nouvel email Les changements d'état ne renvoient pas les messages.
Réservation présente mais email absent Résultats distincts établissement/visiteur, transport CMS, destinataire, domaine canonique et spam.
Les rappels ne partent pas Délai positif, fenêtre future due, cron explicite, livraison et résultat de rappel déjà enregistré.
Le visiteur ne peut pas annuler Bon lien privé, annulation activée, réservation non close et début futur.
Un service membre est absent Compte actif vérifié, bon site, Memberships compatible activé et droit courant au forfait.
Un service supprimé reste dans l'historique Normal avec des rendez-vous ; il est désactivé pour conserver les dossiers passés.

Contrôle final avant d'ouvrir les réservations

Vérifiez fuseau, affectations, capacité, horaires hebdomadaires et exceptions. Soumettez une demande normale, retrouvez son dossier, contrôlez l'état et que l'heure occupée n'est plus offerte. Testez saisie manuelle et annulation, y compris le créneau libéré.

Testez ensuite la livraison réelle aux deux destinataires, la pièce jointe et la tâche de rappel avec des comptes contrôlés. Avec Memberships, vérifiez les états membres concernés. Contrôlez la page sur téléphone, publiez lorsque le parcours est prêt et répétez les tests directs sur le site HTTPS public.

Continuez avec la référence Appointments, le guide Memberships, Publier une page, Menus de navigation ou Rôles et autorisations.