Turnstile stops bots. Doorman stops what people type.

Messages that pass a bot check: real submissions and how Doorman judged them
-
Specimen · Contact formNº 006858 8675
From growth@rankwise.io
“Your restaurant isn't showing on page one of Google. We can fix your local SEO in 30 days, guaranteed. Can I send a proposal?”
Sales pitch
1% chance it’s real · 82 ms
Void -
Specimen · Contact formNº 008536 6294
From zara@quill.example
“I run Quill Legal. We use Xero today. Half our clients are in the UK. Can we get a demo this week?”
91% chance it’s real · 87 ms
Genuine -
Specimen · Contact formNº 010214 3913
From hello@pixelcraft.agency
“We build stunning websites for architects. Your current site feels dated. 15 minute call to show you some concepts?”
Sales pitch
2% chance it’s real · 84 ms
Void -
Specimen · Contact formNº 011892 1532
From kofi@proton.me
“I run Brightline Dental. Clients keep asking to pay by card and we can't take it. Does it import from what we use now?”
81% chance it’s real · 78 ms
Genuine -
Specimen · Contact formNº 013569 9151
From hello@scaleleads.co
“Are you accepting guest posts? I have a well researched article on small business cash flow that fits your audience.”
pitch
2% chance it’s real · 83 ms
Void -
Specimen · Contact formNº 015247 6770
From claire.m@gmail.com
“Hi, my son chipped a front tooth at football. Do you have anything this week for children? He's 11.”
95% chance it’s real · 90 ms
Genuine
Sound familiar?
Turnstile is free and mostly invisible, and it's good at stopping scripted form floods. It doesn't read the message, so a salesperson or a paid spammer typing into your contact form passes. Doorman reads every submission and tells you why it kept one out.
14 days of Pro free, no card. Then free for 100 submissions a month, or Pro from $29.
- The pitches still arriveSEO offers, redesign pitches and partnership outreach come from real browsers. Turnstile lets them through, by design.
- No reason, everVerification returns pass or fail with no score and no explanation, so a blocked customer is a mystery.
- A script on every protected pageTurnstile needs its widget on the page and a verify call on your server.
Doorman and Cloudflare Turnstile, side by side.
| Question | Doorman | Cloudflare Turnstile |
|---|---|---|
| What it checks | What the visitor sent, against what you sell | Browser signals: small invisible challenges and browser checks |
| Pitches from bots that pass the check | Kept out | Pass |
| What visitors see | Nothing | Usually nothing; a checkbox when it judges a visitor risky |
| Why something was blocked | The exact sentence | No score or reason in the response |
| Setup | A form URL or one server call | A script and widget on the page, plus a server-side verify call |
| Price | Free for 100 submissions a month, Pro $29 for 5,000 | Free with unlimited challenges; Enterprise via sales |
Their plans and behaviour as published on their own sites, checked 29 September 2026. Sources: developers.cloudflare.com/turnstile, developers.cloudflare.com/turnstile/plans, developers.cloudflare.com/turnstile/get-started/server-side-validation.
Which one is right for you?
Choose Doorman if
- The junk you get is typed by people or written to sound like them
- You want to know why each message was kept out
- You want unsure submissions held for you, not guessed
- You'd rather add nothing to your pages
Choose Cloudflare Turnstile if
- Your only problem is scripted bots flooding a form
- You want a free check with unlimited volume
- You're already on Cloudflare and want it in the same dashboard
Turnstile is free, so keep it in front for bots if you like and let Doorman read what gets past it.
Switch in two minutes
- Hosted form change the form's action to your Doorman URL and remove the Cloudflare Turnstile script and widget.
- From your server replace the Cloudflare Turnstile verify call with one doorman.check call; act on deliver, hold or drop.
- Or ask your agent copy one prompt into Claude Code, Codex or Cursor and it does the swap.
- Start safely watch mode delivers what it would have dropped, tagged, until you switch it to enforce.
<!-- before: a Cloudflare Turnstile script and widget --> <form action="/contact" method="POST"> … <div class="cloudflare-turnstile-widget"></div> <!-- after: no script, no widget --> <form action="https://withdoorman.com/f/f_yourForm" method="POST"> …
Checked, not guessed.
Every decision comes from Doorman's models reading the submission, in milliseconds, with the reason attached.
- 13/13
- agency and SEO pitches dropped in our labelled set; a bot check passes all of them
- 0
- genuine enquiries dropped; the unsure ones were held for you
- ~100 ms
- to judge a submission, invisible to the visitor
Labelled test set: 104 invented but labelled contact-form and checkout submissions, judged live; latency is the median of those checks. Questions were not tuned to the set.
Questions
Should I remove Turnstile?
You don't have to. Turnstile filters automated traffic for free; Doorman reads the messages that get through it. Many sites run both.
Does Doorman need Cloudflare?
No. It works with any host or stack: a form action URL or one API call.
What does it cost at volume?
Pro is $29 a month for 5,000 submissions and Business is $79 for 50,000. Every plan gets the same models.
How much does it cost?
Free for 100 submissions a month. Pro is $29 a month for 5,000 and Business is $79 a month for 50,000, and every account starts with 14 days of Pro. Until November 30, the first 100 paying customers get Pro at $19 and Business at $59, kept for as long as they stay. See pricing.
Try it on your own forms.
Start with 14 days of Pro, free. Turn on watch mode to see every call before you trust it.
