Faut-il attendre la soumission finale d’un formulaire pour créer un contact chez Brevo ? Sur ce projet, la réponse retenue a été non : chaque étape validée d’un formulaire Elementor Pro Forms multi-étapes déclenche un appel à l’API Brevo, ce qui permet de récupérer un contact partiel même si le visiteur abandonne avant la dernière étape, un cas fréquent sur les formulaires de qualification en plusieurs écrans.
Les formulaires multi-étapes d’Elementor Pro Forms se construisent avec plusieurs groupes de champs (steps) au sein d’un même widget, chaque étape étant validée indépendamment avant de passer à la suivante. Ce comportement se prête bien à une synchronisation progressive, à condition de brancher le bon hook côté serveur.
Pourquoi éviter un plugin de synchronisation tiers ici
Les extensions de synchronisation CRM génériques disponibles pour Elementor Pro Forms fonctionnent bien pour un formulaire simple à une étape, mais gèrent mal la notion de progression partielle : la plupart déclenchent l’envoi uniquement à la soumission finale du formulaire complet, ce qui revient exactement au comportement qu’on cherchait à éviter. L’appel direct à l’API REST de Brevo, plus simple qu’il n’y paraît, permet un contrôle fin étape par étape.
Le hook Elementor Pro Forms à utiliser
Le hook elementor_pro/forms/new_record se déclenche à la soumission de chaque étape configurée comme un formulaire indépendant dans le Theme Builder, ou à la validation du widget si les étapes sont gérées au sein d’un seul formulaire avec un champ caché indiquant l’étape en cours.
add_action('elementor_pro/forms/new_record', function ($record, $handler) {
$fields = $record->get('fields');
$etape = $fields['etape_courante']['value'] ?? 1;
$donnees = [
'email' => $fields['email']['value'] ?? null,
'attributes' => [
'PRENOM' => $fields['prenom']['value'] ?? '',
'ETAPE_FORMULAIRE' => (int) $etape,
],
];
if (empty($donnees['email'])) {
return;
}
wp_remote_post('https://api.brevo.com/v3/contacts', [
'headers' => [
'api-key' => getenv('BREVO_API_KEY'),
'Content-Type' => 'application/json',
],
'body' => wp_json_encode($donnees),
'timeout' => 8,
]);
}, 10, 2);

Gérer la mise à jour plutôt que la duplication
L’API Brevo accepte un contact déjà existant en écrasant ses attributs plutôt qu’en créant un doublon, à condition d’utiliser le même identifiant d’email à chaque appel. Ce comportement natif simplifie beaucoup le code : il suffit d’envoyer les champs connus à chaque étape, sans gestion manuelle de mise à jour côté WordPress.
Étape par étape, ce qui se passe côté visiteur
- Le visiteur remplit l’étape 1 (email, prénom) et clique sur « Suivant »
- Elementor Pro Forms déclenche
new_record, le contact est créé chez Brevo avec l’étape 1 enregistrée - Le visiteur complète l’étape 2, un nouvel appel API met à jour le même contact avec les champs supplémentaires
- À l’abandon ou à la validation finale, Brevo dispose déjà d’un contact qualifié avec la progression atteinte
Ce que cette intégration ne couvre pas
Cet article ne traite ni la configuration des campagnes d’emailing Brevo qui exploiteront ensuite ces contacts, ni la mise en place des automatisations de relance selon l’attribut ETAPE_FORMULAIRE, deux sujets qui relèvent de la configuration marketing de Brevo elle-même, indépendante de cette intégration technique.
Un formulaire multi-étapes révèle son intérêt bien avant la soumission finale : un contact qui abandonne à l’étape 2 reste une donnée précieuse, à condition de la capturer au bon moment.
Un point de vigilance sur le volume d’appels
Sur un formulaire à trois étapes très fréquenté, chaque visiteur génère potentiellement trois appels à l’API Brevo, y compris ceux qui reviennent en arrière plusieurs fois avant de finaliser leur saisie. Un compteur de fréquence simple, basé sur l’identifiant de session, a été ajouté pour éviter de déclencher un nouvel appel API si les données transmises n’ont pas changé depuis le dernier envoi, ce qui a réduit d’environ un quart le nombre d’appels réellement effectués sans perdre aucune information utile.
En résumé
Synchroniser un formulaire multi-étapes Elementor Pro Forms avec Brevo sans plugin tiers demande un seul hook PHP bien placé et une lecture attentive du champ d’étape courante. La contrepartie de cette approche directe : toute évolution de la structure du formulaire (ajout d’un champ, renommage) impose de mettre à jour ce code, alors qu’un connecteur générique aurait absorbé une partie de ces changements, au prix d’une flexibilité moindre.