TrustSig Security
Stops bots, spam and brute-force attacks on your WordPress forms. No CAPTCHA, no account, no keys. Activate it and you are protected.
Solid choice
TrustSig Security is a solid plugin choice in 2026, with a few things worth checking first. It runs on 30+ sites, is rated 5/5 and was last updated 4 days ago, and scores 69/100 on our health check.
- Actively developed — last update 4 days ago
- Small user base (30+ active installs)
- Very few reviews so far
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where TrustSig Security stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| bot protection | >100 |
| Brute Force | >100 |
| security | #99 |
| spam | >100 |
| woocommerce | >100 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 5 from 1 reviews
About TrustSig Security
From the official readme · v1.8.6Description
TrustSig Security stops scripted bots and brute-force attacks on WordPress forms and API endpoints. There are no puzzles to solve and no “I am not a robot” checkboxes to tick, and you do not have to sign up for anything before it starts working. What exactly gets checked depends on the protection mode you pick, described below.
Why TrustSig
- Covers the forms that matter out of the box: login, registration, comments, password reset, WooCommerce checkout, BuddyPress signup, Easy Digital Downloads, Elementor Pro forms, WPForms (including the Mesmerize and Materialis contact form), Contact Form 7, SureForms, plus any custom form via a shortcode.
- Locks out brute-force login attempts after repeated failures.
- Real visitors never notice it. The browser check runs on its own and finishes in about a second, with no images to click.
- Three protection modes: Monitor logs and never blocks, Challenge (the default) shows a short interstitial and retries, Enforce blocks outright.
- Nothing to configure. Activate the plugin and protection is live. The anonymous free tier needs no account.
- Works with caching plugins, WPML, multisite and most themes, because forms are signed server-side with a per-site secret.
- A developer API: the PHP helper trustsig_verify(), the REST endpoint /wp-json/trustsig/v1/verify, and filters and actions for custom forms.
- An optional guard for admin-ajax and the REST API on sites that need it.
- An optional scan-on-submit mode that runs the browser check only when a visitor actually uses a form, not on every page view.
- GPLv2, fully open source.
How it works
TrustSig loads a small browser SDK, signs every rendered form with a per-site secret, and checks submissions against the TrustSig Edge service. A real visitor passes the check in about a second without doing anything. A scripted client that never runs JavaScript produces no token and gets stopped.
When a request arrives without a valid token, the plugin does not quietly wave it through. Depending on the mode, it either serves a short “please wait” page that re-verifies the browser and then continues the original request, or blocks it.
No account and no API keys are needed; the anonymous free tier is the default. Connecting a TrustSig dashboard account is optional and only adds analytics and higher limits.
Protection modes
- Monitor: verify and log only, never block. Good for a safe rollout. Upgrades also pin existing sites here, so behaviour never changes silently on update.
- Challenge (default for new installs): a missing or invalid token triggers the interstitial, which then continues or blocks.
- Enforce: a missing or invalid token is blocked immediately.
What it protects
Browser forms are covered automatically, no code needed:
- WordPress core: login, registration, comments, lost and reset password
- WooCommerce: login, registration, checkout, pay order, lost password
- BuddyPress: registration
- Easy Digital Downloads: login, registration
- Elementor Pro forms
- WPForms: contact and other forms, on by default, both AJAX and non-AJAX submissions (this also covers the Mesmerize and Materialis contact section)
- Contact Form 7: feedback submissions, on by default, guarded on the REST endpoint CF7 submits to and on plain POSTs of the form to a page URL
- SureForms: form submissions, on by default, guarded on the REST submit-form endpoint
- Anything else via the site-wide “protect all forms” option, the [trustsig_form] shortcode, or a hidden trustsig-response input
On top of that there is an optional brute-force lockout for repeated failed logins, an opt-in guard for admin-ajax and the REST API, and a verification API for developers.
For developers
- PHP: trustsig_verify( array( ‘token’ => $t, ‘action’ => ‘my_form’ ) ) returns pass, fail or challenge. Filters: trustsig_pre_verify, trustsig_result. Action: trustsig_blocked.
- REST: POST /wp-json/trustsig/v1/verify with { “token”: “…” }.
Known limitations
- XML-RPC (xmlrpc.php) is deliberately out of scope and is not verified. If your site does not use XML-RPC, disable it separately.
- admin-ajax and the REST API are only guarded when you enable that in Settings. This is on purpose, so third-party integrations do not break the moment you install the plugin.
- File uploads and AJAX submissions cannot show the interstitial. In Challenge or Enforce mode a missing token on those is blocked. It is never silently allowed.
External services
This plugin relies on the TrustSig Edge service to decide whether a request comes from a human or an automated client. That verdict cannot be produced locally, so the service is required for the plugin to do its job.
Service provider: TrustSig, https://trustsig.eu
Remote script loaded in the browser: https://edge.trustsig.eu/trustsig.js loads on pages that contain a protected form, on the login screen, and on the verification interstitial. It runs the non-interactive browser check and produces a verification token.
Data sent from the visitor’s browser or your server to https://edge.trustsig.eu/verify:
- the TrustSig verification token generated by the SDK in the visitor’s browser;
- your site’s host name (for example example.com) on the anonymous free tier, or the secret key you entered if you connect a dashboard account;
- as with any HTTPS request, the visitor’s IP address and standard request metadata such as the user agent are visible to the service.
When data is sent: when the SDK loads on a protected page, when a protected form is submitted, and once per browser when the optional verified-session cookie is bootstrapped.
Data stored locally on your site: TrustSig writes a verification log to your own WordPress database (custom tables) with visitor IP addresses, the action attempted, and the verdict. This log is not sent to TrustSig, and you can clear it at any time under Settings, TrustSig, Tools.
By installing and activating this plugin you, the site administrator, consent to this data being sent to TrustSig so that requests can be verified. Inform your own visitors as your local privacy obligations require.
- Terms of Service: https://trustsig.eu/terms-of-service/
- Privacy Policy: https://trustsig.eu/privacy
Installation
- Upload the trustsig-security folder to /wp-content/plugins/, or install the plugin from the WordPress Plugins screen.
- Activate it from the Plugins menu.
- Open Settings, TrustSig. Protection is already active; there is nothing you have to configure.
- Optionally, enter your Site Key and Secret Key to link a TrustSig dashboard account for analytics and higher limits.
Frequently asked questions
Do I need an account or API keys?
No. The plugin protects your forms the moment you activate it, on the anonymous free tier. An account only adds analytics and higher limits.
What data leaves my site?
A browser verification token, your site host name (or your secret key if you connect an account), and standard HTTPS request metadata go to the TrustSig Edge service. The “External services” section above has the full disclosure, including links to the Terms of Service and Privacy Policy.
Will this block real visitors?
In Challenge mode, the default, a visitor whose token is missing sees a brief “please wait” page that re-verifies the browser and then continues the original request on its own. Monitor mode never blocks. Enforce mode is the strictest and can block visitors who have JavaScript disabled.
Does it work with caching plugins?
Yes. Forms are signed with a server-issued nonce and the SDK fills in the token client-side, so cached pages stay protected.
Does the check run on every page view?
By default, yes: the check runs once when a protected page loads, so the token is ready before any submission. If you would rather not verify visitors who never touch a form, turn on “Scan on submit only” under Advanced, Scan timing. The check then runs at the first interaction with a form, or at submission, in which case the submission is held for about a second, verified, and continued automatically. Protection is the same either way.
How do I temporarily bypass protection if I lock myself out?
Settings, TrustSig, Tools shows a private recovery URL that bypasses all checks once. You can also add your IP to the whitelist.
Is the plugin GPL?
Yes, GPLv2 or later.
Changelog
Closes a Contact Form 7 and WPForms bypass that let spam through without being checked, and fixes a settings bug that could switch on every optional protection and block anonymous visitors. Recommended for everyone.
1.8.5
- Fixed Contact Form 7 and WPForms spam getting through unchecked. Both plugins also accept a plain POST of the form to any page URL (CF7 via the
_wpcf7field, WPForms viawpforms[id]) and process it before the page loads. TrustSig only guarded their REST and AJAX endpoints, so bots that replay the rendered HTML form were never checked and never logged. These submissions are now verified on the same Contact Form 7 and WPForms toggles. - Fixed saving settings from AJAX switching every optional setting on. Adding or removing an allowed domain, dismissing the upgrade notice, regenerating the recovery key or importing a settings file re-ran the settings sanitizer over the stored values, which treated any present flag as enabled, including ones stored as off. That enabled protect all forms, AJAX and REST protection, scan on submit and the verified session, which blocked anonymous AJAX and REST traffic while logged-in users were exempt. Sites that show the full pattern are reset to the defaults once on upgrade, with an admin notice.
- Fixed AJAX form plugins submitting without a token. The bootstrap now holds the submission before Contact Form 7, WPForms or WooCommerce serialize the form, and releases it through the plugin’s own submit handler once the token is in place. Previously the plugin had already sent its request with an empty token, and the bootstrap then fired a second, full-page submission that also dropped the clicked button’s name, which WooCommerce login and registration need.
- A token older than four minutes is now refreshed before submission in the default mode as well, so a visitor who spends a while filling in a form is not rejected for an expired token.
- Each submission now carries its own token. After an AJAX form is sent (for example a Contact Form 7 form that came back with a validation error), the next interaction with the form starts a new scan, so the resubmission does not reuse the spent token.
- Pages served from a full-page cache no longer carry an expired form nonce. The bootstrap requests a fresh one when the cached value is close to expiry.
- Blocked Contact Form 7 submissions now show the form’s own spam message instead of a generic error.
- Search forms and other GET forms no longer get TrustSig fields appended to their URLs.
- An admin notice now warns when the site’s domain is missing from the allowed domains list, which turns protection off.
- The verification log is pruned after 30 days (filter
trustsig_log_retention_days). The total count on the dashboard still includes pruned rows.
1.8.4
- Tested against WordPress 7.0.
1.8.3
- Fixed protection silently going dead on sites that combine scripts. WP-Optimize’s minify merges the verification SDK into a local bundle and emits it as a bare tag without the configuration attributes, so the SDK was present but never initialized and every scan hung: real visitors submitted with no token and were sent to the interstitial. The bootstrap now detects that state and re-initializes the SDK in place instead of injecting a second copy, and both TrustSig scripts are excluded from WP-Optimize’s minify.
1.8.1
- “Scan on submit only” now really loads nothing on a page view. It previously skipped the scan but still loaded the verification script, which booted its sandbox, fetched its WASM and ran a key handshake on every page, so the mode saved almost nothing. The script tag is no longer printed at all in this mode: a visitor who never touches a form causes no request to TrustSig, and the preconnect hint is dropped to a DNS hint so no connection is opened either. The bootstrap injects the script at the first form interaction. The trade-off is that the first submission on a page now waits for a cold start, so the window a held submission is given was widened from 8 to 12 seconds.
- Fixed “Scan on submit only” never producing a token. The bootstrap called the verification SDK through the wrong global name, which went unnoticed in the default mode because the SDK scans by itself there. With scan-on-submit on, that call is the only thing that starts a scan, so nothing ever ran: every submission was released without a token and routed to the verification interstitial.
- Fixed the verification interstitial loading the SDK with a stored Site Key even when “Use a TrustSig.eu project” was off. Every other page correctly used the anonymous key, so a leftover or autofilled key only broke the interstitial: the browser check requested a project the edge does not know, no token could be produced, and the visitor was blocked once the challenge retries ran out.
- A degraded scan result is no longer submitted or verified as if it were a token. It cannot be decoded, so verification returned no verdict and the request took the ambiguous path, re-challenging until the visitor was blocked. It is now treated as no token, which is what the nonce-gated fallback (including the edge-unreachable fail-open) is there to handle.
- In scan-on-submit mode a token older than four minutes is now discarded and re-verified when a form is submitted, instead of posting a token the edge would reject as expired.
1.8.0
- New optional scan timing mode, “Scan on submit only” (Advanced, Scan timing; off by default). Normally the SDK verifies the browser once per page load so the token is ready before any submission. With this mode on, the SDK loads with auto-scan disabled and nothing runs for visitors who never touch a form. The check starts at the first interaction inside a form, and a submission that arrives before a token exists is held, verified, then continued automatically. The held submission is re-dispatched through requestSubmit, so form plugins’ own submit handlers (WPForms, Contact Form 7, Elementor) still run and the clicked button’s name and value are preserved. The interaction trigger also covers fetch-driven flows such as the WooCommerce block checkout, which never fire a native submit event. Background verified-session re-scans are skipped in this mode, and the challenge interstitial still verifies immediately. Default behaviour is unchanged.
1.7.3
- Fixed an availability gap: an outage of the TrustSig edge or its CDN no longer takes your forms down with it. When the edge is unreachable the verification SDK cannot load, so a real visitor submits without a token, and that path used to challenge or block regardless of your “Edge unreachable” fallback setting. The fallback (allow by default) is now honoured whenever the request carries a valid server-signed nonce, which proves the form was really rendered, and a short cached health probe confirms the edge is down. A request with neither token nor nonce is a blind bot and still gets no grace. Monitor mode still never blocks.
- Security: the settings export no longer contains secret material. The site signing secret (which signs page nonces and verified-session cookies), the recovery key and the dashboard Secret Key are stripped from the downloaded file. Import still works, and each site keeps its own secrets.
- The WooCommerce block checkout (the modern default, submitted over the Store API at POST /wc/store/v1/checkout) is now covered by the existing WooCommerce Checkout toggle. Previously only the classic shortcode checkout was protected, and enabling the broad REST guard could block guest checkout. The token travels with the checkout request through the SDK’s “Token on XHR/fetch” option, which is on by default. Only anonymous submissions without a token are challenged or blocked; logged-in customers and authenticated requests pass straight through.
- Brute-force lockout now counts genuine failed logins (wrong username or password from a browser that passed the bot check) instead of only TrustSig’s own token blocks, so it actually defends against password guessing and credential stuffing. TrustSig blocks are not double-counted. Only active when brute-force protection is enabled, which is off by default.
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best TrustSig Security alternatives
All bot protection plugins →FAQ
TrustSig Security: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Sep 26, 2026
Is TrustSig Security free?
Yes. TrustSig Security is free to download and use from the official WordPress.org plugin directory.
Is TrustSig Security safe to use in 2026?
TrustSig Security is a solid plugin choice in 2026, with a few things worth checking first. It runs on 30+ sites, is rated 5/5 and was last updated 4 days ago, and scores 69/100 on our health check.
How many websites use TrustSig Security?
TrustSig Security is active on 30+ WordPress websites and has been downloaded 1,028 times since it launched in May 2026. It was downloaded 218 times in the last 30 days.
Does TrustSig Security work with WordPress 7.1?
TrustSig Security is officially tested up to WordPress 7.0.6, while the latest release is 7.1.2. It may still work, but try it on a staging site first.
What PHP version does TrustSig Security need?
TrustSig Security requires PHP 7.2 or higher. Most hosts run PHP 8.x today, so it works on any modern WordPress hosting.
When was TrustSig Security last updated?
The latest version, 1.8.6, was released on September 22, 2026 (4 days ago).
Who makes TrustSig Security?
TrustSig Security is developed and maintained by trustsig.
What are the best alternatives to TrustSig Security?
The most popular alternatives to TrustSig Security are ClickCease Click Fraud Prot… (10K+ installs), CHEQ Essentials (600+ installs) and Checkout Shield for WooComm… (300+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card


