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

Per-Form Config Tab

Per-Form Config tab — different widget settings per form

Every protected form can have its own theme, size, language, error message, and label text. Useful when your checkout design is different from your login design, or when you want a friendlier copy on one form vs another.

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

Option key: wkcft_per_form_config (nested array, keyed by form slug)

How It Works

  1. You set global values on General Settings and Design Studio
  2. On this tab you can override any of those globals per form
  3. If a form has no per-form entry, it uses the global value
  4. Empty fields always fall back to global

Supported Forms

WooCommerce

Form SlugForm
loginWooCommerce Login
registerWooCommerce Registration
password_resetWooCommerce Lost Password
checkoutWooCommerce Checkout (classic + Blocks)
pay_orderPay for Order
track_orderTrack Order
product_reviewProduct Review

WordPress

Form SlugForm
wp_loginWP Login
wp_registerWP Registration
wp_lost_passwordWP Lost Password
wp_commentWP Comments

Fields Per Form

For each form, these fields are available. All are optional — leave blank to inherit global.

FieldKeyTypeWhat It Overrides
ThemethemeselectGeneral Settings → Theme
SizesizeselectDesign Studio → Size
LanguagelanguageselectDesign Studio → Language
Error Messageerror_messagetextGeneral Settings → Error Message
Label Textlabel_texttext (120 chars)Design Studio → Label Text
Helper Texthelper_texttext (200 chars)Design Studio → Helper Text

UI Layout

The tab renders as a tabbed/accordion interface — one card per supported form.

Each form card shows:

  • Form name and current enabled/disabled state
  • Active override badge (if any fields are set for this form)
  • Collapsible body with the 6 fields
  • Reset this form button (clears overrides for only this form)

Examples

Dark Checkout, Light Login

If your checkout page uses a dark theme but login is light:

checkout form:

  • Theme: dark
  • Size: leave blank (use global)
  • Language: leave blank

login form: all blank (uses global light)

Different Languages Per Form

Storefront is mostly English, but the B2B login form is in French:

wp_login form:

  • Language: fr
  • Error Message: Veuillez compléter la vérification de sécurité.

Other forms: use global auto / default error

Extra Copy on the Checkout Widget

To build extra trust on the high-stakes form:

checkout form:

  • Label Text: 🔒 Secure checkout protected by Cloudflare
  • Helper Text: No puzzles. No tracking. Just bot protection.

Compact Widget on Comments

Comment forms are tight columns.

wp_comment form:

  • Size: compact

Stored Structure

The option wkcft_per_form_config is a nested array:

[
  'login' => [
    'theme' => 'dark',
    'size' => '',
    'language' => '',
    'error_message' => 'Custom error',
    'label_text' => '',
    'helper_text' => '',
  ],
  'checkout' => [
    'theme' => 'dark',
    'label_text' => 'Secure checkout',
    ...
  ],
  // any form with no overrides is simply absent
]

Empty strings always mean "use global".

Reading a Form's Merged Config in Code

If you are building a custom handler, use the utility class:

$config = WKCFT_Per_Form_Config::wkcft_get_entry('checkout');
// $config is the merged (override + defaults) array for the 'checkout' form

Reset Overrides

Each form card has its own Reset this form button. It clears that one form's overrides — every field falls back to global.

A top-level Reset all per-form overrides button on the tab clears every form at once.

Recipes

"Minimal Friction" Checkout Bundle

Bypass CAPTCHA for logged-in shoppers + dark theme + trust label for anonymous buyers.

  1. Conditional Rules tab:
    • Skip logged-in: on
  2. Per-Form Config → checkout card:
    • Theme: dark
    • Label Text: Secure checkout protected by Cloudflare
    • Helper Text: Your card data is encrypted end-to-end.

Multi-Language Site

If your site serves English + Spanish users.

Per-Form Config:

  • checkout → Language: es
  • login → Language: en

Or use auto on Design Studio and let Cloudflare pick by Accept-Language.

Test One Form First

Roll out CAPTCHA on just the login form with a warmer message.

login card:

  • Error Message: Almost there! Please complete the check and try again.
  • Label Text: Quick security check

Related Pages

  • General Settings — Global defaults this overrides
  • Design Studio — Global styling this overrides
  • Supported Forms — Every form and its slug
  • Shortcode — Per-instance overrides via shortcode attributes
Prev
Conditional Rules Tab
Next
Notifications Tab