Turnstile CAPTCHA For WooCommerceTurnstile CAPTCHA For WooCommerce
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Get Turnstile Keys
    • Onboarding Wizard
  • Settings

    • Settings Overview
    • API Settings
    • General
    • Design Studio
    • Conditional Rules
    • Per-Form Config
    • Notifications
  • Supported Forms

    • All Supported Forms
    • WooCommerce Forms
    • WordPress Forms
    • Third-Party Form Plugins
    • Checkout Blocks
    • Shortcode
  • Protection & Monitoring

    • Analytics Dashboard
    • Rate Limiting
    • Recovery URL
    • Email Digest
    • Webhooks
  • Developer

    • REST API
    • Filters & Hooks
    • Site Health
  • Compare

    • vs reCAPTCHA
    • vs hCaptcha
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
Buy Now
View Demo
  • Getting Started

    • Introduction
    • Quick Start
    • Features
    • Installation
    • First-Time Setup
    • Get Turnstile Keys
    • Onboarding Wizard
  • Settings

    • Settings Overview
    • API Settings
    • General
    • Design Studio
    • Conditional Rules
    • Per-Form Config
    • Notifications
  • Supported Forms

    • All Supported Forms
    • WooCommerce Forms
    • WordPress Forms
    • Third-Party Form Plugins
    • Checkout Blocks
    • Shortcode
  • Protection & Monitoring

    • Analytics Dashboard
    • Rate Limiting
    • Recovery URL
    • Email Digest
    • Webhooks
  • Developer

    • REST API
    • Filters & Hooks
    • Site Health
  • Compare

    • vs reCAPTCHA
    • vs hCaptcha
  • Help

    • Troubleshooting
    • FAQ
    • Glossary
Support
  • Getting Started

    • Introduction
    • Quick Start — Turnstile Live in 5 Minutes
    • Features — Everything the Plugin Can Do
    • Installation — Full Setup Guide
    • First-Time Setup
    • Get Turnstile Keys from Cloudflare
    • Onboarding Wizard
  • Settings

    • Settings Overview — All 9 Tabs
    • API Settings Tab
    • General Settings Tab
    • Design Studio Tab
    • Conditional Rules Tab
    • Per-Form Config Tab
    • Notifications Tab
  • Supported Forms

    • All Supported Forms
    • WooCommerce Forms
    • WordPress Forms
    • Third-Party Form Plugins
    • Checkout Blocks Integration
    • Shortcode — Drop the Widget Anywhere
  • Protection & Monitoring

    • Analytics Dashboard
    • Rate Limiting — Auto-Lockout for Abusive IPs
    • Recovery URL — Unlock a Stuck IP
    • Email Digest
    • Webhooks — Real-Time Alerts on Bot Spikes
  • Developer

    • REST API
    • Filters & Hooks
    • Site Health Integration
  • Compare

    • Turnstile vs Google reCAPTCHA
    • Turnstile vs hCaptcha
  • Help

    • Troubleshooting
    • Frequently Asked Questions
    • Glossary

WooCommerce Forms

WooCommerce tab — toggle Turnstile on checkout, login, register, and more

Every native WooCommerce form that accepts user input is supported. Enable each one with a checkbox.

Settings tab: wp-admin/admin.php?page=wkcft-settings&tab=wkcft_woocommerce

Forms Covered

Account Forms

FormEnable OptionWhere Used
Loginwkcft_login/my-account/ login form, shortcode [woocommerce_my_account]
Registrationwkcft_register/my-account/ register form
Lost Passwordwkcft_password_reset/my-account/lost-password/
Track Orderwkcft_track_order/track-order/ page, shortcode [woocommerce_order_tracking]
Product Reviewwkcft_product_reviewSingle product page, review submission

Checkout Forms

FormEnable OptionWhere Used
Classic Checkoutwkcft_block_checkout[woocommerce_checkout] shortcode
Blocks Checkoutwkcft_block_checkoutWooCommerce Blocks Checkout page
Pay for Orderwkcft_pay_to_orderOrder payment page (/checkout/order-pay/)

Full Blocks coverage on Checkout Blocks.

Checkout Options

Widget Position (Classic Checkout)

  • Option key: wkcft_checkout_pos
  • Values:
ValuePosition
beforepayAbove payment methods
afterpayBelow payment methods
beforesubmitDirectly above the Place Order button
beforebillingAbove billing fields
afterbillingBelow billing fields

