The #1 Turnstile plugin for WordPress.

Changelog

Version: 1.39.1
Tested Up To: 6.9.4
Requires WP: 4.7

Version 1.39.1 – 1st May 2026

  • ⚙️ FixFixed a potential issue with the Turnstile check on login forms failing in certain cases when it runs multiple checks in the same request.

Version 1.39.0 – 20th April 2026

  • ✨ NewAdded integration for the “SureForms” plugin.
  • ✨ NewAdded integration for the “Sunshine Photo Cart” plugin (#70).
  • 🔨 TweakAdjusted the “Widget Label Text” alignment in some cases so it always shows above the widget.

Version 1.38.4 – 17th April 2026

  • ⚙️ FixFixed Turnstile verification failures on WooCommerce checkout caused by payment gateway plugins (e.g. PayPal Commerce, Amazon Pay, Mollie) consuming the single-use token during pre-checkout AJAX validation requests.
  • ⚙️ FixFixed a fatal error occurring on pages where WooCommerce has been selectively disabled (e.g. via Plugin Organizer).

Version 1.38.3 – 17th April 2026

  • 🔨 TweakMade some tweaks to the WooCommerce checkout duplicate submission check, with a longer expiration for the transient, and improved the auto re-render for Turnstile on payment error in certain cases.
  • 🔨 TweakSmall tweak to the Contact Form 7 integration code with a basic static duplication check.

Version 1.38.2 – 16th April 2026

  • 🔨 TweakAdded the transient based duplicate submission check to WooCommerce checkout, to prevent potential duplicate submission check failing issues since the last update.
  • 🔨 TweakAdded improved support for Gravity Forms multi-page forms, to prevent the duplicate submission check from failing on page 2 and beyond.

Version 1.38.1 – 13th April 2026

  • 🔨 TweakReplaced all PHP session usage with WordPress transients for the duplicate submission checks, to prevent full-page caching from being broken by the PHPSESSID cookie and Cache-Control headers.
  • 🔨 TweakAn invalid-input-secret error from Cloudflare no longer disables Turnstile on all forms. Instead, the admin is notified and a soft re-test prompt is displayed on the settings page.
  • 🔒 SecurityFixed a broken authentication vulnerability on WooCommerce checkout potentially allowing one successful Turnstile submission to be reused for multiple checks. (Reported by David Marín via Patchstack.)

Version 1.38.0 – 6th April 2026

  • ✨ NewAdded a “Refresh Timeout” option to the advanced settings.
  • 🚀 PerfThe Cloudflare health check (used by failover mode) is now cached for 2 minutes, preventing repeated HTTP requests on every form render.
  • 🔨 TweakAdded missing WooCommerce ‘cart_checkout_blocks’ and ‘product_block_editor’ feature compatibility declarations.
  • ⚙️ FixFixed a text domain typo in the WooCommerce Store API integration.
  • ⚙️ FixImproved the WP Discuz integration to properly validate and block submissions when the Turnstile check fails, and now honors the whitelist.
  • ⚙️ FixFixed an issue with Turnstile not loading on Elementor popup forms in some cases.
  • ⚙️ FixThe disable submit option should now work correctly on Elementor forms.
  • ⚙️ FixThe disable submit option should now work correctly on Contact Form 7 forms.
  • ⚙️ FixFix for WooCommerce block checkout sometimes rendering the Turnstile widget twice.
  • ⚙️ FixFixed a “Invalid type for container” JavaScript error with the wpDiscuz integration.
  • ⚙️ FixFixed the right alignment styling for bbpress.
  • ⚙️ FixFixed an issue where Turnstile widgets would repeatedly render when a browser tab is left open for extended periods.
  • ⚙️ FixFixed an issue where CF7 forms would show “One or more fields have an error” when SCT is active but the form doesn’t use the SCT turnstile shortcode.
  • ⚙️ FixFixed an issue with scripts not being enqueued properly in some cases.
  • 🛠️ DevFixed the missing prefix for the add_data_attribute function.
  • 🛠️ DevChanged all include() calls to include_once() to prevent fatal errors if the plugin file is loaded more than once.
  • 🛠️ DevFixed cfturnstile_check() returning false instead of array( ‘success’ => false ) when API keys are not set.
  • 🔒 SecurityMade a few small precautionary security enhancements (missing ABSPATH check, and sanitized REQUEST_URI).

Version 1.37.0 – 12th January 2026

  • Improvement: Improved the Elementor integration to work better in more cases, and with Elementor popups.
  • Improvement: Added an alignment option for the Elementor integration.
  • 🔨 TweakRemoved the “Integration Method” option for Elementor forms. It will now load globally but has an option to choose where scripts are loaded.
  • 🔨 TweakSmall tweaks to the settings page.
  • 🔨 TweakAdded a copy button for the debug log.
  • ⚙️ FixFixed a new issue some websites were experiencing with WooCommerce block checkout not working with Turnstile.
  • ⚙️ FixFixed an error “attempt to read property success on null” showing in some cases.
  • ⚙️ FixFixed the widget label not showing in some cases, on the comments form.
  • ⚙️ FixFixed WooCommerce checkout in some cases not re-rendering Turnstile after payment errors. It should now re-render correctly in all cases to prevent Turnstile errors.
  • ⚙️ FixFixed an issue with Forminator forms when using file upload fields.

Version 1.36.1 – 31st December 2025

  • ⚙️ FixFixed an issue with the disable submit feature not working in some cases.

Version 1.36.0 – 30th December 2025

  • ✨ NewAdded new “Failsafe Mode” option in the advanced settings.
  • ✨ NewAdded the ability to enable and set a custom “widget label text” that is shown above the Turnstile widget.
  • ✨ NewAdded an option to enable “Resource Hint (Preconnect)” in the advanced settings.
  • 🔨 TweakImproved the code for getting the user IP address for the Turnstile verification request. Helps with certain server setups and proxy services.
  • 🔨 TweakChanged Turnstile default render to “auto” instead of “explicit”.
  • 🔨 TweakRemoved the user ID check on WordPress login Turnstile check, so it still runs if the username is invalid.
  • 🔨 TweakAdded “header” info to the debug log entries.
  • ⚙️ FixFixed an issue with Kadence Forms integration in some cases.

Version 1.35.0 – 27th October 2025

  • ✨ NewImprovement to Elementor integration to work better with Elementor element caching.
  • ✨ NewAdded new “Integration Method” for the Elementor integration. The “Load Scripts Globally” option may work better for certain types of caching.
  • 🔨 TweakUpdated the Elementor JS code from using jQuery to vanilla JS.
  • 🔨 TweakAdded an option in the “Advanced Settings” to toggle “Performance Plugin Compatibility”.
  • 🔨 TweakUltimate Member forms now have a unique fixed ID instead of a random one each time.
  • 🔨 TweakFor WooCommerce checkout, added an alternative check for duplicate execution within a single request.
  • 🔨 TweakMade some changes to the settings page, updated the setup guide link, and updated donation/sponsor details.
  • ⚙️ FixFixed an issue with Turnstile being ignored by certain payment methods like PayPal express, in some cases.
  • ⚙️ FixFixed an issue when the “WordPress Login” option is enabled, but “WooCommerce Login” is disabled, the WooCommerce login still gave a verification failed error.

Version 1.34.3 – 16th October 2025

  • ⚙️ FixFixed an issue with some express payment methods. These will now automatically skip the Turnstile check preventing the error message from showing.

Version 1.34.2 – 15th October 2025

  • ⚙️ FixFixed an issue with WooCommerce checkout in some cases.

Version 1.34.1 – 10th October 2025

  • ⚙️ FixFixed an issue with custom login forms causing an error since version 1.34.0.
  • ⚙️ FixFixed an issue with the “Extra Failure Message” when using quotes in the text.

Version 1.34.0 – 9th October 2025

  • ✨ NewAdded ability to define the Site Key and Secret Key in the wp-config.php file, using the constants “CF_TURNSTILE_SITE_KEY” and “CF_TURNSTILE_SECRET_KEY”. This is useful for developers, or if you want to prevent the keys from being changed in the admin settings page.
  • ✨ NewAdded an export/import tool to the settings page, to allow you to easily export your settings and import them on another website.
  • 🔨 TweakUpdated the WooCommerce checkout “cfturnstile_checkout_checked” session to clear in more cases to prevent potential issues.
  • ⚙️ FixAdded better support for smart payment buttons on WooCommerce checkout, to prevent Turnstile from blocking the checkout in some cases.
  • ⚙️ FixFixed an issue with the “Pay for Order” page when using block checkout.
  • ⚙️ FixFixed an issue with the wp_login_form() function integration.

Version 1.33.1 – 5th September 2025

  • OtherRenamed the plugin from “Simple Cloudflare Turnstile” to “Simple CAPTCHA Alternative with Cloudflare Turnstile” due to trademark guidelines.

Version 1.33.0 – 4th September 2025

  • 🔨 TweakAdded some better compatibility with certain performance plugins that may be minifying/delaying JavaScript and causing issues with Turnstile loading.
  • ⚙️ FixPotential fix for some websites experiencing issues with Elementor forms.

Version 1.32.3 – 21st August 2025

  • ⚙️ FixFixed an issue with the CheckoutWC integration.

Version 1.32.2 – 7th August 2025

  • ⚙️ FixFixed an issue with the Turnstile widget on Elementor forms always being forced to dark mode.
  • ⚙️ FixFixed an issue with Turnstile rendering twice on CheckoutWC checkout page in some cases.

Version 1.32.1 – 7th August 2025

  • Improvement: Improved the CheckoutWC integration (#53).
  • 🔨 TweakAdded missing MailPoet JS callback for the disable submit button.
  • ⚙️ FixFixed a error in the woocommerce.js file.

Trusted by 100,000+ WordPress sites!

Download the free plugin today and join thousands of other WordPress sites protecting their forms with Turnstile!


This plugin is not affiliated with or endorsed by Cloudflare in any way. Cloudflare is a registered trademark of Cloudflare, Inc. By using Turnstile you agree the terms of service set out by Cloudflare. The author provides no warranty as to the suitability to any purpose of this software. You agree to use it entirely at your own risk.