Stop contact form spam WordPress using WPForms anti spam, Cloudflare Turnstile, and Hostinger filters

Stop Contact Form Spam WordPress, My Inbox Became a Bot Playground

I thought my contact form was innocent. Cute. Simple. “Just in case a recruiter wants to say hi. 😁”

Then Hostinger Mail started getting messages that looked like they were written by a blender, plus random links, plus the classic drama email, “Undelivered Mail Returned to Sender”.

So I did what any calm adult would do. I fixed it. And yes, this is the exact setup I used to stop contact form spam WordPress style, without turning my portfolio into a CAPTCHA obstacle course.

Quick summary (what this post covers)
In this technical cleanup, I fixed the exact issues that were stopping my site from looking “launch ready”, broken internal links (404), unnecessary redirects, spam form noise, and a couple of indexability checks in Search Console. This post documents what I found, what I changed, and how I verified the results.
Main fixes

  1. Removed internal links that pointed to deleted pages and categories
  2. Created redirects only when a real replacement page existed
  3. Fixed an email obfuscation link that was generating a fake 404 in crawlers
  4. Verified the cleanup with Screaming Frog, then rechecked the key URLs in Search Console

What I wanted
What I didResult
Stop junk in InboxHostinger Mail filtersInbox stayed clean
Stop bots from submittingWPForms anti spam + time limitFewer spam submissions
Block the rest without annoying humansCloudflare TurnstileBots got blocked, humans kept their dignity
Keep Gmail backup reliableGmail filter for my domainBackup stopped dumping my messages in Spam

Why I was getting those emails in Hostinger Mail

Here is the boring truth that I refuse to explain in a boring way.

My WordPress contact form sends email notifications.
Bots discovered it.
Bots submitted spam.
WordPress forwarded spam to my mailbox like a helpful little assistant that does not understand danger.

So the spam showed up as “New message from…” emails, and sometimes I got bounce messages (Mailer Daemon) because the system detected spammy content and refused delivery.

That is not a “Hostinger issue”. It is just what happens when you leave a form open on the internet.

Step 1, Clean my Inbox with Hostinger free filters

Hostinger filters do not stop bots. They stop Inbox chaos. I used them as a cleanup layer while I fixed the real problem inside WordPress.

Filter 1, move Mailer Daemon bounces out of my life

FilterRulesScopeAction
Bounces, Mailer DaemonSubject contains Undelivered Mail Returned to Sender OR From contains MAILER-DAEMONMatch any ruleMove to Spam (or Trash)

These emails are not leads. They are just your mail system screaming into the void.

Filter 2, catch link spam from form messages

Important, I did not filter by the subject “New message from…”. That would send real messages to Spam too.

Instead, I filtered by patterns that spam always includes.

FilterRulesScopeAction
Spam, links rarosBody contains http OR Body contains tinyurlMatch any ruleMove to Spam

Filter 3, allow legit form messages into Inbox

Important, this is the “save the good stuff” filter. It makes sure real messages do not get trapped by your spam filters.

Instead of filtering by subject (too generic), I whitelist the sender from my own domain.

FilterRulesScopeAction
Allow, WPForms legitFrom contains daphne (at) learningseojourney( dot)com AND Subject contains New message from Learning SEO JourneyMatch all rulesMove to Inbox

That kept my Inbox clean immediately.

Why my Gmail backup sometimes did not receive messages

Because forwarding usually forwards Inbox, not Spam.

So if Hostinger moved something to Spam, my Gmail backup never saw it. That is not broken. That is the system working as designed.

Step 2, Stop contact form spam WordPress at the source in WPForms

Now the real fix.

In WPForms, inside my contact form, I went to,

Settings, Spam Protection and Security

And I turned on,

Modern anti spam protection
Minimum time to submit (I set it to 5 seconds)

Bots submit forms instantly. Humans take a few seconds. That time rule alone blocks a surprising amount of garbage.

Step 3, Add Cloudflare Turnstile (clean, low friction, portfolio friendly)

This is where I stopped hoping and started blocking.

Turnstile is Cloudflare’s verification tool. Think “CAPTCHA alternative”, but without asking visitors to identify 14 traffic lights 🤪 like it is a psychology test. 😕 WPForms Turnstile setup guide

What Cloudflare is, in normal human language

TermWhat it means
CloudflareA service that can protect and manage website traffic, and also provide Turnstile verification
TurnstileA bot check that helps stop form spam without annoying real people
“Behind Cloudflare”Your web traffic goes Visitor → Cloudflare → your hosting, but you do not need this just to use Turnstile

That is why I selected Pre clearance = No. It is extra complexity that I did not need for a simple portfolio contact form. Cloudflare Turnstile documentation

Turnstile settings I used

WhereSettingValue
Cloudflare, TurnstileDomainlearningseojourney.com (no https, no www)
Cloudflare, TurnstileModeManaged
Cloudflare, TurnstilePre clearanceNo
WPForms, Settings, CAPTCHAKeysPaste Site key + Secret key

Security note, the Secret key is private. If you accidentally expose it, delete the widget and generate a new one. I did that once, and I survived.

Step 4, The small form tweaks that made it look professional (and less spam friendly)

I also tightened the form so it looks like a real portfolio, not a public dumping ground.

Form changeWhat I setWhy it helps
Consent checkboxRequiredCleaner, more serious, and stops some junk
Consent text“I agree to be contacted back about this message.”Clear and short
Microcopy below“No spam. No newsletters. Just a reply.”Builds trust fast
Message length500 characters maxStops long spam dumps

Step 5, Testing (because I like proof, not vibes)

I tested in an incognito window so cookies and logins did not fake the results. my Technical SEO for Beginners workflow

TestMessageExpected result
Clean testNormal text, no linksShould land in Inbox and forward to Gmail
Spam testInclude https:// example (dot) comShould land in Spam or get blocked, Inbox stays clean

When the clean test worked and the spam test went to Spam, I knew my setup was doing its job.

Step 6, Fix Gmail backup so it stops panicking

Even after I managed to stop contact form spam WordPress style, Gmail can still be overprotective with forwarded messages.

So I created a Gmail filter,

From *@learningseojourney (at) gmail (dot) com
Never send it to Spam

That made the backup reliable again.

What changed after all this

My Inbox stopped looking like a bot playground.
My contact form became usable for real humans.
And I did it without annoying recruiters with puzzles.

Behind the Work, Real Fixes, No Fluff

I document quick website fixes like this as I build my SEO portfolio, what broke, what I changed, and how I tested it. If you want the clean version (with screenshots), it is all in Behind the Work
Life is great. Life is well.

Scroll to Top