Why Keenforms?

Why the web needs one more form builder

(because form builder + rules engines = control over order of operations)


For the record no one has been asking for a Form Builder with a Rules Engine. Do you have any idea just how many form builders there are out there already? (answer: a lot) Most people don’t even know what a rules engine is, why would they want one?

What I do know though is a lot of people who use, or have tried to use, a form builder to do things that are seemingly just beyond the limits of the standard features available. All I’m saying is a lot of form builders fall a little short. Sometimes more than just a little.

I’ve heard it enough times from friends and co-workers, and I’ve talked to enough designers and developers to know that it’s not just my own experience. It probably wouldn’t be so maddening were it not for the fact that these apps get so tantalizingly close, with those last couple of requests being just out of reach. While those requests may not be standard, that doesn’t mean they’re impossible to deliver. Over the years, with some handwritten Javascript and CSS, I’ve managed to hack a few of these form builders in order to get them to do what they were never designed to do.

While the hacks I’ve performed vary, I’d have to say that most of the hacking would be unnecessary if there was a form builder that had just a few more features as standard. The most common hacks would fall under the category of conditional calculations and conditional validations. Control over the order of operations would go a long way to make these hacks unnecessary. I’m not sure how many users of form builders are aware of how these kinds of features would have helped them meet their requirements, but I do know that having conditional calculations, conditional validations, and control over the order operations as standard features might have saved all of us a lot of effort.

Lots of form builders have the ability to calculate values. Many of them have the ability to conditionally hide an input or an option. Some do basic validation, i.e. this number must be greater than zero, or that text field must be less than 100 characters. However none of the form builders I’ve seen possess the ability to do calculations or validations conditionally.

While hacking can help a bit, the worst part is no form builder gives you control over the order of operations. Order of operations is critical to doing math. Many times when calculating a value it may not be possible to get that value in a single formula or operation. Calculating that value will require multiple steps. That makes getting your math correct impossible unless you know each calcuation is done in the right order. With no control the order of operations, there is no way you can use form builder to allow customers to generate their own quotes and estimates accurately. For many of us, that's a deal breaker.

Another issue is that while hacking a form with custom javascript and CSS is fine for a one off project that never changes, that's rarely the case. Once I hacked a form to help a coworker, and she was thrilled about the results. Her comments afterwards however really stuck with me;

"This is awesome, thanks so much! So how can we do this ourselves next time?"

The answer is simple - you don't. The only way to do this is again is have me hack the next form, and all the other forms every time you want to send a new survey out. I'm not always available to do this, and hiring a programmer to do this every time is expensive and time consuming.

I have to believe that the product teams for many of these form builders have heard requests for these kinds of features, and have ultimately decided against it. There’s a pretty good reason why - those features are actually quite difficult to deliver.

Rules Engines and B2B Form Builders

The form builders that I have seen that are capable of allowing an input’s value to be a calculation make that functionality possible by having the administrator plug in a formula tied to that particular input. The problem is you can only do a simple single formula per input, i.e.

[quantity] X [unit price] = [total price]

Doing anything conditional with these form builders is at best difficult, and more likely impossible. The reason why it's so difficult is the form input and the formula for calculating that value are too tightly coupled. The best way to deliver these kind of features is to separate the inputs from the logic for dynamic behavior, i.e. setting a value or making an input conditionally valid.

One of the many reasons I find the limitations of using a Business-to-Consumer (B2C) form builder so frustrating is that I’ve used applications that can meet those requests with no hacking required. There is an entire segment of the software business that produces Business-To-Business (B2B) form builders that are capable of so much more. I know this because I used to work for one of those companies. These B2B applications use what is known as a rules engine in order to make this kind of functionality possible.

Unless you work in the software industry though, you may not be familiar with what a rules engine is. There’s a good chance though that you have used a rules engine without knowing it. If you’ve put a setting on your email to send a response when you are out of the office, that is a rules engine sending out the automatic response. When you add a reminder for an event on a calendar app, a rules engine is what sends out the reminder. Even a few B2C form builders have what amounts to a very limited set of actions available - you can hide an input or an option conditionally (based on the value of another input), or you can redirect a user after submission conditionally.

A Rules Engine is a software paradigm that allows users to create and edit application logic, or rules, without having to modify the source code for that application. A rule is made up of 2 parts - a CONDITION and an ACTION. A condition is something that is evaluated to either true or false, and the action is what happens when that condition is true. In most cases for keenforms the conditions are tied to the value of an input, while an action might be setting the value of this input, or hiding an input or option, or marking an input invalid so that the form cannot be submitted. A rules engine also provides control over the order of operations for calculating values.

Building a rules engine attached to a form builder makes so many more things possible. I’ve always felt that if someone could capture just a fraction of the functionality available in one of these B2B form builders, and make it accessible to non technical users inside of a typical B2C form builder, that it would make for a really exciting idea. At some point I wanted to at least try to see if I could pull it off. That effort to build this thing started more than 3 years ago.

There is a fairly well cited quote from Reid Hoffman of Linkedin “If you're not embarrassed by the first version of your product, you've launched too late.” There are a lot of things I wanted to get done for the initial release, but I’ve been writing code for quite some time, so I decided to release it and add more features as time goes on. Right now there’s no date picker (it’s coming). It doesn’t have a radio button (we’re working on it!). You can’t change the background color of a form without writing CSS. It’s a work in progress.

However right now keenforms does something that no B2C form builder does (at least none that I've seen); Calculations and Validations conditionally, using a built in Rules Engine, no code required. Because keenforms was built differently it has so much potential to be more than just a form builder. I’m really excited about it, and eager to share it. One of the awesome things about keenforms is you can try it for free. If you've ever felt limited by your current form builder I believe keenforms can be your new favorite thing on the web.

TL;DR - A Rules Engine makes a Form Builder capable of doing so much more, things like conditional calculations and conditional validations, and greater control over order of operations.


Form Builder:
Software that allows a user to create forms available via the web. A form being a web page that allows user to enter and submit data online, where that data is captured and saved on a server. Here's an incomplete list of other form builders available on the web.
Rules Engine:
A type of software that allows administrators to create logic without modifying source code. Rules consist of conditions (true or false evaluations) and actions (what happens when rule is evaluated to true). From Martin Fowler;
"A rules engine is all about providing an alternative computational model.
...This is a set of (production) rules, each of which has a condition and an action - simplistically you can think of it as a bunch of if-then statements.
...A good way of thinking of it is that the system runs through all the rules, picks the ones for which the condition is true, and then evaluates the corresponding actions."

SaaS Form Builders

An ever growing list of all the form builders available, in alphabetical order