I recently worked on a white-labelled web design project for another agency. The goal was to rebuild a WordPress site using Elementor to make it more dynamic and maintainable, while still keeping the original look and feel. The hardest part of the job was to recreate these hardcoded quote forms, which usually can be easily accomplished by using one of the WordPress form plugins. What made this particular project more challenging is that the forms need to call a remote API, and not every option, even the paid ones, support webhook. So I had to go shopping and evaluate all the alternatives out there. The information presented in this article is based solely on my own limited experience, and is by no means comprehensive, but I hope it would save you some time if you ever need to decide.
Elementor Form Widget
WordPress Form Plugins
Customizing Elementor’s form widget soon became quite unmanageable, not to mention its webhook capability is limiting. So I moved on to evaluating some of the most popular WordPress form plugins on the market.
A colleague of my suggested Formidable Forms because he’s used it, written plugins for it and said it’s very powerful. So even though it cost more than its competition at the time of writing, I gave it a go anyway. Since our focus was the webhook feature, we created the forms and set up the API calls without paying much attention to the details. Once we confirmed that it’s working, I went back to take care of things such as styling and validation, but this is where we ran into issues.
The first issue was the input mask, the documentations within the software and on Formidable’s website are different. According to the in-app prompt, it should be able to validate Canadian postal codes with a input mask of “a9a 9a9,” but it doesn’t. It only accepts lowercased letters, so a postal code like “A1B 2C3” would not validate, only “a1b 2c3.” I could try to validate using regular expression, but the error message would be too generic that users won’t know what the expected format is.
Another issue I had was that when I deleted a form component by accident, the change is saved without me clicking. the update button. As a result, I had to recreate entire sections multiple times and wasted me a lot of time. Funny enough, when I duplicate a form field that I had not saved, it would not copy over all the settings for the field. So the behaviours are quite inconsistent. After reporting these issues to their support, I was told that none of these are bugs, just documentation error and design of the software. They said they’re always working on improving the product, but wouldn’t commit to fixing any of it in a timely manner. While dealing with their support, I found an additional bug with their dropdown element, at that point I just gave up on the product and asked for a refund. Another thing I didn’t like about this product is that its CSS is over 5,000 lines and 150kb.
I’ve seen people commenting online about how Gravity Forms is the best WordPress form plugin, so I had to give it a try. It was not buggy like Formidable Forms, and its CSS is only half the size of Formidable’s. However, I was disappointed by how unintuitive the interface is. Especially compared to other WordPress form plugins, its UI looks very dated, so I moved on.
My experience with WPForms is quite similar to that of Gravity Forms, but the real deal breaker is that it only supported webhook via Zapier at the time of evaluation. So I moved on again. That being said, they seem to have introduced a webhook add-on since I tested it, which might make it a worthy contender.
I had used Caldera Forms before for another project and it’s proven to be quite reliable. I love how It has conditional email routing built-in without needing any extension. However, the UI is dated and it does not have a webhook add-on, so I couldn’t use it.
Ninja Forms is the most affordable one out of the WordPress Forms I had evaluated, other than the Elementor widget of course, which is free. It is also the most intuitive to use out of all. However, it does have its issues. It’s styling extension doesn’t work very well, and uses inline CSS that is almost impossible to override. Seriously, why would they do that?
And even though we ended up using Ninja Forms for the project, we ran into another issue after launch when our client requested to add a repeater field. A repeater field is basically a field that can be dynamically generated so many times based on user input. For example, a restaurant booking form may ask many guests there are, then proceeds to take each guest’s information. Well, Ninja Forms does not support repeater fields, so their solution to handling situations like this is to duplicate the fields and enable them using conditional logic. This means, if you want to take the names, phone numbers and email addresses for up to 10 guests, you need to create 3 x 10 fields, plus 10 more for labels. And since you can’t group these fields into sections, you have to conditionally enable and disable each of them.
It would be unfair if I don’t emphasize that my experience documented here only reflects a small part of what these WordPress form plugins are capable of, and your mileage may very. My focus was webhook integrability, input validation, user-friendliness and lightweightness. However, what’s really important, and perhaps the most important, is a software vendor’s willingness and responsiveness to fix and improve its product. For that reason, I simply cannot recommend one of the WordPress form plugins listed above. I won’t say which but you can probably figure that out yourself. Choosing the wrong software vendor in IT is often a costly mistake, I hope this review can help you choose the right, or at least avoid the wrong WordPress form plugins for your projects.
If you liked these sorts of comparison, I have other articles that talk about my experience and thoughts on WordPress vs Kentico, and Divi vs Elementor.