Blog

The Complete Guide to Stopping Form Spam

Honeypots alone aren't enough anymore. Here's a practical, layered approach to keeping bot submissions out of your inbox — without punishing real visitors with a CAPTCHA maze.

← Back to the blog
AI Powered

Explore this article with AI

Get an instant summary, key takeaways, action items, and answers to your questions about this article.

Choose your AI assistant
ChatGPT Perplexity
Quick answer

Stopping form spam reliably means layering defenses rather than relying on one: automatic content/behavior scoring on every submission, an optional CAPTCHA (reCAPTCHA or hCaptcha), a hidden honeypot field, and an authorized-domains allow-list — combined, these catch the large majority of bot traffic with minimal friction for real visitors.

Form spam has gotten harder to stop with a single trick — AI-assisted bots are more convincing than they used to be. The reliable approach is layering several lightweight defenses instead of leaning on one.

Layer 1: Automatic scoring (always on)

Every submission should be scored on content, sender patterns, and behavior before it reaches your inbox — no configuration needed. This catches a large share of obvious spam without any setup and without ever showing a visitor a challenge.

Layer 2: Honeypot (invisible to humans)

A honeypot is a form field hidden from real visitors with CSS, but still visible to simple bots that fill in every field they can find. Real users never see it or interact with it; any submission that fills it in gets silently rejected. It's nearly invisible friction and worth having on by default.

Layer 3: CAPTCHA (when you need it)

reCAPTCHA and hCaptcha both work by challenging suspicious traffic — reCAPTCHA v3 runs invisibly and only shows a challenge when risk is high; hCaptcha is a privacy-friendlier alternative some teams prefer. Reserve visible CAPTCHA for forms genuinely under attack; applying it everywhere by default adds friction that costs real conversions.

Layer 4: Authorized domains

If your form should only ever be submitted from your own site (not embedded or scraped elsewhere), an authorized-domains allow-list rejects submissions originating anywhere else. Leave it empty if you genuinely need to accept submissions from multiple sources.

Putting it together

None of these four layers is sufficient alone against a determined attacker, but stacked together — automatic scoring, honeypot, optional CAPTCHA, and a domain allow-list — they cover the overwhelming majority of real-world form spam with very little friction for legitimate visitors.

FormBridge runs scoring automatically on every submission and lets you turn on the other three per form under Form → Settings → Spam Protection — see the Spam protection section of the docs for the exact setup steps.

Frequently asked

What is a honeypot field?

A honeypot is a form field hidden from real visitors via CSS but visible to simple bots, which often fill in every field they can find. Any submission that fills the honeypot is silently rejected as a bot.

Is a honeypot enough to stop form spam by itself?

No — it stops naive bots but not more sophisticated ones. Combining a honeypot with automatic scoring and, where needed, a CAPTCHA gives much stronger coverage.

Does CAPTCHA hurt form conversion rates?

It can, if applied indiscriminately. That's why layered approaches use lighter defenses (honeypot, scoring) first and reserve visible CAPTCHA challenges for cases that need it.

Key facts

  • Honeypot fields catch simple bots by hiding a form field from human visitors via CSS while leaving it visible to basic bot scripts.
  • FormBridge scores every submission automatically before it reaches the inbox, in addition to optional reCAPTCHA, hCaptcha, and an authorized-domains allow-list.
  • A layered spam defense (automatic scoring + honeypot + optional CAPTCHA + domain allow-list) catches more bot traffic than any single method alone.

Terms in this post

Honeypot field
A form field hidden from human visitors using CSS, left visible to simple automated bots. Submissions that fill in the honeypot are treated as spam and rejected.
Authorized domains (allow-list)
A spam-protection setting that restricts a form to only accept submissions originating from specified domains, rejecting submissions from anywhere else.

Get the next one in your inbox.

One email when we publish something worth reading. No spam — appropriately enough, we'd know.