WordPress Plugins
Free Tools
Claude Skills
Resources
Pricing Support My Account Cart
Support / FormForge / Conditional Logic

Conditional Logic: Show and Hide FieldsPRO

Conditional logic lets you show or hide any field based on the values a visitor has entered so far. Ask a question, branch on the answer, only surface follow-up fields when they’re relevant. This page teaches you the exact steps to enable conditional logic on a field, the nine operators available, when to combine them with All (AND) vs Any (OR) grouping, three common patterns, and the troubleshooting checklist for rules that never fire.

Shortest path to a working rule

Click the field you want to conditionally reveal → open the Conditional tab → check Enable Conditional Logic → leave the sentence as Show this field if All of the following match → pick the trigger field, operator, and value → click Save Changes and then Save Form. Test with a real submission.

How conditional logic works

Every field in FormForge Pro can be assigned one conditional logic rule set. The rule set has three parts: an action (Show or Hide the field), a combinator (All / Any), and one or more conditions. Each condition points at another field in the same form, picks an operator, and supplies a comparison value.

Rules run in two places, using the same operator semantics:

Because the two evaluations are consistent, what the visitor saw and interacted with matches what the server records. There is no drift between client experience and server truth.

Enable conditional logic on a field

Open the form in the builder

Go to FormForge > All Forms and click the form name to open the drag-and-drop builder.

Click the field you want to conditionally show or hide

Click any field on the canvas. Its settings panel appears in the sidebar with four tabs across the top: General, Appearance, Advanced, Logic.

Open the Logic tab

Click Logic. If the form has only one field so far, you’ll see a note saying “Add more fields to the form to enable conditional logic”, because conditional logic needs at least one other field to reference. Add the trigger field first, then come back.

Check “Enable Conditional Logic”

The rule builder appears below the checkbox. It reads as a plain-English sentence: Show this field if All of the following match: followed by one condition row.

Pick Show or Hide

Change the first dropdown to Show or Hide. Show is the default. Pick based on what feels natural for the pattern you have in mind: “show this only when X” vs “hide this whenever Y”. Both are equally valid.

Pick the combinator: All or Any

All means every condition below must match (AND). Any means at least one condition matches (OR). If you have only one condition, All and Any behave identically.

Fill in the first condition row

The condition row has three parts: (1) the trigger field dropdown, listing every other field in the form; (2) the operator dropdown (see the operator reference below); (3) the value input. Fill in all three.

Add more conditions if needed

Click Add Condition to append another row. Repeat for as many conditions as you need. They’re joined by whatever combinator you picked in step 6 (All / Any).

Save the field settings, then save the form

Click Save Changes at the bottom of the field settings panel, then click Save Form at the top right of the builder. Both saves are required, so field-level changes without a form save don’t persist.

The nine operators

Every conditional logic rule uses exactly one operator to compare the trigger field’s current value against your comparison value. Text operators are case-insensitive. Numeric operators compare values as numbers; if the trigger field’s value is not numeric (or is blank), the condition simply fails to match, so it does not error, it just doesn’t fire.

Operator Meaning Example
is Trigger value is exactly equal to your value Country is “United States”
is not Trigger value is anything except your value Plan is not “Free”
greater than Trigger value is numerically greater than your value Quantity greater than 10
less than Trigger value is numerically less than your value Age less than 18
contains Trigger value contains your value as a substring (case-insensitive) Message contains “refund”
starts with Trigger value starts with your value (case-insensitive) Postal code starts with “9”
ends with Trigger value ends with your value (case-insensitive) Email ends with “@company.com”
is empty Trigger value is blank Referral source is empty
is not empty Trigger value is anything other than blank Coupon code is not empty
Choice-field values vs choice-field labels

For dropdowns, radio buttons, and checkboxes, the trigger value your rule compares against is the choice’s Value, not its Label. Open the trigger field in the builder and look at the Choices editor: each row has a Label column (what the visitor sees) and a Value column (what your rule sees). If your form displays “United States” but the choice’s Value is US, then your rule must be is US, not is United States.

Show vs Hide, All vs Any

Every rule set combines one action (Show or Hide) with one combinator (All or Any). Four combinations exist, and each has a natural use case.

Show if All match

Field appears only when every single condition is true. Use this when you have multiple tightly-coupled prerequisites: Show “Company Tax ID” if Business Type is “LLC” AND Country is “United States”. If either condition fails, the field stays hidden.

Show if Any match

Field appears when at least one condition is true. Use this when several different paths should reveal the same field: Show “Wheelchair Accessibility Notes” if Booking Type is “Mobility Assist” OR Party Size is greater than 6. Either trigger reveals the follow-up.

Hide if All match

