Branch: master
Clone or download
Bart Verdonck
Latest commit 1d502de Jan 21, 2019


Extensive documentation for developers and content editors can be found on

Check my blogposts on for inspiration.


Downloads can be found here


The new Sitecore Forms module that came with Sitecore 9 is a very promissing tool that allows content editors to add custom forms to their website.

This module aims to add some functionality to this forms creator.

The module has been tested on Sitecore 9.0-u1, 9.0-u2 and Sitecore 9.1

For Sitecore 9.1 use version 2.x. For Sitecore 9.0.x use version 1.x



  • Sitecore 9.1 Compatibility: A new package for Sitecore 9.1 was created. In this package the prefill/binding feature has been update to leverage the new build in prefilling features from Sitecore. The existing xDB binders are now available as value providers. The module still adds the possibility to store the values as well. (For sitecore 9.0.x keep using version 1.7)


  • Make Contact Known: When updating the current contact with a fieldbinded value, the contact is know marked as known. This behaviour can be disabled in sitecore config.
  • Send Email to fieldvalue: The "update current contact" action has been updated, not to identify the user anymore on email. It only sets the preferred email address on the current contact and uses the current contact to send the mail instead of a separate service contact.


  • Attachments: The send email submit action has been extended to allow file uploads to be added to the email as a file attachment.
  • Folder: The file upload control's storageproviders have been updated to support (dynamic) subfolders. Example: formuploads/{formName}/{fieldName}/{language}
  • The download package is now also available as scwp for Azure PaaS ARM.


  • Bugfix: when upgrading from an older version, send email action might throw a nullpointer, this is now fixed


  • Bugfix Issue 19: javascript errors in IE11 + edge, update script to be compliant


  • Bugfix: hidden values not submitted (incl. dropdowns)


  • Bugfix: Issue 20: nullpointer on tracker.current when using store binding on multiform


  • ShowFormPage, custom submit action: With this submit action you set the page in your form that needs to be displayed after a succesfull submit. This is usefull when you don't want to redirect to a seperate thank you page but replace the form with a thank you message after submit. More info can be found here
  • RawHTML, custom field: The content entered in the Raw HTML field is rendered on the page as pure html without escaping. This can be usefull to add small inline javascript snippets or other custom html. In combination with the ShowFormPage, this can be used to trigger a datalayer event to track that the form was submitted.
  • HiddenField, custom field: Use this field to add an input type hidden on the form. This can be usefull when you want to send additional info to your analytics datalayer. This field also supports the databinding functionality and is thus able to send some xDB profile information to the client.
  • Date Timespan Validator, custom validator: With this validator you can compare the entered date with the current datetime. The package contains implementations to check wether a date is in the present or the past. It also contains a validator to check someones age entered through the datepicker. More info can be found here
  • Bugfix on the Identify Contact Submit Action
  • Bugfix on fileupload control in combination with checkbox list: validation is now working correctly.


  • Bugfix: there was an error in the provided download package containing a wrong config file. This caused errors when trying to send mail through EXM.


  • Binding Fields aka Prefill, Added functionality to the forms module to prefill the fields with data from another source. Build-in the library supports prefilling from the xDB profile of the current user filling in the form. But it can be easily extended to add your own binding to external databases, crm's, userprofile, etc... Not only can you prefill the fields, but the module also allows to store the values back into the binded field. (e.g. You can prefill a first name field with the first name from the xDb profile. You can choose to save the value filled in onto the xDB profile after submittion.) More info can be found here Find out how you can add your own databinder
  • Identify Contact, Custom Submit Action. Allows to choose a field from the form, who's entered value will be used as the identifiervalue of the xdb profile. (In other words, it will make the visitor a known contact.)


  • Bugfix for sql session state provider in combo with multipage form
  • Only save file once in multipage forms


  • Bugfix for multipage forms


  • Added FieldBindingMapApiController to allowedControllers in sitecore config.


  • The libraries integration with xDB had a refactoring. The update contact custom save action was removed. The forms extensions only focusses on the email address.
  • Introduction of the IXDbContactFactory. You can provide your own implementation here to use your own IdentifierSource and IdentifierValue to fetch contacts from xDB. The module comes with a default implementation that uses "email" as identifiersource and uses the email as its identiefiervalue.
<register serviceType="Feature.FormsExtensions.XDb.IXDbContactFactory, Feature.FormsExtensions" implementationType="Feature.FormsExtensions.XDb.FormsExtensionsXDbContactFactory, Feature.FormsExtensions" lifetime="Singleton" /> 


  • Send Email, Custom Submit Action: Replacement for Send Email to Fixed Address. This new action support sending mails to a fixed backoffice email address, the email of the current identified contact or to a value of the form. The values from the form are passed to EXM as custom tokens and can be used in the email.


  • Google ReCaptcha v2, Custom Form Element: Add this field on your form to secure your form by adding a Google Recaptcha v2 control into your form.
  • File Upload, Custom Form Element: Adds a file upload control to your toolbox. You can add a custom class to store the file anywhere you want. Out of the box this controls comes with a storage provider for local disk and for Azure Blog Storage Accounts.


  • Send Email to Fixed Address, Custom Submit Action: With this submit action you can send a mail to an email address defined on the submit action. (So not to the contact filling in the form as the build-in mailing action does) The values from the form are passed to EXM as custom tokens and can be used in the email.
  • Update Contact, Custom Submit Action: This is an implementation of the custom submit action walkthrough in the Sitecore documentation. It allows you to update the contacts firstname, lastname and email based on the content of the form.


The module is tested and compatible with Sitecore 9.0 - Update 1. Older versions are not supported.


Download the module under "downloads" and install as sitecore package. 2 config files should be patched:

  • Feature.FormsExtensions.Settings.config
    • GoogleCaptchaPublicKey
    • GoogleCaptchaPrivateKey
  • Feature.FormsExtensions.FileUploadStorageProviders.config Enable one of the FileUploadStorageProviders and fill in the attributes.
    • FileSystemFileUploadStorageProvider: Requires a path to store the files and an URL format to download the uploaded file afterwards.
    • AzureBlobStorageFileUploadStorageProvider: Requires BlobStorage ConnectionString and name of the blobcontainer. The connection string can be found in Azure on the Storage Account resource under "Access Keys"


For detailed info, check my blogposts on

Send Email To Fixed Address

  • Create an automated message in EXM, you can use the token $formFields$ to render the entire form results or use $form_fieldName$ to add the fields individually
  • Create a sitecore form, add the send email to fixed address action to your submit button. Enter a fixed email adress to send the form to, and choose your email campaign to be send out.

Google Captcha Control

Form Editors can just put this control on to their form. No additional configuration required.

File Upload Control

Form Editors can just put this control on to their form. No additional configuration required. Files are stored according to the installed fileuploadstorageprovider. (see installation)

Content Type Validator

This validator is linked to the file upload control and allows to enter a list of allowed content types. Files with other content types will be refused.

File Size Validtor

This validator is linked to the file upload control and checks the file size. If the file is larger then the entered value, it will be refused.