400 places réparties sur six créneaux, sans dépassement toléré : voilà le cahier des charges d’un organisateur de salon professionnel qui ne voulait pas investir dans une extension d’événementiel complète pour un événement ponctuel de deux jours. Ce tutoriel montre comment gérer des créneaux à quota limité directement avec Elementor Pro Forms et quelques champs personnalisés, sans passer par un plugin de billetterie dédié.
Il ne traite pas de la billetterie grand public récurrente, qui suppose une gestion de plusieurs dates, de tarifs multiples et souvent de paiement en ligne à grande échelle : le cas ici reste celui d’un événement B2B ponctuel, à créneaux fixes et places gratuites ou facturées hors ligne.
Étape 1 : structurer les créneaux
Chaque créneau est déclaré comme un type de contenu personnalisé creneau_salon, avec deux champs ACF : places_totales (nombre entier fixé à la création) et places_restantes (nombre entier décrémenté à chaque inscription validée). Séparer ces deux champs permet de conserver la capacité initiale comme référence, tout en suivant l’évolution des places disponibles.
Étape 2 : afficher les créneaux disponibles
Un Loop Grid liste les six créneaux, avec dans chaque Loop Item le nombre de places restantes affiché via un Dynamic Tag lié au champ places_restantes. Une condition d’affichage masque le bouton d’inscription et affiche « Complet » dès que ce champ atteint zéro, évitant qu’un visiteur ne tente de s’inscrire à un créneau déjà saturé.

Étape 3 : construire le formulaire d’inscription
Le formulaire d’inscription contient un champ caché préréglé avec l’identifiant du créneau choisi (transmis depuis le Loop Grid via un paramètre d’URL), et les coordonnées classiques du participant. La vérification et la décrémentation du quota se font côté serveur, via l’action elementor_pro/forms/validation, pour empêcher toute inscription qui dépasserait la capacité même en cas de double soumission rapprochée :
<?php
add_action( 'elementor_pro/forms/validation', function( $record, $ajax_handler ) {
$champs = $record->get( 'fields' );
$creneau_id = (int) $champs['creneau_id']['value'];
$restantes = (int) get_field( 'places_restantes', $creneau_id );
if ( $restantes <= 0 ) {
$ajax_handler->add_error( 'creneau_id', 'Ce créneau est complet.' );
}
}, 10, 2 );
add_action( 'elementor_pro/forms/process', function( $record, $handler ) {
$champs = $record->get( 'fields' );
$creneau_id = (int) $champs['creneau_id']['value'];
$restantes = (int) get_field( 'places_restantes', $creneau_id );
update_field( 'places_restantes', max( 0, $restantes - 1 ), $creneau_id );
}, 10, 2 );
Étape 4 : gérer le risque de double inscription simultanée
Sur un créneau très demandé, deux visiteurs peuvent soumettre le formulaire à quelques secondes d’intervalle, alors qu’il ne reste qu’une place. Le hook de validation s’exécutant avant celui de traitement, un contrôle strict au moment de la décrémentation, avec une vérification immédiate avant écriture, limite le risque de dépassement, sans toutefois éliminer complètement une collision à la microseconde près sur un trafic extrêmement concentré, un cas resté marginal pour ce volume d’inscriptions.
Étape 5 : envoyer la confirmation avec le créneau retenu
La notification de confirmation envoyée au participant reprend dynamiquement le nom du créneau choisi et son horaire, en s’appuyant sur les balises dynamiques natives du champ formulaire, sans nécessiter de champ supplémentaire dédié à cet affichage.
Le conseil qu’on retient de ce projet : pour un événement ponctuel à quotas fixes, la robustesse vient moins de la sophistication de l’outil que de la rigueur du contrôle serveur au moment de l’inscription. Un simple champ décrémenté, bien protégé, suffit largement.
En résumé
Une billetterie de salon B2B avec quotas par créneau se construit efficacement avec un type de contenu personnalisé, un champ de places restantes décrémenté côté serveur et un formulaire Elementor Pro Forms correctement validé. Cette approche évite le coût et la complexité d’une extension d’événementiel dédiée pour un événement ponctuel à structure simple.