Field is hidden only when every condition is true. Use this when you have a field that’s normally visible, but should disappear under a specific tight combination: Hide “Shipping Address” if Delivery Method is “Pickup” AND Payment is “In-Store”. Any deviation and the field comes back.

Hide if Any match

Field is hidden as soon as any single condition is true. Use this to opt out of a section: Hide “Marketing Preferences” if Consent Given is “No” OR Region is “EU”. Either trigger removes the field entirely.

Pick the version that reads naturally out loud

Show + All and Hide + Any are logically each other’s inverse in many cases. Same behavior, different phrasing. Pick whichever is clearer to a future maintainer reading the form settings. “Show this only when both X and Y” usually reads more naturally as Show + All; “Hide this whenever X or Y” reads more naturally as Hide + Any. Both work.

Three common patterns

Pattern 1: Reveal a follow-up textarea only when the visitor picks “Other”

Classic form-builder pattern. The dropdown offers a fixed list plus “Other”, and picking “Other” reveals a free-text field so the visitor can specify.

Setup:

  • Add a dropdown field, e.g. How did you hear about us?, with choices Google / Twitter / Friend / Other.
  • Add a paragraph text field, e.g. Please specify, right after it.
  • Click the paragraph text field → Logic tab → Enable Conditional Logic.

The rule:

Show this field if All of the following match:
How did you hear about us?  is  Other

Result: The paragraph text field is hidden by default. As soon as the visitor selects “Other” from the dropdown, the paragraph text appears and they can type their answer.

Pattern 2: Radio branch with different follow-up questions per choice

The visitor picks a top-level path, and the form reveals only the follow-up questions relevant to that path.

Setup:

  • Add a radio field, e.g. What type of inquiry?, with choices Sales / Support / Partnership.
  • Add three separate follow-up fields, one for each path (a company-size dropdown for Sales, a ticket-number field for Support, a website URL for Partnership).
  • On each follow-up field, enable Conditional Logic with a single condition targeting the radio field.

The rule (on the Sales follow-up):

Show this field if All of the following match:
What type of inquiry?  is  Sales

Result: All three follow-up fields are hidden by default. Picking a radio choice reveals only the matching follow-up. Changing the radio choice swaps which follow-up is visible.

Pattern 3: Numeric threshold that surfaces a warning when quantity crosses a limit

Great for order forms, party-size fields, and any numeric input where crossing a threshold should trigger a heads-up.

Setup:

  • Add a number field, e.g. Number of guests.
  • Add an HTML block, e.g. “Parties of 10 or more require a $50 deposit. We’ll follow up by email.”.
  • On the HTML block, enable Conditional Logic.

The rule:

Show this field if All of the following match:
Number of guests  greater than  9

Result: The warning stays hidden until the visitor types 10 or more into the number field. It disappears again if they drop back to 9 or lower. Same pattern works with less than for “must be at least X” messaging.

Important gotchas

Don’t mark a conditionally-hidden field as required

If a field has the Required checkbox turned on AND conditional logic hides it, submissions will fail with a “This field is required” error even though the visitor never sees the field. The server’s validator enforces the required rule on all fields regardless of visibility state. Two workarounds: (1) uncheck Required on any field you plan to conditionally hide, or (2) use two variants of the same question, one required and shown only in the case where you need the answer, one optional and shown otherwise, with mirrored conditional rules.

Choice values, not choice labels

For every choice-based field (dropdown, radio, checkbox), your rule compares against the Value column of the choice, not the Label. If your dropdown displays “United States” but the underlying Value is US, your rule must read is US. Open the trigger field’s Choices editor to see both columns side by side.

Chained conditional logic works, but hidden fields keep their value

Field C can be conditional on field B, which is itself conditional on field A. Chains of any depth work reliably. But note: hiding field B does not clear its value. If the visitor typed something into B before A hid it, B still carries that value, and C’s rule will fire based on it. This is usually fine, but if you have a chain where hidden fields shouldn’t contribute to downstream rules, keep the target field’s rule tight (for example, gate on a specific value rather than is not empty).

Checkboxes have their own value convention

For single-checkbox fields (like a Terms & Conditions consent), use is checked to fire when the box is checked, or is empty to fire when it’s unchecked. For multi-choice checkbox fields, each choice has its own Value in the Choices editor, and rules compare against the specific choice values selected.

Troubleshooting: my rule doesn’t fire

Work through this checklist in order. Stop at the first step that reveals the problem.

Confirm the field was saved

Field-level changes require both Save Changes in the field settings panel and Save Form at the top right of the builder. Skipping either step means your rule was never persisted. Reopen the field, verify the Logic tab still shows Enable Conditional Logic checked, and re-save both if not.

Check the choice Value, not the choice Label

Open the trigger field’s Choices editor. For every row, note whether the Label and Value columns match. If they differ (label “United States”, value US), your rule must reference the Value. Update the rule’s value input to match the Value column exactly, including capitalization for the is and is not operators.

