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

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.

Start free

Free for 1,000 checks a month. Paid plans from $12. No card required.

Example: Doorman screening contact form, each judged in under half a second and delivered or kept out with the reason.

Sound familiar?

A number to interpret

A 0–6 score and flags leave the threshold, and the hard cases, to you.

No ongoing free tier

40 free checks in total, then a paid plan.

Judged in general, not for you

Doorman judges each message against what your business sells, so an agency that wants your product still gets through.

Doorman and OOPSpam, side by side

QuestionDoormanOOPSpam
What it checksWhat the message asks for, against what you sellA content model plus IP and email blocklists, with language and country filters
What you get backDeliver, hold or drop, and the sentence that decided itA 0–6 score and flags such as blocked IP, blocked email and spam words
Unsure submissionsHeld and forwarded to youYour code picks a threshold
SetupA form URL, one API call, or your coding agent (MCP, llms.txt)A REST API plus WordPress and form-plugin integrations
PriceFree for 1,000 checks a month; Pro $12 for 25,000; Business $49 for 250,00040 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 and $12 for 25,000 checks
  • You want sign-up and checkout screening in the same service

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 everything for a week and tags what it would have dropped.

Read the docs

One call, with the reason
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/13agency and SEO pitches dropped in our labelled contact-form set
0genuine enquiries dropped; the unsure ones were held and forwarded to you
162 msmedian 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 $12 for 25,000 checks and Business $49 for 250,000, with the same models on every plan.

How much does it cost?

Free for 1,000 checks a month. Pro is $12 a month for 25,000 and Business is $49 a month for 250,000. Every plan gets the same models. See pricing.

Try it on your own forms

Free for your first 1,000 checks every month. Start in watch mode and see every call before you trust it.