Virtual Happy Hour this month, Jun 28, we'll be getting a sneak preview at our soon to launch SaaS CMS!

Try our conversational search powered by Generative AI!

Allan Thraen
Nov 26, 2015
(2 votes)

Introducing Episerver Forms

Last week we made the first public beta release of the new Forms available as an add-on on the Episerver Nuget Feed and this Monday we put out the first update to it. Episerver Forms is a long awaited feature that for more years than I care to remember has been on the top 10 most requested editor features. Sure, we've had its predecessor, xforms, for ages – but it has a number of limitations that we have tried to address in this new add-on that takes a completely different architectural approach to allowing editors to easily create forms on their web site – whether those forms are for surveys, contact requests, newsletter signups, job applications, dynamic profile building – or anything else you can imagine. Below I'll try to outline some of the new major advantages to the new Forms.

Block based forms

A key difference to the older xforms is that Episerver Forms is based based on a concept that most v7+ users understand and love: Blocks.

Forms are blocks of content – and can be dragged and dropped anywhere you want to use them. Treating them as content gives us a wide range of much desired advantages right off the bat:

  • Support for multi-language forms and translations (works great with the Episerver Languages add-on)
  • Versioning of forms
  • Permissions
  • Personalization (both for the entire form, but even down to a form elements level)
  • Multiple renderings for various display channels and display modes
  • Can be included in Projects to easily have their publish flow managed with other content
  • Constructed using drag & drop
  • Easy to mix and match with other content
  • Reusable throughout the site
  • Easy to customize renderings and easy to extend with additional functionality in a custom implementation (explained below)

However – the block system also has some limitations that are not ideal for forms – for instance the number of clicks needed to create and edit new form elements is something we are working to bring down. In this first release we have added a widget that helps you quite a lot – it lists all the form element block types and allows you to create them simply by dragging the type onto the form content area.



Forms can either consist of one single step – as we are used to with xforms, but you can also start adding 'Form Step' dividers to your form which turns it into a multi-step wizard. This is really helpful when building surveys, quiz's and other bigger forms as visitors tends to get scared away from massive single page forms. When forms are used in multi-step there is pagination buttons as well as a progress bar to always help the visitor understand how much is left.

If needed, you can even place each form step on a different 'host' page to place additional motivational content around it that assists the visitor in filling it out.

Dynamically adapting

As you build larger forms in multiple steps you often find that a selection on one step might alter which questions you want to ask in a later step. With Episerver Forms you can now add rules to each step that revisits answered made in earlier steps to determine if it should be shown or not. A typical use case would be a feedback form that only asks "Explain why the experience wasn't to your satisfaction" only if you have rated the experience below satisfaction in an earlier step.


Being based on blocks and POCO models anyone using Forms in an implementation can extend them with additional form elements that work exactly as you want them to. We have gone to great lengths to ensure there is a decent selection OOTB, but adding for instance dropdown lists with dynamic options based on domain knowledge / connectivity will usually always improve a form.

On top of that there are many other ways to extend the forms – for instance you can add your own custom data you already know about the visitor to the submitted data (like CRM data, or lead source information), you can extend the validators available and so on. It's just blocks – and they can all be inherited and added to the list.


Don't like the way a form looks OOTB? No problem. Since it's all just blocks, it's easy for you now to just replace the rendering – and even add multiple renderings if you want the form to be rendered differently in different contexts (like mobile).

Our OOTB solution does try to follow best HTML5 practice and is thoroughly marked with classes, so in many cases adjusting your CSS will also do the trick.



The key purpose of a form is to learn stuff from your visitors – but what use is that if you can't use the data in a reasonable way. A lot of our work with the new Forms has gone into giving you as a form owner or a developer as many options as possible to connect forms with other systems. For instance you can…

  • Extend the data in each form submission using hidden fields with already known data about the current user. Out of the box we include stuff like geolocation and browser, but it can easily be extended with stuff like lead tracking ids from your favorite Marketing Automation system.
  • Extend the options in an OOTB dropdown list with stuff from any xml feed. For instance you could let users pick their favorite blog post from an RSS feed that's constantly changing.
  • Pull submitted form data using our OAuth based extension to the ServiceAPI.
  • Push submitted form data out through webhooks to any system that supports it (like Zapier).
  • Push submitted form data out through customized, templated emails that any editor can set up as many as they like of for each form.
  • Download submitted form data as CSV, XML or JSON for easy parsing and use.
  • Use any of the many .NET events we make available to hook into any step of the form submission process.

On top of this we are currently working on bridging many of our existing Marketing Automation Connectors to work with the new Forms, so form data gets automatically tracked in the systems, just like Forms can be used to dynamically built profiles of visitors.

Needless to say we of course also offer a full interface to store and browse the submitted form data in Episervers UI.

A lot of goodies OOTB

Finally, we have included a bunch of smaller, yet often requested things out of the box – like different types of Form elements. A good example is the File Upload option that allows a visitor to upload a file for you, the Image Choice that allows the visitor to make a selection simply by clicking one of several images you provide – and finally we of course offer a captcha by default to avoid all the spam.

