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

General Settings Tab

General Settings tab — theme, load mode, warn-only, submit-button behavior

Controls how the widget looks and behaves on every form by default. Can be overridden per-form on the Per-Form Config tab.

URL: wp-admin/admin.php?page=wkcft-settings&tab=wkcft_general

Fields

Error Message

  • Option key: wkcft_error_message
  • Type: Text
  • Default: Please complete the security check.
  • Where shown: Displayed to the user when CAPTCHA validation fails

Keep it short and action-oriented. Examples:

  • Please complete the security check. (default)
  • Please verify you are not a robot.
  • Security check failed. Please try again.

Per-form override

Want different messages per form? Set them on Per-Form Config.

Warn Only (Test Mode)

  • Option key: wkcft_warn_only
  • Type: Checkbox
  • Default: Off

When on, the plugin logs validation results but does not block failed submissions. Useful for:

  • Staging environments where you want to test without locking out your QA team
  • Soft-launching on a live site — see analytics data first, block later
  • Debugging a false-positive issue without angry customers

Remember to turn this OFF

Leaving warn-only on means real bots get through. Turn off once you have confirmed the plugin works correctly.

Theme

  • Option key: wkcft_theme
  • Type: Select
  • Default: light
OptionWidget Appearance
lightLight background, dark text (matches most WordPress themes)
darkDark background, light text (matches dark-mode themes)
autoFollows the visitor's browser/system preference

Appearance (Visibility Mode)

  • Option key: wkcft_appearance
  • Type: Select
  • Default: always
OptionWhat Visitors See
alwaysWidget always visible. Best for clarity — visitors see proof of protection
interaction-onlyWidget only appears when the visitor interacts with the page (mousemove/touch). Invisible otherwise
executeWidget is invisible. Cloudflare silently validates in the background. Only shows a challenge if Cloudflare detects bot-like behavior

Picking an appearance mode

  • always for trust-building (shows visitors the form is protected)
  • execute for zero friction on high-trust forms (existing customers)
  • interaction-only as a middle ground — invisible until someone actually interacts

Disable Submit Button

  • Option key: wkcft_disable_submit_button
  • Type: Checkbox
  • Default: Off

When on, the form's submit button stays disabled until the Turnstile widget reports "passed". This prevents visitors from clicking submit before the token is ready.

Trade-off: slightly slower perceived UX on the first submit attempt, but zero chance of the "missing-input-response" error.

Load Mode

  • Option key: wkcft_load_mode
  • Type: Select
  • Default: instant
OptionBehavior
instantCloudflare API loads with the page — widget shows immediately
lazyAPI loads after a delay (see Lazy Delay below) — lighter initial page load

Use lazy on pages where the form is below the fold or on sites with heavy Core Web Vitals focus.

Lazy Delay

  • Option key: wkcft_lazy_delay
  • Type: Number (milliseconds)
  • Range: 1000 - 5000
  • Default: 2000
  • Only active when: Load Mode = lazy

How long to wait after page load before the Cloudflare API script loads.

Common picks:

  • 1000 — 1s delay, barely noticeable
  • 2000 — 2s, balanced (default)
  • 5000 — 5s, only loads when visitor is engaged

If the visitor scrolls to the form or interacts with the page before the timer fires, the script loads immediately (no wait).

Complete Field Reference

FieldOption KeyTypeDefault
Error Messagewkcft_error_messagetextPlease complete the security check.
Warn Onlywkcft_warn_onlyyes/nono
Themewkcft_themeselectlight
Appearancewkcft_appearanceselectalways
Disable Submit Buttonwkcft_disable_submit_buttonyes/nono
Load Modewkcft_load_modeselectinstant
Lazy Delaywkcft_lazy_delaynumber (ms)2000

How These Interact With Per-Form Config

Any value you set here is the global default. The Per-Form Config tab lets you override:

  • Theme
  • Size
  • Language
  • Error message

Per-form on forms like login, register, checkout, comments, etc. Every form that does NOT have an override uses the value from this tab.

Recommendations

For Most Stores

FieldPick
Error MessageDefault
Warn OnlyOff
Themelight (or auto if you have dark mode)
Appearancealways
Disable Submit ButtonOff
Load Modeinstant

For Sites With Heavy Page Weight

FieldPick
Load Modelazy
Lazy Delay2000
Appearanceinteraction-only

For Staging / Soft Launch

FieldPick
Warn OnlyOn
Appearancealways (so you can see it is rendering)

Related Pages

  • API Settings — Tab 1
  • Design Studio — Visual customization
  • Per-Form Config — Override per form
  • Shortcode — Attributes that can override these per-instance
Prev
API Settings Tab
Next
Design Studio Tab