Jacob Rockowitz: Webform module now supports variants, which can be used for A/B tests, segmentation, and personalization

Problem/Motivation

To perform A/B testing, segmentation, and the personalization of a webform, a site builder needs to create a variant of the form that can be triggered based on certain contexts, which can be as simple as a custom URL.

A webform variant might alter a form’s labels, descriptions, and even its confirmation page. A webform variant could be used to create an A/B test to confirm if a tweak or improvement to a form’s user experience increases the rate at which the user completes a form. A basic A/B test would randomly load two variants, allow a defined number of users to complete the form, and then review the results to determine which variant had the highest completion rate. The most successful variant can then be permanently applied to the webform.

A webform variant can also be used to create a personalized webform based on a user’s demographics. For example, webform’s available inputs, labels, and even options could be altered based on a user’s gender, age, locale, employer, etc. Even subtle tweaks can improve a form’s user experience – for example, removing inappropriate disease options or inputs based on a user’s gender can simplify an appointment request form.

Solution/Resolution

Right now, the one out-of-box solution is to create multiple instances of a webform and route users to the appropriate webform. The biggest issue with having multiple webforms is that, in doing so, it collects two different datasets. Ideally, all submission data should go into the same results table to be analyzed with just the user experience changing. You can also use conditional logic to tweak hide/show elements and disable/enable certain behaviors.

Both approaches have limitations and lack some organization. For A/B testing, it is possible to alter a form via JavaScript. Still, this approach is limited to front-end tweaks – for example, you can’t change an element’s server-side conditional logic using…Read More