Comparing WordPress form conditional logic in 2021

Form Conditional Logic is Available Everywhere

If you read the post I wrote the other day about choosing the right WordPress form plugin, you'll recall that I created a grid with all the features to compare. One of the features I compared was form conditional logic. Every plugin I compared had it marked as a “Y” – as in, it's available from all of them.

But it's not that simple, because while it's available in different ways, and in different places, it's not equally available with every form plugin, and it's not easy to use on every plugin.

So today I spent about four hours creating the same form with 7 different form plugins to compare the conditional logic features available in each.

The Form Plugins I Tested

In today's test, I used the following 7 form plugins, as you can see from this screenshot.

Here they are in alphabetical order.

  1. Fluent Forms Pro
  2. Formidable Forms Pro
  3. Gravity Forms
  4. Happyforms
  5. Ninja Forms w/ the conditional logic Premium Extension
  6. WPForms
  7. WS Form Pro

My Conditional Logic Form

I created the same form 7 times. The example was a lead generation form for an agency that does eCommerce (new stores and upgrades), websites (design and development), and some speed/optimization work.

You can see what it looked like from this screenshot (using Fluent Forms).

I know this isn't a post reviewing the design of the form, but I will highlight three observations as I was building and placing these forms on my sandbox site.

  1. Not all forms have a “Name” field. Some forms do, like Gravity Forms, Fluent Forms, Ninja Forms and WP Forms. But the others didn't. I find it strange that these days I would create a single line text input for a name. They all have phone number and email fields. So I was surprised that some didn't have a dedicated name field.
  2. Not all forms have appropriate contrast & spacing out of the box. Happyforms, WPForms and WS Form all create a distinction between the field (white background) and the rest of the form. The others create forms that require extra CSS to really help them stand out. And only Gravity Forms, WPForms and Ninja Forms have spacing and bolded field labels to help a person quickly grasp where to fill stuff in. So from a native design output, WPForms clearly wins the prize.
  3. Not all forms fill the space given to them. When you place a form in a container or column, you'd hope they fill it out and create a nice structured layout. That wasn't the case. Sometimes it's because a form builder sets the email field to be “medium” and the paragraph text area to be “large.” But the result is a ragged edge alignment that isn't as pleasing to the eye as full width fields. Fluent had clean lines, as did Formidable, Happyforms, Ninja Forms and WS Form.

These observations have nothing to do with the form conditional logic, but when you create the same form 7 times, you do see some things pretty clearly.

Wait, I'm not done. One other observation.

WPForms, Ninja Forms and Fluent Forms all had interfaces that were very easy to use – even though all the plugins had many features that were similar and you used many of them in the exact same way. What made those three stand out?

The font size and spacing layout in the Admin interface. The other form plugins often had smaller text, making things hard to read, or didn't have enough white space between controls. Again, making it hard to read.

If you're building software for young people, that may work. But for everyone else, I feel confident telling plugin developers that we would appreciate larger fonts and cleaner interfaces.

Using Conditional Logic for Post-Form Routing

In this form, I created two kinds of conditional logic.

The first was the page routing, which some of these plugins call confirmations. It's the post-submit logic.

