Lifetime prices rise on 19 October →
Phox Elements
🦊  For Breakdance forms

Phox Form Guard. Spam stops before it reaches your inbox.

Every submission is scored against a set of signals you can see and tune. Obvious junk is dropped, borderline ones are held for a look, and a real enquiry caught by mistake is released with one click, attachments and all.

13Spam signals, each one tunable
0Breakdance files touched
~1msAdded to a submission
1Blocklist for every site you run

A score, not a coin toss

Each signal adds points: a blocked domain, a throwaway address, too many links, a message in the wrong script, a form filled in two seconds flat. Nothing is blocked on one signal alone unless you say it should be.

Two lines, not one

Below the first threshold it goes through. Above the second it is dropped. In between it is held for review, so the grey area lands with you instead of in the bin or the inbox.

Release it, intact

A held submission has run none of the form's actions. Release it and every one of them fires exactly as if it had come in clean: the email, the CRM, the stored entry, and the attachments with it.

Lists that mean something

Domains and whole TLDs like .ru, individual senders, IPs and ranges, countries, and keywords with wildcards or full regex. Allow lists win over everything, so a client's own address can never be caught.

Test mode first

Turn it on, and for a week nothing is blocked. The dashboard still shows exactly what would have been, so you tune the rules against real traffic before a single enquiry is at stake.

Fails open, on purpose

If a rule breaks, a server hiccups or a table goes missing, the submission goes through and the log says why. A spam plugin that eats real leads when it stumbles is worse than no plugin at all.

See what it is doing

Thirty days at a glance: what was let through, what was held, what was rejected and which rules did the work. Rejected submissions are not kept, but their score and reasons are, so you can always tell why.

The Form Guard dashboard: stat tiles for waiting, checked, stopped and caught, a thirty day stacked bar chart, the form health panel, the rules catching the most spam and the recently rejected list
The dashboard. The badge in the admin bar tells you when something is waiting.

Everything it saw, and why it stopped

Every field as submitted, every rule that fired with the points it added, and where it came from. Decide in a glance, then release it, block the sender, or block the whole domain and IP with it.

A held submission: the submitted values, the attachment kept safe, the score with the rule that fired, and release, block and delete buttons
A held submission with a PDF attached. Files are kept outside the web root and put back on release.

Tune it, or leave it alone

Every rule has a switch, a points value and a block-outright option. The defaults are sensible for a contact form; an agency with a hundred of them can tune once, export, and have every site follow.

The Rules screen: sender rules with on/off switches, a points field and a block outright checkbox for each
Rules. Switch, points, and whether it blocks on its own.
The Tools screen: a match tester, the shared list URL, and export and import of the whole configuration
Tools. Test a value, share a blocklist, move a configuration between sites.

Know the moment a form stops delivering

Spam is not the only way to lose an enquiry. An email that never sends, a webhook that times out or a CRM that rejects the data loses it just as surely, and usually nobody notices for weeks. Form Guard watches every form for that too, and tells you.

The Form health screen: two open problems with the error each action reported and when it was first and last seen, a list of recent failures, resolved problems and alert settings
Form health. Each problem names the form and what failed, and clears itself once the form delivers again.

A broken action

Breakdance records whether each action delivered: the email, the webhook, the CRM. When one reports an error, Form Guard opens a problem that names the form and the action, with the message the action gave.

An error the visitor saw

Forms that store nothing leave no record, so Form Guard reads the answer the form sends back. If a genuine submission gets an error after passing the checks, it notices, without changing a byte of the response.

Email that never left

If WordPress cannot send an email, you hear about it straight away, through the channels that do not depend on email working.

A busy form gone quiet

Once a day it looks at forms with twenty or more submissions in the last four weeks. When one goes much longer than usual without a single submission, and never less than three days so a quiet weekend is fine, it warns you.

Alerts where you look

A notice on every admin screen, a panel on the dashboard, an email, and a line in the summary. Add a webhook and alerts land in Slack, Microsoft Teams or Discord as well.

Clears itself

As soon as the form delivers again the problem closes on its own, and the webhook says so. A problem that keeps happening is alerted at most once a day, not once per failure.

Built for the person looking after fifty sites

Spam is a per-site chore that scales badly. These are the parts that make it one job instead of fifty.

One shared blocklist

Publish an export at a URL and point every site at it. Each one syncs on a schedule, and entries typed in locally are tracked apart from the feed, so a sync never overwrites what a site owner curated by hand.

