UserForms module provides a visual form builder for the SilverStripe CMS. No coding required to build forms such as contact pages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Go to file
Maxime Rainville db55d68248
Merge pull request #1184 from creative-commoners/pulls/5/htmlvalue
2 weeks ago
.github/workflows MNT Fix github action for deploying userdocs 5 months ago
.tx NEW Add silverstripe-webpack config and move files to webpack friendly location 6 years ago
_config Merge branch '5.7' into 5 2 years ago
client Merge branch '5.12' into 5.13 8 months ago
code FIX Use HTMLValue::class 2 weeks ago
docs DOC Correct title for userhelp 5 months ago
images Add sitetree icon 7 years ago
lang Update translations 3 months ago
templates API Stop using deprecated API 2 months ago
tests API Stop using deprecated API 2 months ago
.editorconfig MNT Behat test for hidden form steps 2 years ago
.eslintignore Upgrade dependencies 3 years ago
.eslintrc.js Upgrade dependencies 3 years ago
.gitattributes Added standard git attributes 7 years ago
.gitignore NEW Add silverstripe-webpack config and move files to webpack friendly location 6 years ago
.nvmrc Upgrade dependencies 3 years ago
.sass-lint.yml NEW Add sass-lint configuration and refactor. Refactor JS for AirBnB ES6 syntax 6 years ago
.upgrade.yml API Mark EditableFormField::EffectiveDisplayRules() for deprecation 3 years ago MNT Standardise modules 6 months ago
_config.php Move confirm folder logic to a dedicated controller 3 years ago
behat.yml MNT Behat test for hidden form steps 2 years ago Added standard code of conduct 7 years ago
codecov.yml Add codecov configuration: do not post comments to GitHub PRs 6 years ago
composer.json DEP Ensure phpunit9 compatible version of segment-field 6 months ago Made supported 7 years ago API Update composer requirements, Travis configuration, add phpcs/phpunit config and remove compass config 6 years ago
package.json DEP Update JS dependencies 1 year ago
phpcs.xml.dist MNT Travis shared config, use sminnee/phpunit 2 years ago
phpunit.xml.dist MNT Standardise modules 6 months ago
webpack.config.js ENH Use yarn and webpack to upgrade jquery 2 years ago
yarn.lock Bump async from 2.6.3 to 2.6.4 9 months ago


CI Silverstripe supported module

UserForms enables CMS users to create dynamic forms via a drag and drop interface and without getting involved in any PHP code.


See the "require" section of composer.json


  • Construct a form using all major form fields (text, email, dropdown, radio, checkbox..)
  • Ability to extend userforms from other modules to provide extra fields.
  • Ability to email multiple people the form submission
  • View submitted submissions and export them to CSV
  • Define custom error messages and validation settings
  • Optionally display and hide fields using javascript based on users input
  • Displays a confirmation message when navigating away from a partially completed form.


composer require silverstripe/userforms

You'll also need to run dev/build. You should see a new page type in the CMS 'User Defined Form'. This has a new 'Form' tab which has your form builder.

Spam protection

This module does not include spam protection out of the box. Without it, it's likely that your submissions could contain a considerable amount of spam. For public facing forms it is encouraged you review and install the following module plus one of the recommended 'verification system' modules outlined in the README.

Read the SpamProtection Module README for details on how to configure this module.



I would like to thank everyone who has contributed to the module, bugfixers, testers, clients who use the module and everyone that submits new features.

A big thanks goes out to Jan Düsedau for drawing the custom icon set for the form fields.


This library follows Semver. According to Semver, you will be able to upgrade to any minor or patch version of this library without any breaking changes to the public API. Semver also requires that we clearly define the public API for this library.

All methods, with public visibility, are part of the public API. All other methods are not part of the public API. Where possible, we'll try to keep protected methods backwards-compatible in minor/patch versions, but if you're overriding methods then please test your work before upgrading.

Reporting Issues

Please create an issue for any bugs you've found, or features you're missing.