Here's what I'm going for.

  • If they say they want a new store, and they pick any budget except < $5,000, route them to one page (Yeah, a New Store!)
  • If they want to improve an existing store, no matter timing or budget, route them to a different thank you page (We're eCommerce experts)
  • If they want web development or design, route them to a different page (We've Built Thousands like this) – but only if they're timeline isn't urgent while their budget is under $5,000.
  • Any budget or timeline on speed improvements sends them to a different page (speed is everything).
  • And if they choose urgent and under $5,000 for anything other than speed improvements, route them to “we have some bad news”

Initially I was worried about doing this with WPForms, because their default confirmation doesn't have any “enable conditional logic” checkboxes. But once you add more than a default confirmation, it appears and works wonderfully.

It looks very similar if you're doing the same thing with Gravity Forms.

What you should notice is that Gravity Forms, WPForms, Ninja Forms, and Fluent Forms all support not only the positive “is” but also the negative, “is not” options to their conditional logic.

Happyforms only has “is” operators. And that's hard because you have to do a lot more work, and create a lot more routing entries if you can't use “is not”.

I've named multiple form plugins that handle the post-submit page routing well:

  1. Fluent Forms – Check
  2. Gravity Forms – Check
  3. WPForms – Check
  4. Ninja Forms – Check
  5. Happyforms – Partial Check

But what about the others?

I'm positive that WS Form has post-routing conditonal logic. But it wasn't straightforward at all. First I had to go into the Actions area and create all the redirections as their own actions. Then I had to go back to the Conditional Logic area and create the logic mappings based on field selections.

And they add another click because I have to mark the question, then row-selected, then which row (the answer). It was too much work to make work, so I stopped. It's there. But it's not easy.

And in Formidable Forms Pro, the conditional logic is there too, but it's in a harder to reach spot than the five above, and it wasn't straightforward on how I would have to do it. In their docs, they give me an example, but it's only for a single condition. And it's not point and click – I'm writing structured if/then statements.

So on this first use of conditional logic, I'd stick with any of the first four in the list above.

What I didn't need to test anymore…

There are three kinds of conditional logic I normally look for:

  1. Post-submission Routing
  2. Displaying questions conditionally
  3. Email Routing

The last time I looked at WordPress form plugins and conditional logic, I spent a lot of time on the field displays (#2). Today I'm happy to say that all of these plugins support that feature relatively well.

It works like this:

  • You create a field with several options.
  • Then you create another field.
  • Then use conditional logic to only show (or hide) field two based on field one.

Every form plugin I looked at does this, so I'm not writing about it anymore (or taking those screenshots).

It's also why it wasn't part of my current example.

Sending Email Notifications Conditionally

The second use of conditional logic that I was testing was email notifications. Here's what I was trying to do:

  1. Look at the budget option they selected.
  2. If it's the top two budgets, send it to my VIP person.
  3. If it's the next one, send it to my services team.
  4. If they tell me they don't know what budget, send it to sales.
  5. And if they pick the lowest budget, pass it to my team that does referrals.

Here's what it looks like with Fluent Forms.

And here it is in Gravity Forms.

Both make it really easy to dynamically route the form submissions to different people based on a form selection.

They use a shortcut called “configure routing” to make it easy to do based on a single field value. Not everyone has that, but these guys do.

And while Happyforms gives me logic groups, it's only the positive (not the negative, as I mentioned before).

Ninja Forms and WPForms don't have the shortcut but do support routing logic with complexity.

Here's what I mean – you create separate entries for the routing logic.

This means you could route an email to someone based on two or three fields. So if I wanted to send a form submission to my “rush” team, based on a customer's timeline, any project except speed optimization, and any budget except the lowest, I can do that easily. This is Ninja Forms.

Fluent Forms, Gravity Forms, WPForms, Formidable Forms and Ninja Forms support this. Happyforms only supports it partially.

And WS Form supports it in a more complex manner (but also can do a lot of other things – like run JavaScript, run a WordPress hook, or more.)

How do you choose?

Ok, there's not enough difference to tell you that one is incredible and the rest aren't. The comparison highlights some nuances but I'm not sure this will sway someone from choosing an alternative to their already favorite form plugin.

That said, here's where I tell you my top four. First let me tell you why.

  1. Conditional logic is complex enough. A form plugin shouldn't make it harder or more complex.
  2. Also, if I have to go digging into your docs to figure out any kind of conditional routing, I'm likely going to go with something else.
  3. Lastly I want power. Still easy, but I want that power.

So with that said, if I were choosing today, I would go with one of these four (alpha order):

You'll be in good hands with any of these four. Good luck creating complex forms with conditional logic!