WordPress

Comment ajouter un système de réservation WordPress

13 min de lecture

Ajouter un système de réservation WordPress

Que vous gériez un salon de coiffure à Dakar, un cabinet médical, un espace de coworking ou un service de transport, un système de réservation en ligne élimine les appels téléphoniques et les messages WhatsApp pour la prise de rendez-vous. Vos clients réservent 24h/24, et vous recevez une notification instantanée. Voici comment mettre en place un système de réservation adapté à votre activité.

1. Choisir le bon plugin de réservation

Plugin Prix Idéal pour Points forts
Amelia Gratuit / Pro 76$ Salons, cabinets, consultants Interface moderne, SMS, multi-employés, paiements
Booking Calendar Gratuit / Pro 89$ Hébergements, locations Calendrier visuel, saisons, tarifs variables
Simply Schedule Gratuit / Pro 99$/an Rendez-vous simples Léger, type Calendly, sync Google Calendar
BookIt Gratuit / Pro 79$ Services personnels Simple, interface épurée, multi-services
WooCommerce Bookings 249$/an E-commerce + réservations S’intègre à WooCommerce, paiements inclus

Recommandation : Amelia pour les services avec rendez-vous (salons, cabinets, consultants) ou Simply Schedule Appointments pour les rendez-vous simples type consulting.

2. Configuration avec Amelia

Installation et paramètres initiaux

  1. Installez Amelia depuis Extensions → Ajouter
  2. Allez dans Amelia → Réglages :
    • Horaires de travail : lundi-vendredi 8h-18h, samedi 9h-14h
    • Durée par défaut : 30 ou 60 minutes selon votre activité
    • Fuseau horaire : Africa/Dakar (GMT+0)
    • Devise : XOF (Franc CFA)
    • Intervalle entre RDV : 15 minutes (temps de nettoyage/préparation)

Créer vos services

Dans Amelia → Services, ajoutez chaque prestation :

Service Durée Prix Catégorie
Consultation initiale 60 min 15 000 FCFA Consultations
Suivi 30 min 10 000 FCFA Consultations
Coupe homme 30 min 3 000 FCFA Coiffure
Tresses 120 min 15 000 FCFA Coiffure
Session coaching 90 min 25 000 FCFA Coaching

Ajouter des employés (optionnel)

Si plusieurs personnes prennent des rendez-vous :

  1. Dans Amelia → Employés, ajoutez chaque personne
  2. Assignez les services que chaque employé peut effectuer
  3. Définissez les horaires individuels (jours de congé, horaires spécifiques)

Intégrer le formulaire de réservation

Utilisez le shortcode Amelia dans n’importe quelle page :

<!-- Formulaire de réservation complet -->
[ameliabooking]

<!-- Réservation pour un service spécifique -->
[ameliabooking service=1]

<!-- Réservation pour une catégorie -->
[ameliabooking category=2]

<!-- Catalogue de services (les clients choisissent) -->
[ameliacatalog]

<!-- Recherche de disponibilité -->
[ameliasearch]

3. Solution sans plugin : formulaire de réservation personnalisé

Pour un système simple sans plugin lourd, voici un formulaire de réservation avec sélection de date/heure :

<form id="reservation-form" class="reservation-form">
  <h3>Réserver un rendez-vous</h3>
  
  <div class="form-group">
    <label>Votre nom *</label>
    <input type="text" name="nom" required placeholder="Prénom Nom">
  </div>
  
  <div class="form-group">
    <label>Téléphone *</label>
    <input type="tel" name="telephone" required placeholder="+221 7X XXX XX XX">
  </div>
  
  <div class="form-group">
    <label>Service souhaité *</label>
    <select name="service" required>
      <option value="">Choisir un service</option>
      <option value="consultation" data-price="15000" data-duration="60">
        Consultation (60 min) — 15 000 FCFA
      </option>
      <option value="suivi" data-price="10000" data-duration="30">
        Suivi (30 min) — 10 000 FCFA
      </option>
      <option value="coaching" data-price="25000" data-duration="90">
        Coaching (90 min) — 25 000 FCFA
      </option>
    </select>
  </div>
  
  <div class="form-row">
    <div class="form-group">
      <label>Date *</label>
      <input type="date" name="date" required min="">
    </div>
    <div class="form-group">
      <label>Heure *</label>
      <select name="heure" required>
        <option value="">Choisir</option>
        <option value="08:00">08:00</option>
        <option value="08:30">08:30</option>
        <option value="09:00">09:00</option>
        <option value="09:30">09:30</option>
        <option value="10:00">10:00</option>
        <option value="10:30">10:30</option>
        <option value="11:00">11:00</option>
        <option value="11:30">11:30</option>
        <option value="14:00">14:00</option>
        <option value="14:30">14:30</option>
        <option value="15:00">15:00</option>
        <option value="15:30">15:30</option>
        <option value="16:00">16:00</option>
        <option value="16:30">16:30</option>
        <option value="17:00">17:00</option>
      </select>
    </div>
  </div>
  
  <div class="form-group">
    <label>Message (optionnel)</label>
    <textarea name="message" rows="3" placeholder="Précisions sur votre demande..."></textarea>
  </div>
  
  <button type="submit" class="btn-reservation">
    Confirmer la réservation
  </button>
  
  <p class="reservation-note">
    Vous recevrez une confirmation par WhatsApp dans les 30 minutes.
  </p>
