Skip to content
Commencez avec 100 crédits de vérification gratuits
Qualisend
Tous les articles
Guides / 13 mai 2026

Vérifier les e-mails de Gravity Forms

10 minutes read

Qualisend team
Schéma de flux montrant une soumission Gravity Forms passant par un hook gform_field_validation vers l'API de vérification Qualisend, qui oriente chaque adresse vers distribuable (enregistrer), risquée (marquer) ou non distribuable (rejeter).

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 :

  1. Temps réel, en ligne — un petit extrait de code PHP sur le filtre gform_field_validation appelle 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.
  2. 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.
  3. 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 :

VerdictAction du formulaire
undeliverableRejeter en ligne (filtre de validation) ou écarter avant l'envoi (webhook).
indicateur disposableRejeter ou signaler, selon le degré de sévérité de votre formulaire — voir adresses génériques, jetables & gratuites.
risky / catch-allAccepter, mais la marquer — orienter vers le segment catch-all et envoyer avec précaution.
unknownAccepter. Le serveur de messagerie n'a pas répondu — ne perdez jamais une vraie soumission à cause de cela.
deliverableAccepter.

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 :

  1. 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.
  2. 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 status et un reason par adresse.
  3. Filtrez et synchronisez. Gardez les deliverable, examinez les risky, et écartez les undeliverable avant 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.

Your reputation, protected.

Clean your first list in minutes. 100 free credits, no card required.

Get started