Gravity Forms est le cheval de bataille des sites WordPress sérieux — formulaires multi-pages, parcours d'inscription, demandes de devis — et chacun d'eux possède un champ e-mail qui vérifie le format et rien d'autre. Pour vérifier les e-mails de Gravity Forms, vous n'installez pas un plugin de marque ; vous vous branchez sur la soumission, appelez une API de vérification et, soit vous rejetez une mauvaise adresse en ligne, soit vous la marquez après coup. Ce guide couvre les trois approches prises en charge : un filtre de validation PHP qui bloque les adresses non distribuables et jetables avant l'enregistrement de l'entrée, l'add-on Webhooks pour un marquage-et-suppression asynchrone, et un export CSV pour nettoyer votre table d'entrées en masse.
La réponse courte#
Gravity Forms vous offre deux points d'intégration, et celui vers lequel vous vous tournez dépend de si vous voulez arrêter une mauvaise adresse ou simplement y réagir :
- Temps réel, en ligne — un petit extrait de code PHP sur le filtre
gform_field_validationappelle l'API Qualisend pendant que le formulaire est en cours de validation et renvoie une erreur de champ que le visiteur voit. C'est le seul endroit où vous pouvez rejeter une adresse avant qu'elle ne devienne une entrée. - Temps réel, asynchrone — l'add-on Webhooks envoie chaque entrée en POST vers une URL que vous contrôlez après son enregistrement. Il ne peut pas afficher d'erreur en ligne, mais il est parfait pour marquer, orienter ou supprimer les adresses non distribuables avant qu'elles n'atteignent votre outil e-mail.
- En masse — exportez les entrées stockées en CSV et passez-les dans le vérificateur en masse de Qualisend selon un calendrier. Aucun code, fonctionne sur toute licence qui stocke les entrées.
Cet article est le complément spécifique à Gravity Forms du guide plus large vérifier les e-mails dans les formulaires WordPress, qui couvre Contact Form 7 et WPForms avec les mêmes schémas. Si vous utilisez plusieurs plugins de formulaire, commencez par là ; si vous misez tout sur Gravity Forms, tout ce dont vous avez besoin se trouve ci-dessous.
Pourquoi le champ e-mail de Gravity Forms ne suffit pas#
Le type de champ email valide que ce que quelqu'un a saisi ressemble à une
adresse — un @, un domaine, aucun espace parasite. C'est un contrôle de format,
et le format n'est pas la distribuabilité. jane@gmial.com le passe. Tout comme
throwaway@mailinator.com, et tout comme une boîte aux lettres d'apparence
réelle sur un domaine qui a expiré il y a six mois. Aucune de ces adresses n'est
détectée avant l'envoi, et à ce moment-là une adresse morte est un rebond dur qui
grignote votre taux de rebond et votre
réputation d'expéditeur.
Une vraie vérification ajoute les couches que Gravity Forms ne peut pas fournir : une recherche DNS/MX, un sondage SMTP de la boîte aux lettres, et des indicateurs pour les adresses jetables, génériques (role), gratuites et catch-all. Si le processus est nouveau pour vous, comment fonctionne la vérification d'e-mails décompose chaque contrôle et explique pourquoi il compte.
Vérifier les e-mails de Gravity Forms à la soumission#
Gravity Forms expose un filtre de validation au niveau du champ qui se déclenche
pendant la validation, avant l'enregistrement de l'entrée — ce qui signifie que
vous pouvez invalider le champ e-mail et présenter au visiteur un message
d'erreur à corriger. C'est le filtre gform_field_validation, et c'est le bon
hook lorsque vous voulez une barrière en ligne plutôt qu'un nettoyage après coup.
Le callback reçoit le $result actuel du champ (avec un indicateur is_valid et
un message), la $value soumise, le $form et le $field. Vous appelez
l'API, et si le verdict est mauvais, vous basculez is_valid à false et
définissez le message. Gardez la clé d'API dans une constante wp-config.php —
jamais dans un réglage de formulaire, un fichier de thème ou un quelconque
JavaScript front-end :
// In a code-snippet plugin, or your theme's functions.php.
// In wp-config.php: define( 'QUALISEND_API_KEY', 'YOUR_API_KEY' );
add_filter( 'gform_field_validation', 'qs_gf_verify_email', 10, 4 );
function qs_gf_verify_email( $result, $value, $form, $field ) {
// Only run on email fields that already passed Gravity Forms' own checks.
if ( $field->type !== 'email' || ! $result['is_valid'] ) {
return $result;
}
// An email field with "confirm" enabled hands back an array.
$email = is_array( $value ) ? rgar( $value, 0 ) : $value;
$email = trim( (string) $email );
if ( $email === '' ) {
return $result; // let the field's own required-field check handle empties
}
// Confirm the exact endpoint and request body in /developers.
$response = wp_remote_post( 'https://api.qualisend.com/v1/verify', array(
'timeout' => 4, // cap it so a slow probe can't stall the form
'headers' => array(
'Authorization' => 'Bearer ' . QUALISEND_API_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array( 'email' => $email ) ),
) );
// Fail open: a transient error must never block a real applicant.
if ( is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) !== 200 ) {
return $result;
}
$verdict = json_decode( wp_remote_retrieve_body( $response ), true )['result'] ?? array();
if ( ( $verdict['status'] ?? '' ) === 'undeliverable' ) {
$result['is_valid'] = false;
$result['message'] = "That address doesn't look deliverable — please check it.";
} elseif ( ! empty( $verdict['sub_flags']['disposable'] ) ) {
$result['is_valid'] = false;
$result['message'] = 'Please use a permanent email address.';
}
return $result;
}
Trois choses portent cet extrait, et ce sont les mêmes trois dans chaque langage :
gardez la clé côté serveur, plafonnez la requête avec un délai d'attente court, et
échouez en mode ouvert — si l'appel échoue, expire ou renvoie un code autre
que 200, laissez passer la soumission. Une API de vérification est un filtre de
qualité, pas une barrière d'authentification, et perdre un vrai prospect à cause
d'une panne momentanée est le pire résultat. Pour la mécanique de la requête
elle-même — en-têtes, gestion des erreurs, la structure de la réponse
result — le guide de validation d'e-mails en PHP
parcourt le même appel de bout en bout.
Une remarque sur la portée : laisser le filtre global (comme ci-dessus) vérifie
le champ e-mail sur tous les formulaires. Pour cibler un seul formulaire,
branchez plutôt la variante spécifique au formulaire et au champ
gform_field_validation_{form_id}_{field_id}, ou ajoutez un garde-fou anticipé
if ( $form['id'] !== 5 ) return $result;. Et si vous devez valider sur
plusieurs champs à la fois — par exemple, ne vérifier que lorsqu'un autre champ
est renseigné — le filtre au niveau du formulaire gform_validation vous donne
l'ensemble du $form et vous permet de marquer individuellement les champs comme
échoués ; le filtre de champ ci-dessus est plus simple et suffit pour une simple
barrière sur un e-mail.
Agir sur le verdict#
L'API renvoie un objet result avec un status de deliverable, risky,
undeliverable ou unknown, plus un score de 0 à 100, un code reason, et des
sous-indicateurs pour disposable, role, free et catch_all — le même
$verdict que lit l'extrait. Associez chacun à une action de formulaire :
| Verdict | Action du formulaire |
|---|---|
undeliverable | Rejeter en ligne (filtre de validation) ou écarter avant l'envoi (webhook). |
indicateur disposable | Rejeter ou signaler, selon le degré de sévérité de votre formulaire — voir adresses génériques, jetables & gratuites. |
risky / catch-all | Accepter, mais la marquer — orienter vers le segment catch-all et envoyer avec précaution. |
unknown | Accepter. Le serveur de messagerie n'a pas répondu — ne perdez jamais une vraie soumission à cause de cela. |
deliverable | Accepter. |
Sur un formulaire en direct, appuyez-vous sur les contrôles locaux rapides — syntaxe, domaine, jetable, générique — car ils reviennent vite et interceptent la majeure partie des déchets sans faire attendre le visiteur. Le sondage SMTP plus lourd de la boîte aux lettres convient mieux à l'approche en masse ci-dessous, où quelques secondes de latence n'ont d'importance pour personne.
L'approche par l'add-on Webhooks#
Si le PHP personnalisé n'est pas envisageable — ou si vous avez seulement besoin de tenir les adresses mortes hors de votre outil en aval, sans bloquer le formulaire — l'add-on Webhooks de Gravity Forms le fait sans code. C'est un add-on sous licence (inclus dans les licences Gravity Forms de niveau supérieur, vérifiez donc votre offre), et il déclenche une requête HTTP configurable sous forme de feed après chaque soumission.
Dans les Réglages → Webhooks du formulaire, ajoutez un feed : définissez le
type de requête sur POST, le format sur JSON, pointez l'URL vers un endpoint que
vous contrôlez, et mappez le champ e-mail dans le corps de la requête. Comme vous
ne pouvez pas mettre en toute sécurité une clé d'API dans les propres en-têtes du
webhook pour ensuite appeler Qualisend depuis un tiers, le schéma propre consiste
à pointer le webhook vers une petite fonction serverless à vous — la
configuration exacte du guide de vérification à l'inscription en
serverless. Cette fonction détient la
clé, reçoit la charge utile de Gravity Forms, extrait l'e-mail, appelle l'API et
agit sur le verdict.
Le hic, c'est le timing. L'add-on Webhooks se déclenche après que l'entrée est déjà enregistrée, il s'exécute donc de façon asynchrone et ne peut pas afficher d'erreur de validation au visiteur — il n'y a pas de rejet en ligne sur cette approche. Ce qu'il peut faire, c'est vérifier en quelques secondes et orienter selon le résultat : ajouter un tag dans votre CRM, sauter le répondeur automatique pour une adresse non distribuable, ou la supprimer avant qu'elle n'atteigne votre plateforme e-mail. Si vous avez besoin que le visiteur voie et corrige une mauvaise adresse, utilisez le filtre de validation ci-dessus ; si tout ce que vous visez est l'hygiène en aval, le webhook suffit.
Vérifier en masse un export CSV de Gravity Forms#
Tous les formulaires n'ont pas besoin d'une barrière en temps réel, et vous aurez aussi un arriéré d'entrées collectées avant que vous n'en ajoutiez une. Pour les deux, l'approche sans code consiste à nettoyer par lots :
- Exportez les entrées en CSV. Dans l'administration de Gravity Forms, ouvrez Formulaires → Import/Export → Exporter les entrées, choisissez le formulaire, incluez la colonne e-mail et téléchargez le fichier. Vous obtenez une ligne par entrée avec l'adresse dans sa propre colonne.
- Vérifiez le CSV en masse. Envoyez-le au vérificateur en masse de
Qualisend, qui exécute le processus complet — MX, le sondage SMTP et les
indicateurs jetable/générique/catch-all — sur chaque ligne et renvoie un
fichier scoré avec un
statuset unreasonpar adresse. - Filtrez et synchronisez. Gardez les
deliverable, examinez lesrisky, et écartez lesundeliverableavant d'importer les survivantes dans votre plateforme e-mail.
C'est la même boucle export-vérification-réimport que pour tout nettoyage de liste, simplement issue de votre table d'entrées Gravity Forms — le guide pour nettoyer une liste d'e-mails la couvre en entier. Passez l'arriéré une fois, puis laissez un hook à la soumission maintenir la liste propre à partir de là.
Temps réel, en masse, ou les deux#
Ils résolvent des problèmes différents, alors la plupart des sites finissent par vouloir les deux :
- Le temps réel, c'est la prévention. Une faute de frappe interceptée à la soumission, c'est un prospect sauvé avec une correction d'une ligne ; un domaine mort rejeté sur place ne devient jamais un rebond dur.
- La vérification en masse, c'est le nettoyage. Les adresses se dégradent — les gens changent d'emploi, les domaines expirent — alors même une liste parfaitement filtrée a besoin d'une revérification périodique.
L'approche temps réel que vous pouvez utiliser dépend de votre licence et de votre aisance avec le code : le filtre de validation nécessite un extrait de code PHP mais vous offre un blocage en ligne, tandis que l'add-on Webhooks nécessite une offre payante mais aucun code et gère le marquage asynchrone. Associer celle que vous choisissez à un passage occasionnel en masse, c'est toute la stratégie.
Foire aux questions#
Gravity Forms peut-il vérifier les adresses e-mail par lui-même ?#
Uniquement le format. Le type de champ email confirme qu'une adresse est bien
formée — elle possède un @ et un domaine — mais il ne résout pas les
enregistrements MX et ne sonde pas la boîte aux lettres, si bien qu'une adresse
comportant une faute de frappe, jetable ou inactive depuis longtemps mais qui
semble valide passe malgré tout. Une vraie vérification a besoin des couches DNS
et SMTP qu'un service comme Qualisend ajoute par-dessus, appelé depuis un filtre
de validation, un webhook ou un traitement CSV en masse.
Un webhook Gravity Forms peut-il rejeter une mauvaise adresse en ligne ?#
Non. L'add-on Webhooks se déclenche après l'enregistrement de l'entrée, il
s'exécute donc de façon asynchrone et ne peut pas afficher d'erreur de validation
au visiteur. Il est idéal pour marquer, orienter ou supprimer les adresses non
distribuables avant qu'elles n'atteignent votre outil e-mail. Pour un rejet en
ligne que le visiteur voit et peut corriger, utilisez plutôt le filtre
gform_field_validation avec l'extrait de code PHP de ce guide.
Quel hook Gravity Forms dois-je utiliser pour vérifier à la soumission ?#
Utilisez gform_field_validation pour un seul champ e-mail — il se déclenche
pendant la validation, reçoit la valeur du champ et vous permet de renvoyer une
erreur en ligne. Si vous devez valider sur plusieurs champs ou exécuter le
contrôle de façon conditionnelle sur l'ensemble du formulaire, utilisez le filtre
au niveau du formulaire gform_validation et marquez individuellement les champs
comme échoués. Les deux s'exécutent côté serveur avant l'enregistrement de
l'entrée, ils peuvent donc tous deux bloquer.
Existe-t-il un add-on Qualisend natif pour Gravity Forms ?#
Pas pour l'instant — nos intégrations natives de plateforme sont en cours de reconstruction, et un connecteur Gravity Forms est prévu dans la feuille de route. En attendant sa sortie, les approches prises en charge sont les trois de ce guide : appeler l'API REST depuis le filtre de validation, depuis une fonction serverless derrière l'add-on Webhooks, ou exporter les entrées en CSV et les vérifier en masse. Toutes utilisent directement l'API documentée.
Prêt à tout mettre en place ? Le plan gratuit inclut des crédits pour
tester chaque approche, la référence de l'API contient la requête
/verify exacte pour votre filtre de validation ou votre fonction serverless, et
le vérificateur d'e-mails gratuit vous permet de tester
ponctuellement une seule adresse avant d'écrire une ligne de PHP.