Test on a Private page, not the builder preview

The builder preview does not run the same JavaScript stack as the front-end. Embed the form on a real page (set the page’s Visibility to Private so it’s admin-only), view it in a logged-out incognito window, and interact with it there. This is the source of truth for whether conditional logic works.

Open the browser console

Right-click the form → Inspect → Console tab. Interact with the trigger field. If you see JavaScript errors (red text), a plugin conflict or theme conflict is preventing FormForge’s client-side rule evaluator from running. Deactivate other plugins one at a time until the console goes clean, then reactivate the culprit and report it to support.

Check the trigger field’s type

Conditional logic supports fields whose value is submitted with the form: text, email, number, dropdown, radio, checkbox, textarea, and similar. It does not support HTML blocks, Section headings, or Page Break fields as triggers, because those don’t carry a value. If your trigger is one of those, replace it with a real field.

Check for a required-field lockout

If your form saves the trigger field’s value but never actually reveals the conditional target, the target might be marked Required and the browser’s HTML5 validation may be blocking form focus before the conditional evaluator runs. Uncheck Required on any conditionally-hidden field. See the gotcha above for the safe pattern.

Clear caches

If you’ve edited the form and the front-end still shows the old rule, a page cache is serving stale HTML with an old rule payload embedded. Purge your caching plugin (WP Rocket, W3 Total Cache, LiteSpeed Cache, ForgeCache), purge any CDN edge cache (Cloudflare), then hard-refresh the front-end page (Ctrl+Shift+R / Cmd+Shift+R). Also flush your browser cache while you’re at it.

Verify the trigger field is on the same form and same page

Rules can only reference fields on the same form. If your form uses multi-page (Page Break fields), the trigger field must be on a page the visitor has already advanced through, otherwise its value is empty at evaluation time and the rule fails to match. Move the trigger field to an earlier page, or restructure so the trigger and target are on the same page.

Reproduce in a support ticket

If none of the above resolves it, gather: (a) a screenshot of the field’s Logic tab in the builder, (b) a screenshot of the trigger field’s Choices editor showing Label and Value columns, (c) the URL of the Private page where you embedded the form, (d) the exact steps that don’t work, and (e) any browser console errors. Send those to support and we can dig in.

FAQ

How do I show a form field only when another field has a specific value?

In the form builder, click the field you want to conditionally show, open the Conditional tab, and check Enable Conditional Logic. Leave the sentence as Show this field if All of the following match, then pick the trigger field, the operator (is), and the value you want to match. Save the field settings and save the form. Test on a real page.

Do conditional-logic rules run on the client, the server, or both?

Both. The client-side JavaScript hides and shows fields as the visitor types so the form feels responsive. When the form is submitted, the server re-evaluates the same rules to decide which field values are actually recorded. The client and server use identical operator semantics, so what the visitor saw and interacted with matches what the server records.

Can I hide a required field with conditional logic?

Not safely in current versions. If a field is marked required and conditional logic hides it, the server-side validator still enforces the required rule on the empty value and rejects the submission. Either uncheck Required on any field you plan to conditionally hide, or use two separate fields (one required and shown when needed, one optional and shown otherwise) with mirrored conditional rules.

Why does my rule never fire?

The most common cause is a mismatch between the value you typed in the rule and the actual submitted value of the trigger field. For dropdowns, radios, and checkboxes, the rule compares against the choice Value (the internal identifier), not the choice Label the visitor sees. Open the trigger field in the builder, check the Value column of its choices, and match that string exactly in your rule. Full checklist is in the troubleshooting section.

Can I chain conditional logic across multiple fields?

Yes. Field C can be configured to show only when field B has a specific value, and field B itself can be configured to show only when field A has a specific value. Each field evaluates its own rules independently against the current form state, so chains of any depth work. One thing to know: hiding a field does not clear its value. If the visitor typed something into B and then A hid it, B still carries that value, and C’s rule will fire based on it. Gate C’s rule tightly (on a specific value) rather than loosely (on is not empty) if that behavior isn’t what you want.

What operators are available for conditional logic rules?

Nine operators: is, is not, greater than, less than, contains, starts with, ends with, is empty, is not empty. Numeric operators (greater than, less than) compare values as numbers; if the trigger value is not numeric or is blank, the condition simply fails to match. Text operators (contains, starts with, ends with) are case-insensitive. See the operator reference table for exact semantics and examples.

Can I mix And and Or logic in the same rule set?

Not directly. A single field’s rule set uses one combinator for all conditions (All / And, or Any / Or). To express something like (A AND B) OR (C AND D), split the target into two variants of the same field, and give each variant its own three-condition All rule. Whichever variant matches gets shown; the other stays hidden.