Get started today!

Install Episerver Forms from the Nuget feed through Visual Studio to a site near you.

Learn more about Forms at



Nov 26, 2015


Nov 26, 2015 02:15 PM


I tried creating a form and I am able to submit the form. But no data is visible under Form Submissions. Is there any configuration I need for the data to be saved? Or any other rookie mistake I might have done?

Nov 26, 2015 03:21 PM

Hi Malin,

Maybe this helps:

Add this code in your  element: @Html.RequiredClientResources(RenderingTags.Header)

And this at the end of the body tag: @Html.RequiredClientResources(RenderingTags.Footer)

Markiemark Nov 26, 2015 04:01 PM

Hi Malin,

Did you perhaps create the form on the homepage of the website? 
There is a small bug where the correct language cannot be resolved on the homepage. The form is stored in the database without the correct language. 
The Form Submission page is not able to retrieve that form data.

Try creating it on another page and it will work.

Did you specify a culture at the "Manage websites" in admin mode? 
If not, specifying a culture will also solve the problem.

Good luck!

Nov 27, 2015 09:03 AM


I did create the form on the home page. Newly created site... only page I had... :)

Moved it to a new page and it's working! Thanks!


Daniel Forsbakk
Daniel Forsbakk Nov 27, 2015 10:13 AM

Hello. The Nuget package seems to include all versions, even though we only want the last version. These versions are included:,,,

Is this necessary?

Nov 30, 2015 03:11 AM

Hi, they are not necessary. It seems those versions are cached in build machine. We will remove in the next build. Thank you for the info.

Arve Systad
Arve Systad Jan 18, 2016 12:27 PM

Is there some form of roadmap somewhere, so we can see what the coming development plans for these forms are?

Thach Jan 22, 2016 09:53 AM

Hi, I described a few update of upcoming features for Episerver Forms here.

In general, next release will have

  • Changed, bugfixes, features base on feedback
  • Write Samples for implementing new Element, from basic to most advanced
  • Working without JS

Next milestone will be

  • Connect with Marketing Automation tool
  • Changed, bugfixes, features base on feedback

Syed Shah
Syed Shah Feb 11, 2016 04:10 PM


This is very cool. When are we expecting the "Connect with Marketing Automation tool" to be rolled out? 

I saw a note in the update 99 that Episerver forms are officialy released. Do we still install nuget after its release?



Neil F
Neil F May 17, 2016 11:32 AM

Hi, Just a feature suggestion for a future release.  It would be nice if the nuget packages could be split so that just the DLLs could be made available in 1 package and the front-end Modules in another.   As they are all bundled together this means that my library projects and unit test projects unecessarily include the Modules folder with all the front-end content.  I probably only need the EPiServer.Forms dll.



James Wilkinson
James Wilkinson Jan 4, 2017 04:47 PM


Regarding the multistep form, when clicking the "Next" button, the form should jump to the top of the page but doesn't. Is this a known issue?

Jonathan Roberts
Jonathan Roberts Jun 22, 2017 12:31 PM


I have a bespoke form in 7.5 and it works well in english but it never posts when in a different langauge for example: works in English - notice there is no language path in the URL as en is the default language set in the CMS

but does not hit the Controller - it just refreshes the page.

Any ideas?

Thanks for your help,


Kamal Kamal
Kamal Kamal Mar 20, 2018 04:37 PM

Hi every one , 

I have a question please , I have created a form that's similar to the one from this tutorial but now i dont know how to get the submitted data 

in my case i want to display the submitted data in an other page .

Thank you 


Please login to comment.
Latest blogs
New Series: Building a .NET Core headless site on Optimizely Graph and SaaS CMS

Welcome to this new multi-post series where you can follow along as I indulge in yet another crazy experiment: Can we make our beloved Alloy site r...

Allan Thraen | Jun 14, 2024 | Syndicated blog

Inspect In Index is finally back

EPiCode.InspectInIndex was released 9 years ago . The Search and Navigation addon is now finally upgraded to support Optimizely CMS 12....

Haakon Peder Haugsten | Jun 14, 2024

Change the IP HTTP Header used for geo-lookup in Application Insights


Johan Kronberg | Jun 10, 2024 | Syndicated blog

Copying property values

In this article I’d like to show simple Edit Mode extension for copying property values to other language versions. In one of my previous blogposts...

Grzegorz Wiecheć | Jun 8, 2024 | Syndicated blog

Auto-translate with OpenAI GPT-4o in Optimizely CMS

Improvements for Episerver.Labs.LanguageManager! It's now possible to auto-translate both a page and its children at the same time! Additionally, m...

Tomas Hensrud Gulla | Jun 7, 2024 | Syndicated blog

Upgrade To Optimizely CMS 12 Issue: List item fields have become Required

There are many funny details to be aware of when upgrading from Episerver CMS 11 to Optimizely CMS 12. One of them that might feel a bit confusing ...

Allan Thraen | Jun 7, 2024 | Syndicated blog