Most stores pick beforesubmit — visitors see the widget right before they click Place Order.

Widget Position (Blocks Checkout)

  • Option key: wkcft_block_checkout_pos
  • Values:
ValuePosition
beforepayAbove payment methods block
afterpayBelow payment methods block
beforesubmitAbove the Place Order button
carttotalsInside the cart totals summary

Logged-In Only

  • Option key: wkcft_logged_in_only
  • Type: Checkbox

When on, the checkout widget appears ONLY for authenticated users. Guest checkouts skip it entirely.

Use when your shop is members-only or when you use Skip logged-in reversed — only logged-in users see CAPTCHA.

Guest Only

  • Option key: wkcft_checkout_guest_only
  • Type: Checkbox

Opposite — widget only appears for guests (not logged in). Logged-in customers never see it.

Pick one, not both

If you tick both Logged-in only and Guest only, the widget renders for everyone (mutually exclusive inputs cancel out). If you tick neither, also renders for everyone. Pick exactly one if you want selective behavior.

Pay-for-Order Options

Enable

  • Option key: wkcft_pay_to_order
  • Type: Checkbox

The pay-for-order page loads when WooCommerce redirects a customer to complete a pending payment (e.g., after abandoned checkout, or an admin-generated order with email invoice).

Position

  • Option key: wkcft_pay_to_order_pos
  • Values:
ValuePosition
beforepayAbove payment methods
afterpayBelow payment methods

Enable Steps

  1. WooCommerce → Turnstile Settings → WooCommerce tab
  2. Tick each form you want
  3. Pick checkout position if enabling checkout
  4. Pick guest / logged-in visibility if needed
  5. Save Changes
  6. Flush caching plugin
  7. Test in incognito

Test Plan

Open each form in a private window and check:

Login

  1. Visit /my-account/
  2. Widget appears below password field
  3. Enter wrong credentials — error + widget persists
  4. Enter right credentials — login works (widget passed silently)

Register

  1. Visit /my-account/ (register form below login)
  2. Widget below registration fields
  3. Fill and submit — account created

Lost Password

  1. Click "Lost your password?" on login
  2. Widget below email field
  3. Submit — password reset email sent

Checkout (classic)

  1. Add product to cart, go to /checkout/
  2. Widget appears in your configured position
  3. Complete order — order placed

Checkout (Blocks)

  1. Enable Blocks checkout on a new page (see Checkout Blocks)
  2. Add product, go to Blocks checkout
  3. Widget appears in configured position (React-rendered)
  4. Place order — succeeds

Pay for Order

  1. Create a pending order in admin
  2. Email "pay for order" link to yourself
  3. Open link — widget renders above Place Order
  4. Complete payment

Track Order

  1. Visit your [woocommerce_order_tracking] page
  2. Widget below the order ID/email fields
  3. Submit — order details load

Product Review

  1. Open a product with reviews enabled
  2. Scroll to review form
  3. Widget above submit button
  4. Submit — review posted (pending approval)

HPOS Compatibility

The plugin declares HPOS (Custom Order Tables) compatibility. All form handlers work with HPOS enabled — no code changes needed.

Confirm via WooCommerce → Settings → Advanced → Features → Custom Order Tables.

Dependency Behavior

If WooCommerce is not active:

  • This tab renders in read-only mode
  • An inline activation link appears at the top
  • Checkboxes are disabled

You cannot toggle any WC form if WooCommerce itself is inactive (WP 6.5+ Requires Plugins header enforces the dependency).

Troubleshooting

ProblemFix
Widget missing on checkoutClassic or Blocks? Classic needs wkcft_checkout_pos set. Blocks auto-injects — flush cache
Widget in wrong order on checkoutChange wkcft_checkout_pos or wkcft_block_checkout_pos
Login widget overlaps password fieldTheme-specific CSS issue. Open DevTools and add .wkcft-turnstile { margin-top: 10px }
Track order widget does not showSome themes override the tracking page template. Use shortcode [wkcft-turnstile] inside the template
Product review widget missingTheme overrides comment_form — use shortcode in your theme's review template

Related Pages

  • Checkout Blocks — Modern block-based checkout
  • WordPress Forms — Core WP forms
  • Per-Form Config — Different theme/message per form
  • Shortcode — For non-WC forms
Prev
All Supported Forms
Next
WordPress Forms