Form Settings

  • JNext lesson
  • KPrevious lesson
  • FSearch lessons
  • EscClear search

Each form has its own settings accessible from the Settings tab when editing a form. These control how the form behaves after submission, what fields are validated, and more.

Save Submissions

Setting: save_submissions
Default: Enabled

When enabled, every form submission is saved to the wp_cf_submissions database table. You can view and manage submissions from the Submissions tab on the form edit screen.

Disabling this means submissions are only processed through form actions (email, webhooks, etc.) but are not stored in the database. The Submissions tab will not appear for forms with this setting disabled.

Hide Form After Success

Setting: hide_after_success
Default: Disabled

When enabled, the form is hidden after a successful submission and only the success message is displayed. This prevents users from submitting the form again without refreshing the page.

Redirect URL

Setting: redirect_url
Default: Empty (no redirect)

If set, the user is redirected to this URL after a successful submission instead of seeing the success message. The redirect URL supports data variables, so you can pass submission data in the URL:

https://example.com/thank-you/?name=[name]&email=[email]

The redirect URL can be filtered using cf_form_redirect_url.

Required Fields

Setting: required_fields
Default: Empty

A comma-separated list of field names that must be filled in before the form can be submitted. If any required field is empty, the form returns the required_field_missing error message.

Example: name, email, message

The validation checks that the value is not empty. For arrays (like checkbox groups), it checks that at least one option is selected.

Email Validation Fields

Setting: email_fields
Default: Empty

A comma-separated list of field names that should contain valid email addresses. If a non-empty value in one of these fields is not a valid email, the form returns the invalid_email error message.

Example: email, secondary_email

Empty values pass validation since the field may be optional. Combine with required fields to enforce both presence and format.

Enable Nonce Verification

Setting: enable_nonce (global setting)
Default: Disabled

This is a global setting, not a per-form setting. When enabled, all forms include a WordPress nonce for CSRF protection. Forms submitted with an expired or missing nonce will be rejected.

Note: Enabling nonces can cause issues with page caching, since nonce values expire and cached pages may serve stale nonces.

Enable Math CAPTCHA

Setting: enable_math_captcha
Default: Disabled

Adds a simple math problem (like “12 + 8 = ?”) to the form that users must solve before submitting. This is a lightweight, no-external-service-required spam protection method. See the Spam Protection chapter for details.

Enable reCAPTCHA

Setting: enable_recaptcha
Default: Disabled

Enables Google reCAPTCHA v3 for the form. Requires site key and secret key to be configured in global settings. See the Spam Protection chapter for details.

Enable Turnstile

Setting: enable_turnstile
Default: Disabled

Enables Cloudflare Turnstile for the form. Requires site key and secret key to be configured in global settings. See the Spam Protection chapter for details.

Custom CSS

Setting: custom_css
Default: Empty

CSS rules applied to this specific form. The CSS is automatically scoped to .cf-form-{ID}, so you only need to write the property declarations:

max-width: 600px;
padding: 20px;
background: #f9f9f9;

Custom JavaScript

Setting: custom_js
Default: Empty

JavaScript that runs when the form loads. The code executes inside a closure with access to the form DOM element:

form.querySelector('[name="date"]').valueAsDate = new Date();

Default Settings Filter

All default form settings can be modified using the cf_form_default_settings filter. Extensions use this to register their own settings:

add_filter( 'cf_form_default_settings', function( $settings ) {
    $settings['my_custom_setting'] = 'default_value';
    return $settings;
} );