Export and import everything

Rules, lists, thresholds and per-form settings as one JSON file. Tune a site until it is right, export, and import it on the next one in merge or replace mode.

Ask it why

Paste an address, a domain, an IP or a phrase into the tester and it tells you which lists it hits. The answer to "why was this held" without going hunting.

A summary in your inbox

Daily or weekly, only when something happened: what was blocked, what is waiting, what caught it, and a button straight to the quarantine. Quiet days send nothing.

Per-form control

Every Breakdance form on the site is found automatically. Switch protection off for one, or give a high-traffic form its own thresholds, without touching the rest.

Block from the quarantine

One click on a held submission blocks the sender, and optionally their whole domain and IP, straight into the lists. The next one from them never gets as far as being held.

It stacks with Turnstile, it does not replace it

Turnstile asks whether a browser is driven by a human, and stops the flood of automated submissions. Form Guard asks whether a submission is worth reading, and catches what gets past: real people pasting SEO outreach, spammers on genuine Gmail accounts, the manual junk that makes up most of what actually lands. Run both.

Phox Form Guard

On its own
£79£69 Lifetime, unlimited sites · launch price
  • Every rule, list and the quarantine
  • Form health alerts, including Slack, Teams and Discord
  • Shared blocklist, export and import
  • All future Form Guard updates
  • 14 day money back guarantee
Get lifetime Form Guard →
Best value · £80 more, 9 plugins more

The Phox Bundle

Form Guard and every other Phox plugin
£149 Lifetime, unlimited sites Rises to £179 on 19 OctoberEnds Monday 19 October Phox Elements (150+ elements), Framework, Studio, Vault, Email Designers, Product Addons, Translate, Conditions and Form Guard
  • Everything in Form Guard, including form health alerts
  • Every other Phox plugin, current and future
  • One licence, unlimited websites, forever
  • All future updates, all plugins
  • 14 day money back guarantee
Get the bundle →

Quick questions

Does it work with Breakdance's own forms, or do I need a special element?
Breakdance's own Form Builder, exactly as it is, and the Form Builder Plus element in Phox Elements, which is built on it. Form Guard sits on the one hook Breakdance provides in its submission pipeline and gates every action from there. No core files are changed and the AJAX endpoint is untouched, so a Breakdance update cannot break it.
What happens to a real enquiry that gets caught?
It is held, not lost. Nothing has run yet: no email, no CRM push, no stored entry. Open it, see every field and every reason, and press release. Every action fires as if it had just arrived, attachments included, and the sender's address can be added to the allow list on the spot so it never happens again. Rejected submissions are the exception, which is why the reject threshold sits well above the hold one, and why test mode exists.
Will it tell me if a form stops working?
Yes. Form health watches every form for actions that report an error, errors sent back to visitors, emails WordPress could not send, and busy forms that suddenly go quiet. Problems show as a notice in the admin and on the dashboard, can be emailed to you, and can go to Slack, Microsoft Teams or Discord through a webhook. Each one clears itself once the form delivers again.
How is this different from Cloudflare Turnstile?
Turnstile checks whether a browser is human and stops automated volume before it reaches the server. Form Guard reads what was actually submitted. A person in a click farm, a spammer on a real Gmail account, a bot that has solved the challenge: Turnstile lets all of those through and Form Guard scores them. The two run together; Turnstile is free from Phox Elements.
Will it slow my forms down?
Scoring costs about a millisecond on the server and nothing on the page. The one thing that adds time is the optional outside checks, StopForumSpam and Akismet, each of which is a network call. They are off by default, cached when on, and skipped whenever the score has already crossed the reject line.
What does it do with attachments?
Breakdance deletes uploads when no submission is stored, which would leave a released enquiry without its files. Form Guard copies them into a directory of its own, under random names with no extension so nothing in it can be executed or guessed, and puts them back on release. There is a size cap, and they are purged with the submission.
Can a shared blocklist switch protection off on my sites?
No. A feed can only add to the deny lists, never the allow lists, and it must be served over https. Entries that arrive from the feed are tracked separately from the ones typed in on each site, so a sync adds and withdraws its own entries and leaves yours alone.
What if it breaks?
It lets everything through and writes to the log. Every rule runs inside its own guard, so one rule failing only skips that rule, and the engine as a whole fails open. That is a deliberate choice: an anti-spam plugin that blocks real leads when something goes wrong is worse than not having one.