0+
October 12, 2026
September 28, 2026
SpamLens sends each incoming comment, WooCommerce review, pingback and Contact Form 7 submission to Jev — a “System One” decision model by TypeSafe AI that returns calibrated probabilities instead of text — and acts on the answer:
If the service cannot be reached, the comment goes through the normal WordPress flow (or is held, your choice), and it is re-checked automatically within 20 minutes.
Bring your own key. Pick the service that hosts the model for you and paste its API key:
Prices, credits and rate limits are set by the providers and were last checked in September 2026; see their pricing pages.
Other features
spamlens_state, spamlens_post_context, spamlens_questions, spamlens_decision, spamlens_skip_comment, spamlens_providers, spamlens_integrations and more.Page context. Jev judges a comment against the page it was posted on. By default it sees the title, type, tags and categories, the excerpt (or the first ~300 characters) and the page’s headings. “Extended” sends the first ~1,200 characters — about four times as much page text — for sites where spam is on-topic and well written; “Title only” sends no text from the page at all, which is the right choice for paywalled or members-only content. Membership plugins keep paid posts published, so the plugin cannot tell them apart on its own: pick “Title only” or use the spamlens_post_context filter. The text of password-protected, private and unpublished pages is never sent at any level.
Requirements: a key from one of the services above. Comment checks run while the visitor waits (about 1–2 s, 5 s timeout by default).
SpamLens is an independent plugin by VeronaLabs and is not affiliated with, endorsed by or supported by TypeSafe AI, Vercel or OpenRouter. Jev and TypeSafe are marks of TypeSafe AI; they are used only to indicate compatibility.
The settings screen and the comments-screen script in public/ are built (React, Vite, Tailwind CSS) from TypeScript and SCSS sources that are not included in the plugin zip. The sources, the build configuration and the tests are on GitHub: https://github.com/veronalabs/spamlens (folders resources/react, resources/entries and resources/scss). To rebuild: npm ci && npm run build.
This plugin sends data to a third-party service to classify submissions. Nothing is sent until you save an API key, and only the service you select receives data.
What is sent, and when: for every new comment, review, pingback or Contact Form 7 submission that is not skipped by your settings, the plugin sends the submission text (capped at 6,000 characters), the author name and website, details of the page it belongs to — title, type, tags and categories, and, depending on the Page context setting, the excerpt or the first 300 (1,200 on “Extended”) characters of its text and its H2/H3 headings; the text of password-protected, private and unpublished pages is never sent — for replies the first 200 characters of the parent comment, the number and hosts of links in the text, the site name, URL, language and the “About this site” notes you entered, and the author’s number of previously approved comments. Optionally (Settings SpamLens Privacy) the author email address, IP address, browser user agent and referer are included. The Test connection and Calibration tools send the same kind of data on demand.
Services (one of them, as selected in the settings):
https://api.typesafe.ai/v1/systemone — Terms: https://typesafe.ai/terms — Privacy: https://typesafe.ai/privacyhttps://ai-gateway.vercel.sh/typesafe/v1/systemone — Terms: https://vercel.com/legal/terms — Privacy: https://vercel.com/legal/privacy-policyhttps://openrouter.ai/api/alpha/decisions — Terms: https://openrouter.ai/terms — Privacy: https://openrouter.ai/privacyThe response contains probabilities only. The plugin stores those probabilities, the category and the model version as comment meta; it does not store any additional personal data from the check.
Jev is primarily trained on English, where it achieves its best accuracy. Other languages, including CJK scripts, are handled but not equally well. Default thresholds (spam 0.85, hold 0.50) were tuned on English comments. On a non-English site: describe the site and its languages in “About this site”, run the Calibration tool before relying on the Spam folder, watch the false-positive counter, and consider raising the spam threshold so doubtful comments are held rather than spammed.
Providers alias the model id (jev-latest, typesafe-ai/jev, typesafe/jev-latest) to the current release. Every verdict stores the versioned model id that actually answered (for example jev-1.13.0). Once your thresholds are calibrated, pick that version in the Model list (it lists the versions that have answered on your site, per provider) so a model upgrade cannot shift your scores; re-run the Calibration tool when you decide to move to a newer version.
/wp-content/plugins/spamlens/ or install it from the Plugins screen.You can also define the key in wp-config.php: define( 'SPAMLENS_API_KEY', '...' );
It can run alongside it. When another plugin has already flagged a comment as spam, SpamLens skips its own check to save a request.
By default the comment goes through the normal WordPress flow and is re-checked automatically within 20 minutes (moved to Spam only if the re-check says spam). You can choose to hold such comments instead. Persistent authentication or credit problems show an admin notice.
The check runs synchronously and typically takes 1–2 seconds; it is capped by the timeout (5 s by default).
Jev is priced per input token (about $0.042 per million tokens at the time of writing); a comment check uses roughly 500 tokens. The plugin caches identical submissions for 10 minutes and skips moderators, disallowed-list matches and already-flagged comments.
SpamLens is the new name of Jev Guard. When you activate SpamLens it switches Jev Guard off, so comments are not checked twice, and brings over its settings, statistics, the scores stored on each comment and any comments waiting for a re-check. A key defined as JEV_GUARD_API_KEY in wp-config.php keeps working. You can then delete Jev Guard.
Comments (including WooCommerce reviews and pingbacks) and Contact Form 7. Other form plugins can be added through the spamlens_integrations filter.
spamlens_post_context filter. The text of password-protected, private and unpublished pages is never sent.