</form>

<script>
// Définir la date minimum à aujourd'hui
document.querySelector('input[name="date"]').min = 
  new Date().toISOString().split('T')[0];

// Désactiver les dimanches
document.querySelector('input[name="date"]').addEventListener('input', function() {
  var day = new Date(this.value).getDay();
  if (day === 0) { // Dimanche
    alert('Nous sommes fermés le dimanche. Veuillez choisir un autre jour.');
    this.value = '';
  }
});
</script>
/* CSS du formulaire de réservation */
.reservation-form {
  max-width: 500px;
  margin: 0 auto;
  padding: 30px;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}

.reservation-form h3 {
  text-align: center;
  margin: 0 0 25px;
  font-size: 24px;
}

.form-group {
  margin-bottom: 18px;
}

.form-group label {
  display: block;
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 6px;
  color: #333;
}

.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  padding: 12px 14px;
  border: 2px solid #e0e0e0;
  border-radius: 8px;
  font-size: 15px;
  transition: border-color 0.3s;
  box-sizing: border-box;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: #e94560;
  outline: none;
}

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 15px;
}

.btn-reservation {
  width: 100%;
  padding: 15px;
  background: #e94560;
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: 16px;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.3s;
}

.btn-reservation:hover { background: #c73550; }

.reservation-note {
  text-align: center;
  font-size: 13px;
  color: #888;
  margin-top: 12px;
}

Traitement PHP côté serveur

// Traiter la réservation via AJAX
add_action('wp_ajax_nouvelle_reservation', 'traiter_reservation');
add_action('wp_ajax_nopriv_nouvelle_reservation', 'traiter_reservation');

function traiter_reservation() {
    check_ajax_referer('reservation_nonce', 'nonce');
    
    $nom = sanitize_text_field($_POST['nom']);
    $tel = sanitize_text_field($_POST['telephone']);
    $service = sanitize_text_field($_POST['service']);
    $date = sanitize_text_field($_POST['date']);
    $heure = sanitize_text_field($_POST['heure']);
    $message = sanitize_textarea_field($_POST['message']);
    
    // Créer un post de type réservation
    $reservation_id = wp_insert_post([
        'post_type' => 'reservation',
        'post_title' => $nom . ' — ' . $service . ' — ' . $date,
        'post_status' => 'pending',
    ]);
    
    if ($reservation_id) {
        update_post_meta($reservation_id, '_tel', $tel);
        update_post_meta($reservation_id, '_service', $service);
        update_post_meta($reservation_id, '_date', $date);
        update_post_meta($reservation_id, '_heure', $heure);
        update_post_meta($reservation_id, '_message', $message);
        
        // Envoyer email de notification à l'admin
        $admin_email = get_option('admin_email');
        wp_mail($admin_email, 
            'Nouvelle réservation : ' . $service,
            "Nom : $nom
Tél : $tel
Service : $service
Date : $date à $heure
Message : $message"
        );
        
        wp_send_json_success([
            'message' => 'Réservation confirmée ! Nous vous contacterons sur WhatsApp.',
        ]);
    }
    
    wp_send_json_error(['message' => 'Erreur lors de la réservation.']);
}

4. Synchronisation Google Calendar

Amelia et Simply Schedule supportent la synchronisation bidirectionnelle avec Google Calendar :

  1. Créez un projet dans Google Cloud Console
  2. Activez l’API Google Calendar
  3. Générez des identifiants OAuth 2.0
  4. Dans le plugin, entrez le Client ID et Client Secret
  5. Autorisez l’accès à votre agenda

Avantage : chaque réservation apparaît automatiquement dans votre Google Agenda, et vos indisponibilités sont synchronisées en temps réel.

5. Notifications automatiques

Email de confirmation au client

Amelia envoie automatiquement des emails. Personnalisez le modèle dans Amelia → Réglages → Notifications :

Objet : Confirmation de votre rendez-vous — {service_name}

Bonjour {customer_firstName},

Votre rendez-vous est confirmé :

📋 Service : {service_name}
📅 Date : {appointment_date}
🕐 Heure : {appointment_startTime}
📍 Lieu : [Votre adresse à Dakar]
💰 Montant : {service_price} FCFA

Pour modifier ou annuler, contactez-nous sur WhatsApp : 
+221 7X XXX XX XX

À bientôt !
{company_name}

Rappel WhatsApp automatique

// Envoyer un rappel WhatsApp 24h avant le RDV
// (nécessite l'API WhatsApp Business)
add_action('amelia_booking_reminder', function($booking) {
    $phone = $booking['customer']['phone'];
    $service = $booking['service']['name'];
    $date = date('d/m/Y', strtotime($booking['appointment']['date']));
    $heure = $booking['appointment']['startTime'];
    
    $message = "Rappel : votre RDV *{$service}* est demain {$date} à {$heure}. "
      . "Confirmez en répondant OK ou contactez-nous pour modifier.";
    
    // Appel API WhatsApp Business
    wp_remote_post('https://graph.facebook.com/v18.0/PHONE_ID/messages', [
        'headers' => [
            'Authorization' => 'Bearer VOTRE_TOKEN',
            'Content-Type' => 'application/json',
        ],
        'body' => json_encode([
            'messaging_product' => 'whatsapp',
            'to' => preg_replace('/[^0-9]/', '', $phone),
            'type' => 'text',
            'text' => ['body' => $message],
        ]),
    ]);
});

6. Paiement en ligne à la réservation

Amelia supporte Stripe et PayPal nativement. Pour le mobile money au Sénégal, ajoutez un bouton de paiement après la confirmation :

<!-- Après confirmation de la réservation -->
<div class="payment-options">
  <h3>Payer maintenant (optionnel)</h3>
  <p>Payez à l'avance pour garantir votre créneau.</p>
  
  <a href="https://wa.me/221XXXXXXXXX?text=Paiement RDV [service] le [date] - [montant] FCFA" 
    class="btn-pay btn-pay--wave">
    Payer par Wave
  </a>
  
  <p class="payment-note">
    Envoyez le montant au +221 XX XXX XX XX via Wave, 
    puis envoyez la capture d'écran sur WhatsApp.
  </p>
</div>

7. Optimisations pour le Sénégal

  • WhatsApp comme canal principal : après chaque réservation, envoyez la confirmation sur WhatsApp plutôt que par email — les gens consultent WhatsApp 50x plus que leur boîte mail
  • Créneaux adaptés : tenez compte des heures de prière (13h-14h vendredi) et proposez des créneaux en soirée (18h-20h) pour les professionnels
  • Formulaire léger : minimisez le nombre de champs. Nom + téléphone + service + date suffisent. Le reste se discute sur WhatsApp
  • Rappels SMS : utilisez l’API Orange SMS pour envoyer des rappels 24h avant — taux d’ouverture de 98% contre 20% pour les emails
  • Paiement flexible : proposez le paiement sur place ou par mobile money — ne forcez pas le paiement en ligne qui peut freiner les réservations

Un système de réservation en ligne réduit les no-shows de 30-40% grâce aux rappels automatiques, et libère votre temps en éliminant les allers-retours par téléphone et WhatsApp pour convenir d’un créneau.

Pour ne pas tout faire vous-même

Notre équipe conçoit votre site, met en place domaine et hébergement, vous forme à la gestion, et reste joignable 6 mois pour les questions techniques.

À partir de 350 000 FCFA

📧 E-mail
💬 WhatsApp

Quel systeme de reservation pour quel usage ?

Le choix du systeme de reservation WordPress depend du type d activite. Trois familles d outils existent en 2026 et ne se substituent pas. Amelia (75 USD/an) excelle pour les services personnels (coach, therapeute, salon de beaute, formateur) qui reservent des creneaux 1-a-1. WooCommerce Bookings (249 USD/an) integre les reservations a un magasin existant et gere les paiements via WooCommerce. Bookly Pro (89 USD lifetime) offre un excellent compromis prix/fonctionnalites pour le multi-services et le multi-employes.

Pour la restauration, les solutions specialisees (OpenTable, LaFourchette) sont generalement plus performantes qu un plugin WordPress generique. Pour l hotellerie, idem avec Booking.com, Airbnb, et un PMS dedie. WordPress reserve pour : services professionnels, ateliers, cours, salons, soins, evenements ponctuels.

Les fonctionnalites qui font la difference

Au-dela du basique (calendrier, formulaire, confirmation email), six fonctionnalites distinguent un systeme professionnel.

Gestion multi-employes / multi-ressources. Si plusieurs personnes peuvent realiser le meme service (3 esthéticiennes pour des soins), le systeme attribue dynamiquement selon les disponibilites. Critique des qu il y a plus d une personne dans l equipe.

Synchronisation Google Calendar / Outlook. Les reservations s ajoutent automatiquement aux calendriers personnels. Les indisponibilites manuelles dans le calendrier bloquent les creneaux dans le systeme. Evite les double-bookings.

Paiement en ligne integre. Stripe, PayPal, Wave, Orange Money via le plugin de passerelle. Permet de demander un acompte (typiquement 20-50 pour cent) qui reduit drastiquement les no-shows.

Rappels automatiques. SMS J-1 et email J-2 reducent les no-shows de 30-60 pour cent. Tarif typique d envoi SMS 0,05-0,10 EUR par SMS, qui paye largement le client perdu evite.

Politique d annulation et de remboursement. Possibilite pour le client d annuler en self-service jusqu a X heures avant, avec ou sans remboursement selon la regle. Reduit les appels au support.

Reporting. Tableau de bord avec CA reserve par mois, taux de remplissage, top services, taux de no-show. Permet le pilotage et l optimisation des horaires.

Configuration Amelia pas a pas

Une configuration de base prend 30 minutes pour un cabinet de 1-3 employes. (1) Installer Amelia, activer la licence. (2) Definir les services (nom, duree, prix, capacite max). (3) Definir les employes avec leurs services et horaires hebdomadaires. (4) Configurer le formulaire de reservation (champs requis, conditions a accepter). (5) Connecter Stripe ou un mode de paiement. (6) Configurer les emails de confirmation, rappel, et annulation. (7) Inserer le shortcode [ameliabooking] dans une page publique. Site operationnel en moins d une heure pour 80 pour cent des cas.

Eviter les pieges classiques

Sur-personnalisation initiale. Le piege est de vouloir parametrer tous les details avant de mettre en ligne. La pratique gagnante : configuration minimale, mise en ligne, ajustements selon les retours reels en 2-4 semaines.

Pas d acompte. Pour les services a valeur (> 50 EUR), demander 20-30 pour cent d acompte non remboursable a la reservation. Reduit les no-shows de 40-70 pour cent et compense les pertes residuelles.

Trop de creneaux disponibles. Afficher chaque demi-heure de 8h a 22h cree un faux signal de disponibilite. Limiter les creneaux a la realite operationnelle (8 creneaux/jour, par exemple) maintient une perception de qualite et de selectivite.

Pas de regle minimum entre reservations. Sans tampon de 5-15 minutes entre deux rendez-vous, on enchaîne sans pause — fatigue, retards en cascade, qualite degradee. Toujours configurer un buffer.

FAQ

Comment gerer les reservations en Wave / Orange Money ?
Avec WooCommerce Bookings, integrer un plugin de paiement africain (Hubtel, PayDunya, FedaPay) qui ajoute Wave, Orange Money, Free Money comme moyens de paiement. Avec Amelia, l integration est moins native — passer par WooCommerce reste plus simple pour le marche africain.

Combien d employes Amelia ou Bookly peuvent gerer ?
Variable selon le plan. Amelia Lite gere 1 employe (gratuit), Pro illimite (75 USD/an). Bookly Pro illimite avec achats d add-ons. Pour 1-10 employes, ces deux outils suffisent largement. Au-dela, un SaaS dedie type Mindbody ou Booksy peut etre pertinent.

Comment integrer a un PMS hotellier ou a un POS magasin ?
Plus complexe. Ces integrations passent typiquement par Zapier ou Make qui synchronise les nouvelles reservations vers le PMS via webhook. Pour une integration profonde, un developpement custom de l ordre de 5 000-15 000 EUR.

Mes clients reservent rarement — un systeme est-il utile ?
Si moins de 5 reservations par semaine, un simple Calendly (10 EUR/mois) ou un formulaire Contact Form 7 + un Google Calendar peuvent suffire. Un plugin de reservation se justifie a partir de 10-15 reservations par semaine, ou quand le taux de no-show devient un probleme.

References

Service ITSkillsCenter

Application mobile Android et iOS

Création d'application mobile Android et iOS. À partir de 350 000 FCFA.

Démarrer mon projet
Publicité