Your forms
Spam filtering
Every submission is scored by Jev, a model from TypeSafe. Jev answers four questions about it:
- Is it a scam, phishing, malware or adult spam?
- Is it an unsolicited sales pitch for SEO, web design, backlinks or similar services?
- Is it random characters or bot noise instead of a real message?
- Was it sent by a bot to thousands of sites? These often look harmless, like "Hi, I wanted to know your price" in another language, with the same made-up name in every field.
Each answer is a probability. The highest one becomes the submission's spam score, so one confident "yes" is enough.
What each score means
| Score | Status | What happens |
|---|---|---|
| Under 60% | VERIFIED | Emailed to you and added to your sheet. |
| 60% to 89% | SUSPECTED_SPAM | Not emailed. Added to your sheet with the status SUSPECTED_SPAM. |
| 90% or more | BLOCKED_SPAM | Not emailed and not added to your sheet. You can still see it on your dashboard and release it. |
Releasing a false positive
If a real message is marked as spam, press Not spam next to it on the form's Submissions page or on its own page. The Suspected and Blocked tabs list them. We send the email right away and it counts as delivered. A blocked message is also added to your sheet then, since blocked spam never went there.
A weekly reminder
Suspected and blocked spam are never emailed, so a real message held by mistake could go unnoticed. On Mondays we email you if a form held new suspected or blocked spam in the past week. The email gives a count of each, never the messages themselves, and links to your dashboard.
Your form's second address gets the reminder too, if it's verified. Turn the reminder off with Weekly spam email in the form's settings.
Your own rule
In your form's settings, you can add a custom spam filter rule in plain English, for example "Block anything that offers SEO services" or "Block messages that aren't about wedding photography". Jev checks every submission against it as a fifth question.
Bots that fill in every field
Keep the hidden _gotcha field in your form. A bot that fills it in is dropped before
any scoring, and it isn't stored at all.
If Jev can't be reached, or during an unusual flood across the whole service, a simpler local check scores the submission on spam words and link count, so submissions are never lost. Your dashboard says Local check under those scores.