developer.wordpress.org rappelle, dans la documentation des hooks d’Elementor Pro Forms, que l’action elementor_pro/forms/process s’exécute côté serveur avant l’envoi des notifications, ce qui en fait le point d’ancrage idéal pour un calcul métier sensible comme l’estimation d’un devis de déménagement. Une entreprise de déménagement qui souhaite proposer une simulation directement sur son site n’a pas nécessairement besoin d’un plugin de calcul externe facturé à l’utilisation : la logique conditionnelle native du formulaire, combinée à un peu de PHP, couvre déjà une bonne partie du besoin.
Cette recette ne traite pas de la réservation d’un créneau de déménagement, qui suit un parcours de planification distinct avec sa propre disponibilité d’équipes : elle se limite à la logique de champs conditionnels permettant d’estimer un devis indicatif, affiché directement dans la page après soumission du formulaire.
Le problème posé
Une estimation de devis de déménagement dépend de plusieurs variables : la surface du logement à déménager, la distance entre les deux adresses, la présence ou non d’un ascenseur, et parfois des options comme le démontage de meubles. L’enjeu est d’organiser un formulaire qui n’affiche que les champs pertinents selon les réponses précédentes, sans surcharger le visiteur avec un formulaire figé de quinze champs affichés d’emblée.
Structurer les champs avec logique conditionnelle
Le widget Formulaire d’Elementor Pro permet, pour chaque champ, de définir une règle de visibilité conditionnelle basée sur la valeur d’un champ précédent. Par exemple, un champ « étage sans ascenseur » n’apparaît que si le champ « présence d’un ascenseur » est réglé sur « non ». Cette logique se configure directement dans l’onglet Contenu du widget, sans code, via le bouton Ajouter une règle de chaque champ concerné.
<?php
// Calcul de devis exécuté avant l'envoi des notifications
add_action( 'elementor_pro/forms/process', function( $record, $handler ) {
$champs = $record->get( 'fields' );
$surface = (int) $champs['surface']['value'];
$distance_km = (int) $champs['distance_km']['value'];
$base = 25 * $surface;
if ( $distance_km > 50 ) {
$base += 150;
}
if ( 'non' === $champs['ascenseur']['value'] ) {
$base *= 1.2;
}
$record->set( 'devis_estime', round( $base, 2 ) );
}, 10, 2 );

Afficher le résultat sans recharger la page
Une fois le calcul effectué côté serveur, le résultat est renvoyé au navigateur via la réponse AJAX native d’Elementor Pro Forms, puis affiché dans un widget masqué par défaut, révélé au moment de la confirmation. Ce fonctionnement évite d’exposer la logique de calcul en JavaScript côté client, ce qui aurait permis à n’importe quel visiteur d’inspecter et de reproduire la formule de tarification, potentiellement sensible commercialement.
Ajouter un message de nuance sur l’estimation
Un message clair doit accompagner le résultat, précisant qu’il s’agit d’une estimation indicative et non d’un devis contractuel définitif, celui-ci nécessitant une visite ou un échange téléphonique préalable avec un conseiller. Ce message se place dans le même widget que le résultat, juste en dessous du montant affiché.
Variantes possibles
- Ajouter un champ pour le nombre de pièces à emballer, afin d’affiner l’estimation selon un tableau PHP ou un fichier de configuration séparé.
- Envoyer automatiquement l’estimation par e-mail au visiteur, avec un lien vers la prise de rendez-vous téléphonique pour finaliser le dossier.
- Ajouter une option de comparaison entre une formule économique et une formule avec emballage inclus, affichée côte à côte après soumission du formulaire.
Un point de vigilance qu’on rappelle systématiquement sur ce type de projet : la grille tarifaire doit rester alignée avec celle utilisée en interne par les équipes commerciales, sous peine d’afficher une estimation qui ne correspondra jamais au devis réel proposé ensuite.
En résumé
Un simulateur de devis de déménagement basique se construit avec la logique conditionnelle native d’Elementor Pro Forms et un calcul PHP exécuté côté serveur via le hook elementor_pro/forms/process, sans dépendre d’un plugin de calcul externe. La formule reste volontairement indicative, la finalisation du devis restant du ressort d’un conseiller ou d’une visite sur place.