Greater Atlanta's IT partner since 1989

Gravity Forms

AJC Form Guard

Spam filtering for Gravity Forms that explains itself

Version 1.2.1 · WordPress 6.0+ · PHP 8.1+ · Licensed GPL-2.0-or-later

AJC Form Guard 1.2.1

WordPress 6.0+ · PHP 8.1+

Download the plugin (.zip)

SHA-256e167706dce02b2ca3aba4453781598e7a272a28a2e609e23a6022914ed822d09

  • Install it once from Plugins → Add New → Upload Plugin.
  • After that, updates arrive through WordPress's normal update screen.
  • Every update is checked against a signed release manifest before it installs.

Scores every Gravity Forms submission against ten independent checks and files the suspicious ones as spam — with a written explanation attached to each one.

The default challenge runs entirely on your own server. No Google, no account, no cookie, no third party told that your visitor exists.

Why this exists

Gravity Forms already ships free add-ons for reCAPTCHA, Cloudflare Turnstile and Akismet, and for many sites those are the right answer. Three things they do not cover are the reason this plugin exists.

Nothing self-hosted. Every captcha option Gravity Forms offers reports to Google or Cloudflare. If a client needs visitor data to stay on their own server, none of them qualifies.

Filtering you cannot audit. The honeypot and speed check are pass or fail. Akismet is a paid black box at $9.95 a month per commercial site. When a client asks "why did we never get that enquiry?", none of them can answer.

Nothing built for a fleet. Configuring keys and thresholds by hand on every client site, forever.

What it does

  • Ten weighted checks, not one gate: hidden field, submission speed, per-address rate, link density, shouting, writing system, throwaway email providers, mail server existence, an optional public blocklist, and the challenge result.
  • A written breakdown on every entry. Open a filtered submission and see exactly which checks fired and what each contributed — including the ones that could not run, which is a different thing from the ones that found nothing.
  • Self-hosted proof of work by default. The browser solves a short cryptographic puzzle. Nothing leaves your server. Turnstile and hCaptcha are available if you want them.
  • Signed fleet policy. Tune thresholds once and push them to every site you manage, with every value clamped by the plugin so a mistake cannot take a fleet down.
  • Signed self-hosted updates, from this site, verified with Ed25519 before a package is ever unpacked.

How it handles failure

It fails open, every time. This is the design decision everything else follows from.

Nothing is refused by default. A submission that scores above the threshold is filed in the Spam folder, where Gravity Forms already suppresses its notifications — so the client stops receiving spam without any real enquiry ever being at risk. A filtered message is recoverable in one click. A refused one leaves no record at all, and neither you nor your client would ever know it happened.

A check that cannot reach a conclusion abstains: it contributes nothing and never counts against the visitor. A blocklist outage, a slow DNS resolver, a visitor with JavaScript switched off, a bug in one check — none of them can cost anyone their enquiry. All ten checks share a single time budget measured in milliseconds, so a slow third party never becomes a slow contact form.

Honest about the captcha

Proof of work is not strong security, and it would be dishonest to imply otherwise. Solving services sell ALTCHA solvers, and a headless browser computes a hash faster than a real phone does. It crushes undirected, high-volume spam and does very little against someone targeting one specific site.

That is exactly why the challenge result is one weighted input among ten rather than a gate. A plugin that hard-blocks on a captcha alone is trusting the weakest part of the system with the most expensive decision.

Requirements

  • WordPress 6.0 or newer
  • PHP 8.1 or newer
  • Gravity Forms 2.5 or newer
  • No Composer dependencies at runtime, and nothing fetched from a CDN

Questions about AJC Form Guard?

Talk to the people who build and support it.