OOPSpam gives you a score. Doorman gives you the reason.

Contact form: real submissions and how Doorman judged them
-
Specimen · Contact formNº 041361 4046
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º 043039 1665
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º 038005 8808
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º 039683 6427
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º 048072 4522
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 -
Specimen · Contact formNº 049750 2141
From ce0a@yopmail.com
“Hello harbourdental.co.uk, Get 1000 free visitors to your website today! Click here: http://bit.ly/tr4ff1c”
Spam
1% chance it’s real · 99 ms
Void
Sound familiar?
OOPSpam is the closest thing to Doorman: it reads content too, and it has good form-plugin integrations. The differences are what you get back, what happens with the unsure ones, and what it costs.
14 days of Pro free, no card. Then free for 100 submissions a month, or Pro from $29.
- A number to interpretA 0–6 score and flags leave the threshold, and the hard cases, to you.
- No ongoing free tier40 free checks in total, then a paid plan.
- Judged in general, not for youDoorman judges each message against what your business sells, so an agency that wants your product still gets through.
Doorman and OOPSpam, side by side.
| Question | Doorman | OOPSpam |
|---|---|---|
| What it checks | What the message asks for, against what you sell | A content model plus IP and email blocklists, with language and country filters |
| What you get back | Deliver, hold or drop, and the sentence that decided it | A 0–6 score and flags such as blocked IP, blocked email and spam words |
| Unsure submissions | Held and forwarded to you | Your code picks a threshold |
| Setup | A form URL, one API call, or your coding agent (MCP, llms.txt) | A REST API plus WordPress and form-plugin integrations |
| Price | Free for 100 submissions a month; Pro $29 for 5,000; Business $79 for 50,000 | 40 free checks in total; Starter $23 a month for 25,000; Agency $69 for 300,000 |
Their plans and behaviour as published on their own sites, checked 29 September 2026. Sources: oopspam.com, oopspam.com/docs.
Which one is right for you?
Choose Doorman if
- You want a verdict and a reason, not a score to threshold
- You want unsure messages held for a person
- You want a real free tier, not 40 checks in total
- You want fresh, tailored pitches caught, not just known spam
Choose OOPSpam if
- You need ready-made plugins for Gravity Forms, Contact Form 7, Elementor or Ninja Forms
- You want country and language blocking built in
- You need a million-plus checks a month on one plan
Switch in two minutes
- From your server replace the OOPSpam call with one doorman.check call; act on deliver, hold or drop.
- Or no code point the form's action at your Doorman URL and it forwards the real ones to you.
- 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.
const r = await doorman.check({ form: "f_yourForm", email, name, message });
// r.action: "deliver" | "hold" | "drop"
// r.evidence: "We can fix your local SEO in 30 days, guaranteed."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 contact-form set
- 0
- genuine enquiries dropped; the unsure ones were held and forwarded to you
- ~100 ms
- to judge a submission, before the thank-you page loads
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
Is Doorman's decision a score too?
You get p_real (0–1) if you want it, but the answer is an action (deliver, hold or drop) and the sentence that decided it.
Does it block by country or language?
Not as a rule. Doorman judges meaning, and a short, badly written or non-English message is still judged as genuine if it is.
How does pricing compare at volume?
Pro is $29 for 5,000 submissions and Business $79 for 50,000, with the same models on every plan.
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.
