Gravity Forms intègre une protection anti-spam discrète, efficace et gratuite : le honeypot. Elle ajoute un piège invisible pour les robots, sans imposer de captcha aux vrais visiteurs. Bref, le genre de protection que l’on aime bien : utile, silencieuse, et sans puzzle illisible à 23h47.
Le problème ? Sur un site qui possède plusieurs formulaires, il faut normalement activer cette option formulaire par formulaire. C’est acceptable avec deux formulaires. C’est pénible avec vingt. Voici donc comment activer automatiquement le honeypot sur tous les formulaires Gravity Forms.
Ce que fait le honeypot de Gravity Forms
Un honeypot ajoute un champ que les visiteurs humains ne voient pas. Les robots, eux, ont tendance à le remplir. Quand Gravity Forms détecte cette valeur suspecte, il classe la soumission comme spam ou la bloque selon les réglages du formulaire.
Les versions récentes de Gravity Forms vont plus loin qu’un simple champ caché. Le honeypot peut aussi vérifier un hash ajouté en JavaScript, puis utiliser une vérification de vitesse de soumission. Cela permet de bloquer davantage de soumissions automatisées sans alourdir l’expérience utilisateur.
Marre des agences qui sous-traitent ?
Avec moi, vous parlez directement au développeur qui fait le travail. Pas d'intermédiaire, pas de promesses creuses. Juste du code propre et un interlocuteur joignable.
Travaillons directement ensemble →Activer le honeypot sur tous les formulaires Gravity Forms
Ajoutez ce snippet dans un mini-plugin maison, un plugin de snippets, ou dans le fichier functions.php de votre thème enfant. Évitez évidemment de modifier le cœur de WordPress ou les fichiers du plugin Gravity Forms.
<?php
/**
* Plugin Name: SkyMinds Gravity Forms Global Honeypot
* Description: Forces Gravity Forms anti-spam honeypot on all forms.
* Author: Matt Biscay
* Version: 1.0.0
*/
declare(strict_types=1);
defined( 'ABSPATH' ) || exit;
add_filter( 'gform_form_post_get_meta', 'skyminds_enable_gravity_forms_honeypot_globally' );
/**
* Enable the Gravity Forms anti-spam honeypot on every form.
*
* Gravity Forms reads this property when rendering and validating forms.
* This keeps the protection enabled even if a form was created without it.
*
* @param array<string, mixed> $form Gravity Forms form object.
*
* @return array<string, mixed> Filtered Gravity Forms form object.
*/
function skyminds_enable_gravity_forms_honeypot_globally( array $form ): array {
$form['enableHoneypot'] = true;
return $form;
}Langage du code : HTML, XML (xml)
Ce code utilise le filtre gform_form_post_get_meta. Gravity Forms l’exécute après avoir récupéré les métadonnées du formulaire. On peut donc modifier le formulaire avant son rendu et sa validation.
Version avancée : marquer les spams au lieu de les jeter
Sur un site client, je préfère souvent conserver les soumissions suspectes en spam pendant quelques jours. Cela permet de vérifier les faux positifs avant de durcir la règle. Pour cela, vous pouvez forcer l’action spam.
<?php
/**
* Plugin Name: SkyMinds Gravity Forms Global Honeypot
* Description: Forces Gravity Forms anti-spam honeypot on all public forms and marks suspicious entries as spam.
* Author: Matt Biscay
* Version: 1.1.0
*/
declare(strict_types=1);
defined( 'ABSPATH' ) || exit;
add_filter( 'gform_form_post_get_meta', 'skyminds_enable_gravity_forms_honeypot_with_spam_review' );
/**
* Enable the Gravity Forms honeypot globally and keep suspected spam for review.
*
* @param array<string, mixed> $form Gravity Forms form object.
*
* @return array<string, mixed> Filtered Gravity Forms form object.
*/
function skyminds_enable_gravity_forms_honeypot_with_spam_review( array $form ): array {
if ( empty( $form['id'] ) ) {
return $form;
}
$form['enableHoneypot'] = true;
$form['honeypotAction'] = 'spam';
return $form;
}Langage du code : HTML, XML (xml)
Avec cette variante, les soumissions détectées par le honeypot sont enregistrées comme spam. Elles ne déclenchent pas les notifications ni les feeds d’add-ons. Vous pouvez ensuite les consulter depuis les entrées du formulaire.
Version avec exclusions
Certains formulaires peuvent nécessiter un traitement spécial, par exemple un formulaire utilisé par une intégration externe ou une soumission via API. Dans ce cas, excluez les formulaires concernés par ID.
<?php
/**
* Plugin Name: SkyMinds Gravity Forms Selective Honeypot
* Description: Enables Gravity Forms honeypot globally, except on selected forms.
* Author: Matt Biscay
* Version: 1.0.0
*/
declare(strict_types=1);
defined( 'ABSPATH' ) || exit;
add_filter( 'gform_form_post_get_meta', 'skyminds_enable_gravity_forms_honeypot_except_selected_forms' );
/**
* Enable Gravity Forms honeypot, except for selected form IDs.
*
* @param array<string, mixed> $form Gravity Forms form object.
*
* @return array<string, mixed> Filtered Gravity Forms form object.
*/
function skyminds_enable_gravity_forms_honeypot_except_selected_forms( array $form ): array {
$excluded_form_ids = array( 3, 7 );
$form_id = isset( $form['id'] ) ? absint( $form['id'] ) : 0;
if ( 0 === $form_id || in_array( $form_id, $excluded_form_ids, true ) ) {
return $form;
}
$form['enableHoneypot'] = true;
$form['honeypotAction'] = 'spam';
return $form;
}Langage du code : HTML, XML (xml)
Remplacez simplement 3 et 7 par les IDs des formulaires à exclure.
Faut-il ajouter Cloudflare Turnstile ?
Le honeypot suffit souvent pour les petits formulaires de contact. En revanche, si votre site reçoit beaucoup de spam, ajoutez une couche supplémentaire. Aujourd’hui, Cloudflare Turnstile est une excellente option : il protège les formulaires sans imposer un captcha pénible aux visiteurs.
Gravity Forms propose un add-on officiel Cloudflare Turnstile. Une fois installé, il ajoute un champ Turnstile dans l’éditeur de formulaire. Sur les formulaires multi-pages, placez ce champ sur la dernière page.
Et Akismet ?
Akismet reste utile si vous recevez des messages de spam plus “humains”, avec du texte crédible, des liens douteux, ou des tentatives commerciales déguisées. Attention toutefois : Gravity Forms prévoit de retirer son ancienne intégration Akismet native. À terme, il faudra utiliser l’add-on Gravity Forms Akismet.
Checklist anti-spam Gravity Forms
- Activez le honeypot sur tous les formulaires publics.
- Gardez les soumissions suspectes en spam au début, plutôt que de les supprimer immédiatement.
- Surveillez les entrées marquées comme spam pendant quelques jours.
- Ajoutez Cloudflare Turnstile sur les formulaires très exposés.
- Ajoutez Akismet si le spam ressemble à de vrais messages humains.
- Désactivez ou supprimez les anciens formulaires inutilisés.
- Testez après toute optimisation JavaScript agressive, car le honeypot moderne dépend aussi de JavaScript.
Attention aux optimisations JavaScript
Depuis Gravity Forms 2.7, le honeypot utilise aussi une valeur injectée en JavaScript. Donc, si vous minifiez, combinez, retardez ou déplacez les scripts avec un plugin de performance, testez vos formulaires après changement. Une optimisation trop enthousiaste peut transformer un formulaire parfaitement honnête en suspect numéro un.
Conclusion
Le honeypot de Gravity Forms est une première ligne de défense propre, légère et invisible pour les visiteurs. Le snippet ci-dessus permet de l’activer partout, sans repasser manuellement dans chaque formulaire.
Pour un site peu exposé, cela peut suffire. Pour un site très visible, combinez-le avec Cloudflare Turnstile ou Akismet. L’objectif n’est pas d’empiler les protections au hasard, mais de bloquer les robots sans punir les vrais utilisateurs.
Sources
- Gravity Forms — Spam Detection and Protection
- Gravity Forms — gform_form_post_get_meta
- Gravity Forms — Form Settings
- Gravity Forms — Enhancements to the Spam Honeypot
- Gravity Forms — Using the Cloudflare Turnstile Add-On
- Gravity Forms — Akismet Anti-Spam
Vos mises à jour vous font peur ?
PHP 8.x qui casse un plugin, un thème qui n'est plus maintenu, une mise à jour de WooCommerce qui change tout — je gère les montées de version proprement, avec environnement de staging et rollback prévu.
Mettons votre stack à jour sans risque →

