{"id":285479,"date":"2026-03-02T06:58:18","date_gmt":"2026-03-02T06:58:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-turnstile-cloudflare-captcha-alternative\/"},"modified":"2026-03-02T10:24:40","modified_gmt":"2026-03-02T10:24:40","slug":"cybernob-turnstile-for-cloudflare","status":"publish","type":"plugin","link":"https:\/\/test.wordpress.org\/plugins\/cybernob-turnstile-for-cloudflare\/","author":23458645,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.2.0","stable_tag":"1.2.0","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Cybernob Turnstile for Cloudflare","header_author":"Aneesh MK","header_description":"Lightweight Cloudflare Turnstile CAPTCHA protection for login, registration, comments and Contact Form 7.","assets_banners_color":"6d5449","last_updated":"2026-03-02 10:24:40","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/cybernob.com\/cloudflare-turnstile\/","header_author_uri":"https:\/\/www.cybernob.com","rating":5,"author_block_rating":0,"active_installs":0,"downloads":204,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"aneeshmk","date":"2026-03-02 10:24:40"}},"upgrade_notice":{"1.2.0":"<p>Major update: live status checker, full i18n, Contact Form 7 guard, multisite uninstall support, and security hardening. Recommended for all users.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3472386,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3472386,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3472386,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3472386,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Settings page with live CAPTCHA status indicator","2":"Turnstile widget displayed on the WordPress login form","3":"Turnstile widget displayed in a Contact Form 7 form"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[362,3882,602,599,214603],"plugin_category":[38,44,54],"plugin_contributors":[256887],"plugin_business_model":[],"class_list":["post-285479","plugin","type-plugin","status-publish","hentry","plugin_tags-captcha","plugin_tags-cloudflare","plugin_tags-login","plugin_tags-spam","plugin_tags-turnstile","plugin_category-authentication","plugin_category-discussion-and-community","plugin_category-security-and-spam-protection","plugin_contributors-aneeshmk","plugin_committers-aneeshmk"],"banners":{"banner":"https:\/\/ps.w.org\/cybernob-turnstile-for-cloudflare\/assets\/banner-772x250.png?rev=3472386","banner_2x":"https:\/\/ps.w.org\/cybernob-turnstile-for-cloudflare\/assets\/banner-1544x500.png?rev=3472386","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/cybernob-turnstile-for-cloudflare\/assets\/icon-128x128.png?rev=3472386","icon_2x":"https:\/\/ps.w.org\/cybernob-turnstile-for-cloudflare\/assets\/icon-256x256.png?rev=3472386","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Cybernob Turnstile for Cloudflare<\/strong> integrates <a href=\"https:\/\/www.cloudflare.com\/products\/turnstile\/\">Cloudflare Turnstile<\/a> into your WordPress site \u2014 the privacy-friendly CAPTCHA that stops bots silently, without making real users solve puzzles.<\/p>\n\n<p>This plugin is an independent, third-party integration and is not affiliated with or endorsed by Cloudflare, Inc.<\/p>\n\n<h4>Protected locations<\/h4>\n\n<ul>\n<li><strong>Login form<\/strong> \u2014 blocks brute-force and credential-stuffing attacks<\/li>\n<li><strong>Registration form<\/strong> \u2014 prevents automated account creation<\/li>\n<li><strong>Comment form<\/strong> \u2014 stops spam comments without Akismet<\/li>\n<li><strong>Contact Form 7<\/strong> \u2014 automatically protects every CF7 form on your site<\/li>\n<\/ul>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Live status checker<\/strong> \u2014 the settings page shows instantly whether your API keys are valid and reachable<\/li>\n<li><strong>Invisible mode<\/strong> \u2014 widget stays hidden; the form auto-submits once the challenge passes silently<\/li>\n<li><strong>Three themes<\/strong> \u2014 Auto (follows system preference), Light, Dark<\/li>\n<li><strong>Two appearance modes<\/strong> \u2014 Always visible, or show on interaction only<\/li>\n<li><strong>Clean uninstall<\/strong> \u2014 all plugin options are removed on deletion, including multisite support<\/li>\n<li><strong>Translation ready<\/strong> \u2014 all strings wrapped in i18n functions with the correct text domain<\/li>\n<li><strong>No bundled libraries<\/strong> \u2014 only Cloudflare's own CDN script is used; nothing extra added to your site<\/li>\n<\/ul>\n\n<h4>Why Turnstile?<\/h4>\n\n<p>Unlike reCAPTCHA, Cloudflare Turnstile does not track users across sites or require Google accounts. It is designed to be GDPR-friendly and invisible to legitimate users by default.<\/p>\n\n<h4>Getting started<\/h4>\n\n<ol>\n<li>Create a free <a href=\"https:\/\/dash.cloudflare.com\/?to=\/:account\/turnstile\">Cloudflare Turnstile<\/a> site widget<\/li>\n<li>Copy your <strong>Site Key<\/strong> and <strong>Secret Key<\/strong><\/li>\n<li>Paste them into <strong>Settings \u2192 Cybernob Turnstile<\/strong> and save<\/li>\n<li>The live status indicator confirms everything is working<\/li>\n<\/ol>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to Cloudflare's Turnstile service to display CAPTCHA challenges and verify user responses.<\/p>\n\n<ul>\n<li><strong>Service:<\/strong> Cloudflare Turnstile<\/li>\n<li><strong>When used:<\/strong> When a protected form is loaded (widget script) or submitted (token verification). Only active after the administrator has entered API keys in the plugin settings.<\/li>\n<li><strong>Data sent:<\/strong> On verification \u2014 the Turnstile response token and the visitor's IP address are sent to Cloudflare's API endpoint.<\/li>\n<li><strong>Endpoint:<\/strong> https:\/\/challenges.cloudflare.com\/turnstile\/v0\/siteverify<\/li>\n<\/ul>\n\n<p><a href=\"https:\/\/www.cloudflare.com\/terms\/\">Cloudflare Terms of Service<\/a> | <a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Cloudflare Privacy Policy<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>cybernob-turnstile-for-cloudflare<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install directly via <strong>Plugins \u2192 Add New<\/strong> in your WordPress admin.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen.<\/li>\n<li>Go to <strong>Settings \u2192 Cybernob Turnstile<\/strong>.<\/li>\n<li>Create a free Turnstile widget at <a href=\"https:\/\/dash.cloudflare.com\/?to=\/:account\/turnstile\">dash.cloudflare.com<\/a> and copy your <strong>Site Key<\/strong> and <strong>Secret Key<\/strong>.<\/li>\n<li>Paste both keys into the settings page and click <strong>Save Settings<\/strong>.<\/li>\n<li>The live status indicator will confirm your CAPTCHA is configured and working correctly.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20cloudflare%20account%3F\"><h3>Do I need a Cloudflare account?<\/h3><\/dt>\n<dd><p>Yes. A free Cloudflare account is required to generate Turnstile API keys. Sign up at <a href=\"https:\/\/www.cloudflare.com\/\">cloudflare.com<\/a>.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20contact%20form%207%3F\"><h3>Does this work with Contact Form 7?<\/h3><\/dt>\n<dd><p>Yes. If Contact Form 7 is installed and active, this plugin automatically injects the Turnstile widget into every CF7 form and validates the token before mail is sent. No changes to your CF7 forms are needed.<\/p><\/dd>\n<dt id=\"does%20this%20work%20with%20woocommerce%3F\"><h3>Does this work with WooCommerce?<\/h3><\/dt>\n<dd><p>WooCommerce integration is not included in the current version. It is planned for a future release.<\/p><\/dd>\n<dt id=\"will%20this%20slow%20down%20my%20site%3F\"><h3>Will this slow down my site?<\/h3><\/dt>\n<dd><p>No. The Cloudflare Turnstile API script is loaded asynchronously and deferred from Cloudflare's global CDN. It has a negligible effect on page load time.<\/p><\/dd>\n<dt id=\"is%20this%20gdpr%20compliant%3F\"><h3>Is this GDPR compliant?<\/h3><\/dt>\n<dd><p>Cloudflare Turnstile is designed to be privacy-preserving. This plugin does not set any cookies itself and only stores your API keys in the WordPress database. Please review <a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">Cloudflare's privacy policy<\/a> for their full data handling practices.<\/p><\/dd>\n<dt id=\"the%20status%20checker%20shows%20%22connection%20failed%22.%20how%20do%20i%20fix%20it%3F\"><h3>The status checker shows \"Connection Failed\". How do I fix it?<\/h3><\/dt>\n<dd><p>Your server cannot reach <code>challenges.cloudflare.com<\/code>. This is typically a firewall or outbound network restriction on your hosting server. Contact your hosting provider and ask them to allow outbound HTTPS connections to Cloudflare's IP ranges.<\/p><\/dd>\n<dt id=\"the%20status%20checker%20shows%20%22invalid%20secret%20key%22.%20what%20does%20that%20mean%3F\"><h3>The status checker shows \"Invalid Secret Key\". What does that mean?<\/h3><\/dt>\n<dd><p>The Secret Key you entered was rejected by Cloudflare. Double-check that you have copied the full key correctly from your <a href=\"https:\/\/dash.cloudflare.com\/?to=\/:account\/turnstile\">Turnstile dashboard<\/a> and that it belongs to the correct site widget.<\/p><\/dd>\n<dt id=\"can%20i%20use%20invisible%20mode%3F\"><h3>Can I use invisible mode?<\/h3><\/dt>\n<dd><p>Yes. Enable <strong>Invisible Mode<\/strong> in the Widget Options section. The widget will be hidden from users and the form will auto-submit once the challenge has passed silently in the background.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added: Live CAPTCHA status checker on the settings page<\/li>\n<li>Added: Inline error notice for failed comment CAPTCHA (replaces wp_die)<\/li>\n<li>Added: Full multisite support in uninstall routine<\/li>\n<li>Added: Contact Form 7 integration with class_exists guard<\/li>\n<li>Improved: All user-facing strings are now translation-ready with correct text domain<\/li>\n<li>Improved: Script and style handles namespaced to avoid conflicts (cnbtsl prefix)<\/li>\n<li>Improved: wp_localize_script used for all JS data \u2014 no PHP inside JS strings<\/li>\n<li>Improved: REMOTE_ADDR sanitized with FILTER_VALIDATE_IP<\/li>\n<li>Improved: Output escaping hardened (wp_kses_post, wp_strip_all_tags)<\/li>\n<li>Removed: Test Mode option<\/li>\n<li>Fixed: Select dropdowns not preserving saved values on reload<\/li>\n<li>Fixed: Checkboxes not saving when unchecked<\/li>\n<li>Fixed: Plugin renamed to Cybernob Turnstile for Cloudflare for trademark compliance<\/li>\n<li>Fixed: All function\/class\/define\/option names updated to 6-character cnbtsl prefix<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fixed invisible auto-submit mode<\/li>\n<li>Fixed appearance option not saving correctly<\/li>\n<li>Improved settings page layout<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Lightweight Cloudflare Turnstile CAPTCHA protection for WordPress login, registration, comments, and Contact Form 7.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/285479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=285479"}],"author":[{"embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aneeshmk"}],"wp:attachment":[{"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=285479"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=285479"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=285479"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=285479"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=285479"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/test.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=285479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}