Form Builder Plugin
Build forms for your October CMS site without code — with file uploads, reCAPTCHA and a log of every submission.
Demo URL: https://october-demo.renatio.com/backend/backend/auth/signin
Login: formbuilder
Password: formbuilder
Contact forms, quote requests, job applications or surveys: put the form together from ready field types, place it on a page, and every submission lands in your inbox and in the backend.
Features
- Build and manage forms in the October CMS backend, reorder fields with drag and drop
- 21 field types out of the box, editable HTML markup for each of them and custom field types
- Custom form template with the
form_field()helper for any layout - Native AJAX file uploads with attachments in the submission and in the mail
- Google reCAPTCHA v2 and v3, Spam Protection Plugin support
- Reply-to and autoresponder with their own mail templates
- Form submissions log with e-mail preview, filters, CSV/JSON export and automatic pruning
- Import and export of forms and field types
- Granular backend permissions for forms, field types and submissions
- Events to override the form, the fields, the submitted data and the message
- RainLab Translate with Multisite, RainLab Location and RainLab Pages (form as a snippet) support
- Multilingual: English, Polish, German, French, Spanish, Brazilian Portuguese, Italian, Russian, Dutch and Czech translations included — more available on request
Requirements
This plugin requires October CMS 4.x and PHP 8.2 or newer.
If you are running October CMS 3.x, use the 4.x version of this plugin.
Why is this a paid plugin?
Something that is free has little or no perceived value. Users do not commit to free products and only use them until something else that looks nice and is free comes along. When I invest my time in the development of a new plugin I commit to supporting and maintaining it. I ask my customers to do the same. I do not make money from this plugin by advertisements, upgrades or additional services like hosting or setup.
Did you know that 30% of your purchase or donation goes to help fund the October Project?
My plugins take many hours to develop (40-120+) and even more hours to document and maintain. My paid plugins have to pay for both this time, and the time I am spending on free plugins and less successful paid plugins. This means that it will take even a successful plugin years to become profitable. Please consider buying an extended license if you want me to continue to maintain these plugins for the very small fee I ask in return or hire me for adding functionality that you feel is missing but valuable.
Like this plugin?
If you like this plugin, give this plugin a like or make a donation with PayPal.
My other plugins
Please check my other plugins.
Support
Please use GitHub Issues Page to report any issues with the plugin.
Reviews should not be used for getting support or reporting bugs, if you need support please use the Plugin support link.
Icon made by Darius Dan from www.flaticon.com.
This plugin is also included into the following bundle
Installation via Command Line
php artisan plugin:install Renatio.FormBuilder
Documentation
Usage
After installation the plugin registers the Form Builder backend menu with four items: Forms, Field types, Form submissions and Settings. Two example forms are installed: a simple contact form and a default form that demonstrates every field type.
Place the renderForm component on a CMS page, inspect it and choose the form.
The form is submitted through the AJAX Framework, so the layout must load it next to the page styles:
<head>
{% styles %}
</head>
<body>
...
{% framework extras %}
{% scripts %}
</body>
Example of placing form component on CMS page
/themes/demo/pages/contact.htm
url = "/contact"
layout = "default"
[renderForm contactForm]
formCode = "contact-form"
==
{% component 'contactForm' %}
Example of placing form component on CMS partial
/themes/demo/pages/contact.htm
url = "/contact"
layout = "default"
[renderForm contactForm]
formCode = "contact-form"
==
{% ajaxPartial "contact" %}
/themes/demo/partials/contact.htm
{% component 'contactForm' %}
Important note: The form handler works only inside
{% ajaxPartial %}, not inside a plain{% partial %}.
Forms
Spam Protection
Install the Spam Protection Plugin to protect every Form Builder form with a honeypot, content rules, a single-use form token and a per-visitor rate limit. It works out of the box.
A submission identical to one accepted within the last minute is answered with the success message but is neither logged nor mailed again, so a double click or a page refresh after sending does not produce duplicates.
Custom template
The plugin generates the form template while the Custom Template field is empty. To replace that markup, write your
own template there and render each field with the form_field() function, which takes the field name.
Example that will display two fields in one row:
<div class="row">
<div class="col-6">{{ form_field('first_name') }}</div>
<div class="col-6">{{ form_field('last_name') }}</div>
</div>
Floating labels
Turn on Floating labels in the form's Options tab to render Bootstrap floating labels. The theme must use Bootstrap 5.
Fields
Custom HTML markup for fields
You can change HTML markup for each field type under Form Builder → Field types. The recommended approach is to duplicate the field type and modify the copy.
Custom field types
Create a field type under Form Builder → Field types with the New field type button. For example, an Email
field type is the markup of Text with the input type changed to email. Once saved, it can be used in any form.
In markup section you can use Twig and following variables:
| Property | Type | Description |
|---|---|---|
| label | String | Label for the field. |
| field_id | String | Unique field ID useful when pairing labels with inputs. |
| label_class | String | Label CSS classes. |
| name | String | HTML name attribute. Also used in mail template. |
| default | String | Default value for the field. |
| comment | String | Help block for the field. |
| class | String | HTML class. |
| wrapper_class | String | HTML wrapper class. |
| placeholder | String | Placeholder for the field. |
| options | Array | Options for dropdown, radio list, checkbox list. |
| custom_attributes | String | Custom HTML attributes. For example id="my-field". |
Available field types
| Field type | Renders |
|---|---|
| Text | a single-line text input |
| Textarea | a multi-line text box |
| E-mail, Phone number, URL, Numeric | an email, tel, url or number input |
| Date, Time, Datetime | a date, time or datetime-local input |
| Color Picker | a color input |
| Dropdown | a dropdown with the given options |
| Checkbox | a single checkbox |
| Checkbox List | a list of checkboxes |
| Radio List | a list of radio options, where only one can be selected |
| Hidden | a hidden input |
| Section | a heading and subheading for grouping fields |
| Submit | the submit button |
| reCaptcha, File upload, Country select, State select | see below |
reCaptcha
Renders Google reCAPTCHA, either v2 (checkbox) or v3 (invisible and score-based, no user interaction).
Create the keys on the reCAPTCHA site — v2 and v3 keys are not interchangeable — and enter them under Settings → Form Builder → Google reCAPTCHA:
- Version — reCAPTCHA v2 (Checkbox) or reCAPTCHA v3 (Invisible).
- Site Key and Secret Key — must match the selected version.
- Score Threshold (v3 only) — minimum score from 0.0 (likely bot) to 1.0 (likely human) needed to pass. Default is 0.5.
- Language — language of the widget.
- Theme — light or dark v2 checkbox widget.
Important note: This field must have g-recaptcha-response as field name and required|recaptcha in validation section to work properly.
File upload
Renders a file input.
Filter files selected by a user
To limit the file picker, add an accept custom attribute, for example accept=".pdf,.doc" for PDF and Word files or
accept="image/*" for images.
Validation
Add the rules in the field's validation section:
required— a file must be chosen,max:512— at most 512 KB,mimes:pdf— PDF files only,image— images only.
See the available validation rules for more.
Multiple files
To accept more than one file, check Allow multiple files in the Upload Options tab. Then check Nested array
based form input next to each rule so it applies to every uploaded file, except the required rule.
Send uploaded files as mail attachments
Uploaded files are attached to the mail by default. Uncheck the option to send the mail without them.
Display mode
Tells the backend how to show the uploaded files in a form submission. Choose image when only images are allowed.
Country select
Renders a dropdown with country options.
Important note: You must install Location Plugin to use this field.
State select
Renders a dropdown with state options. This field depends on country select.
Important note: You must install Location Plugin to use this field.
Using form data in mail templates
Every submitted field is available in the mail template under its name. For a field named name:
{{ name }}
The value is already processed by Form Builder: dropdowns and radio lists return the label of the selected option,
checkbox lists the selected labels separated by commas, a checkbox Yes or No, and country and state selects the
name. The value exactly as the browser sent it is available with the _raw suffix:
{{ name_raw }}
Form Submissions
Every submission is stored under Form Builder → Form submissions with the submitted values, the uploaded files, the sender IP address and a preview of the sent e-mail. The autoresponder is stored as a separate submission, marked with the Autoresponder column and filter. Turn logging off per form in the Options tab; a form without a mail template always logs, because the submission would otherwise be lost.
Submissions are pruned by a daily scheduled job after Prune period in days from Settings → Form Builder.
It only runs if October's scheduler is running (php artisan schedule:run every minute). Leave the period empty to
keep submissions forever.
Submissions can be exported to CSV or JSON from the toolbar.
Settings
Plugin settings are available at Settings → Form Builder.
- reCAPTCHA version, Site key, Secret key, Score threshold, Language, Theme — see the reCaptcha field type above. The pre-filled demo keys work with v2 only.
- Prune period in days — how long submissions are kept. Default:
30.
Permissions
| Permission | Grants |
|---|---|
| Manage Forms | the Forms list; create, update, delete and import/export have their own permission each |
| Manage field types | the Field types list; create, update, delete and import/export have their own permission each. Update also covers restoring the default markup |
| Manage form submissions | the Form submissions list; preview, delete, truncate and export have their own permission each |
| Manage Settings | the plugin settings page |
Every backend action checks its permission on the server, so a user without it gets a 403 even when the button is reached by hand.
Events
| Event | Fired when | Payload |
|---|---|---|
formBuilder.overrideForm |
before the form markup is rendered | &$form — replace or change the model |
formBuilder.overrideField |
before each field is rendered | &$field, $form |
formBuilder.formSubmitted |
the submission passed validation | &$form |
formBuilder.extendFormData |
before the mail data is built; return the array to replace it | $data |
formBuilder.beforeSendMessage |
before the mail is sent; return false to cancel it |
$form, $data |
Listen in your plugin's boot() method:
Event::listen('formBuilder.overrideForm', function ($form) {
$form->css_class = 'form-horizontal';
});
Event::listen('formBuilder.overrideField', function ($field, $form) {
if ($field->name === 'currency') {
$field->default = 'USD';
}
});
Event::listen('formBuilder.extendFormData', function ($data) {
$data['foo'] = 'bar';
return $data;
});
Event::listen('formBuilder.beforeSendMessage', function ($form, $data) {
$form->from_email = 'john.doe@example.com';
$form->from_name = 'John Doe';
});
-
Petr Široký
Found the plugin useful on 17 Apr, 2024
great plugin and support. recommend
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Petr, for the kind words and the recommendation!
-
William Thomas
Found the plugin useful on 18 May, 2022
I tested the contact form and clicked submit, I can see the form submitted in Form Logs with all fields filled but unable to receive the contact form via email. Is there a guide for newbie like me to properly setup the contact form configuration?
-
Renatio author
Replied on 11 Sep, 2026
Hi William, thanks for the review, and sorry for the very late reply. I'm answering here mostly for anyone who runs into the same problem.
If a submission appears in the log but no e-mail arrives, the form works and the problem is e-mail delivery:
- In the form's Recipients tab, replace the demo address
admin@domain.tldwith your own. - On the Details tab, set Sender email to an address on your domain, or leave it empty to use the mail settings default.
- Configure Settings → Mail Configuration and send a test from Settings → Mail Templates. Errors are listed in Settings → Event Log.
If it still doesn't work, please open an issue at GitHub.
- In the form's Recipients tab, replace the demo address
-
Jess Murphy
Found the plugin useful on 28 Apr, 2022
Hi, How can override Raw markup Code From latest plugin. In plugin updates said,
You can override the partial by creating a file in our theme called partials/renderform/fields.htm. and pasting below markup.
How can update for each form contact-form, subscribe-form, like that
-
Renatio author
Replied on 11 Sep, 2026
Hi Jess, thanks for the review, and sorry for the very late reply. I'm answering mostly for anyone with the same question.
The
partials/renderform/fields.htmoverride is gone in current versions. Each form now has its own Custom Template tab. Leave it empty to use the generated markup, or write your own layout and render each field by its name:<div class="row"> <div class="col-6">{{ form_field('first_name') }}</div> <div class="col-6">{{ form_field('last_name') }}</div> </div>So
contact-formandsubscribe-formcan each have a different layout. To change the HTML of a field type for every form, edit it under Form Builder → Field types. It's best to duplicate a type first and edit the copy.If you need more help, please open an issue at GitHub.
-
Martijn de Vries
Found the plugin useful on 27 Nov, 2021
Thanks for the update to support OctoberCMS V2! I have one more problem with the error below. Can you help with this?
Uncaught ReferenceError: resetForm is not defined
-
Renatio author
Replied on 27 Nov, 2021
Hi Martijn, thanks for the review!
resetFormlives in the plugin'sform.js, which the component adds to the page through{% scripts %}. This error means the layout doesn't output it. Make sure the layout contains:{% framework extras %} {% scripts %}More details in this issue.
-
Danny Baharuddin
Found the plugin useful on 31 Mar, 2021
So far had no problem.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Danny, glad to hear it works well for you!
-
Julian Parge
Found the plugin not useful on 28 Jan, 2021
Support for this plugin is non-existent. They never reply to the forum - I've had simple, open tickets for months. Don't waste your money. For the "#1" paid plugin of all time, this is a complete joke.
-
Renatio author
Replied on 21 Nov, 2021
Hi Julian, you're right, and I'm sorry. Support back then was far too slow.
This has changed since. Every report now goes through GitHub Issues, where I answer and track it. The plugin is actively maintained for October CMS 4. The latest release, 5.2.0, adds security fixes, new languages and reworked documentation.
If you ever give it another try, I'd be glad to help.
-
Remko Posthuma
Found the plugin useful on 13 Jan, 2021
Just starting my first project with this plugin but I like it so far
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Remko! Hope the project went well. If anything comes up, you'll find help on GitHub Issues.
-
PLACE IT Jacek Bartoszek
Found the plugin useful on 12 Jan, 2021
Great plugin! Thank you for your help. Is any chance to add option for duplicate created already form??
Best
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Jacek! Duplicating a form is available: use the copy button in the Actions column of the forms list. Since version 5.2.0 the copy also keeps the RainLab Translate translations.
-
Morten Saanum Bessesen
Found the plugin not useful on 14 Sep, 2020
There is an error when installing.
-
Renatio author
Replied on 16 Sep, 2020
Hi Morten, sorry for the trouble. The installation error was caused by a change in the October version released at that time and was fixed in version 1.5.0. Current versions install cleanly on October CMS 4.
If you run into any problem, please report it on GitHub Issues and I'll help you there.
-
Auris
Found the plugin not useful on 11 Aug, 2020
Absolutely not Working, the Error while installing can only be fixed with a plugin:refresh. This Might work for out development environnement, but how would you ever get this to work in Production? Absolutely ridiculous.
-
Renatio author
Replied on 16 Sep, 2020
Hi Auris, you're right,
plugin:refreshis no fix for a production site, and I'm sorry for the trouble. The installation error was caused by a change in the October version released at that time and was fixed in version 1.5.0, so no refresh is needed. Current versions install and update cleanly on October CMS 4 withphp artisan october:migrate.If you run into any problem, please report it on GitHub Issues and I'll help you there.
-
Igor Yaroslavtsev
Found the plugin useful on 15 May, 2020
No updates for 2 years? Why? We need to add 3 and more recipients in forms. Maybe you can add repeater field in recipients?
-
Renatio author
Replied on 11 Sep, 2026
Hi Igor, thanks for the suggestion! It's done: the Recipients tab now has repeaters for To, CC and BCC with no limit on the number of addresses, and since version 5.2.0 the submission log stores recipient lists of any length. The plugin is actively maintained again, now for October CMS 4.
-
Glide Agency
Found the plugin not useful on 21 Jun, 2019
Custom support is non-existent, very disappointed.
-
Renatio author
Replied on 11 Sep, 2026
Sorry for the disappointing experience back then. Support has changed since: every report now goes through GitHub Issues, where I answer and track it, and the plugin is actively maintained for October CMS 4. If you ever give it another try, I'd be glad to help.
-
Shohabbos
Found the plugin useful on 23 May, 2019
За 5 баксов плагин норм
-
Renatio author
Replied on 11 Sep, 2026
Спасибо за отзыв! Кстати, начиная с версии 5.2.0 плагин полностью переведён на русский язык.
-
Ronny Skog
Found the plugin useful on 30 Mar, 2019
Great plugin and easy to use. I'm missing a simple way to store form data in a database though. It can be done width events but requires coding.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Ronny! This is built in now: every submission is stored in the database under Form Builder → Form submissions, with the submitted values, uploaded files, sender IP and a preview of the sent e-mail. Submissions can be filtered and exported to CSV or JSON without any coding.
-
luis mezarine
Found the plugin not useful on 13 Dec, 2018
This pluging resets the page every time the persons hits SUBMIT. I do not recommend it
-
Renatio author
Replied on 14 Dec, 2018
Hi Luis, sorry for the trouble. The form is submitted with AJAX, so the page is not reloaded: the success message appears in place of the form, and a redirect happens only when you set one in the form options. If the page does reload, the layout is missing the AJAX framework. Make sure it contains:
{% framework extras %} {% scripts %}If you need help, please open an issue on GitHub Issues.
-
Allan Neuendorf
Found the plugin useful on 1 Sep, 2018
Brilliant and impressive plugin!
Intuitive to setup and easy to customise (once you discover the html code in Field Types).
One question - would it be possible to make calculating fields as a field type?
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Allan! Calculating fields aren't built in yet. For now you can create a custom field type under Form Builder → Field types with a small script in its markup that computes the value from other inputs, for example into a read-only or hidden field, which then gets stored with the submission. If you'd like it as a built-in field type, please add it as a feature request on GitHub Issues.
-
Lutte Patrick
Found the plugin not useful on 22 Apr, 2018
after installation I have this error
No hint path defined for [martin.forms]. C:\laragon\www\btp\vendor\laravel\framework\src\Illuminate\View\FileViewFinder.php line 112
What is the problem ?
-
Renatio author
Replied on 24 Apr, 2018
Hi Patrick, sorry for the short reply back then. The error doesn't come from Form Builder:
martin.formsis the namespace of another plugin, Magic Forms. It usually means a page, partial or mail template still references that plugin after it was removed or disabled. Remove the reference and clear the cache withphp artisan cache:clear.If Form Builder gives you any trouble, please report it on GitHub Issues.
-
Richard Clark
Found the plugin useful on 13 Mar, 2018
Great work question? can you do model binding to a form
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Richard! There's no built-in model binding, but events cover both directions. Fill fields from any model before rendering, and save the submission to your own model after validation:
Event::listen('formBuilder.overrideField', function ($field, $form) { if ($field->name === 'email' && $user = Auth::getUser()) { $field->default = $user->email; } }); Event::listen('formBuilder.formSubmitted', function ($form) { Lead::create(post()); });See the Events section of the documentation for details.
-
Ran Michael
Found the plugin useful on 5 Feb, 2018
This is a great plug-in, works out of the box. I had some issues with bilingual forms (which originated from the Translate plug-in), which were fixed. Come to think of it, Renatio added a fix although the issue wasn't on this plug-in !
Another great surprise was a snippet which enables you (your clients) to insert any form created with this plug in into a Static Page with ease.
- Lacking feature: Duplicate form.
All in all - great work ! Well worth it ! Thanks a lot Renatio !
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Ran, for the kind words! Duplicating a form is available now: use the copy button in the Actions column of the forms list. Since version 5.2.0 the copy also keeps the RainLab Translate translations.
-
Madars Pujats
Found the plugin useful on 14 Jan, 2018
Can i add flags to country select?
-
Renatio author
Replied on 11 Sep, 2026
Hi Madars, thanks for the question! Not out of the box: the Country select field uses RainLab Location's
form_select_country(), which renders a native<select>, and native selects can't show images. You can create a custom field type under Form Builder → Field types that wraps the select with a JavaScript select library supporting option templates (for example Tom Select) and adds the flags there. If you'd like it built in, please add a feature request on GitHub Issues. -
Dinesh
Found the plugin useful on 11 Aug, 2017
Everything is fine but you can not add country and state. If you could provide any documentation for the same will be best.
-
Renatio author
Replied on 11 Sep, 2026
Hi Dinesh, thanks for the review! Both are available as field types:
- Install the RainLab Location plugin.
- Add a Country select field and a State select field to your form.
The state list refreshes automatically when a country is chosen, and the mail and the submission log show the country and state names. Both field types are described in the plugin documentation.
-
Web Master
Found the plugin not useful on 29 Jul, 2017
please, update formbuilder it's have some problem
-
Renatio author
Replied on 30 Jul, 2017
Sorry for the unhelpful reply back then. The plugin has been updated many times since and is actively maintained for October CMS 4. If you still run into a problem, please describe it on GitHub Issues and I'll help you there.
-
Paddy Sherry
Found the plugin useful on 1 Jul, 2017
I lost a full day trying to build a form with the Ajax framework that validates and accepts file uploads.
Then I found this plugin, copied the default form and the task was complete in 15 minutes.
Excellent extension!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Paddy! Glad it saved you the day. That's exactly what the plugin is for.
-
Kai
Found the plugin useful on 9 Jun, 2017
Dearest Author of the plugin
thank you for your work for all of us. Im searching a not to difficult possibility (Im on a low programmer level) to create a form that saves data into a corresponfing table, were row can be edited. 0) Where is the support area to ask you in the correct way? 1) Is that possible? 2) Would you create a plugin with the form builder and then connect the form with the table somehow? But how? I do not see a field for the action of the form itself.
Thanx a lot
Kai
-
Renatio author
Replied on 11 Sep, 2026
Hi Kai, thank you, and sorry for the very late reply.
- Please ask on GitHub Issues.
- Yes. Every submission is already stored in the database under Form Builder → Form submissions, where you can view, filter and export it, but not edit it.
- For editable rows, create a Tailor blueprint (October CMS 3 and 4) for your table. You get the backend list and edit form without writing a plugin. Then copy each submission into it with one event listener:
Event::listen('formBuilder.formSubmitted', function ($form) { if ($form->code === 'my-form') { $entry = \Tailor\Models\EntryRecord::inSection('Leads'); $entry->fill(post()); $entry->save(); } });The form has no action field because it's submitted with AJAX to the component. Events are the way to hook into it.
-
Sally Lin
Found the plugin useful on 8 Jan, 2017
Useful plugin but I have some issues:
- Plugin needs css bootstrap to display "actions" but doesn't mention this in doc's.
- Captcha does not display label so I had to inject a ::before css
- Need more info in the doc's about mail templates and mail services etc?! Would be nice if there was a video demo of the plugin.
Useful plugin will buy again, but please update your doc's info a bit more...
-
Renatio author
Replied on 11 Sep, 2026
Hi Sally, thank you for the detailed feedback, and sorry for the very late reply. Most of it is addressed now:
- The reCAPTCHA field renders its label.
- The documentation covers using form data in mail templates, and the mail itself is sent through October's Settings → Mail Configuration.
- Instead of a video, there's a live demo; the login details are in the plugin description.
The default field markup uses Bootstrap 5 classes. With another CSS framework, edit the markup under Form Builder → Field types. Thanks for pointing it out, I'm adding it to the documentation.
-
UpTop
Found the plugin not useful on 3 Jan, 2017
For basic use, FormBuilder works great. It's a very powerful plugin, but it lacks in overall stability. Too frequently it throws errors if you have Rainlab.Translate installed which is were this plugin should excel.
We'd give it 3/5 but still a not useful as we are disappointed every time we try to use it in combination with Translate.
-
Renatio author
Replied on 19 Mar, 2017
Hi, thanks for the honest review, and sorry for the trouble back then. The errors came from RainLab Translate itself and were worked around in 1.2.9. Today Form Builder works with RainLab Translate and October's multisite: form names, labels, options, messages and validation messages are translatable, and since 5.2.0 duplicating a form keeps its translations. Support for October's native translations is on the roadmap.
If anything still breaks, please report it on GitHub Issues.
-
Gerald Baumeister
Found the plugin useful on 20 Sep, 2016
Great Plugin and great support! Thank you!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Gerald!
-
Gerald Schandl
Found the plugin useful on 9 Sep, 2016
Great Plugin and really easy to use!!! Thanks to the developer, this plugin makes Forms much easier!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Gerald, for the kind words! By the way, the plugin is fully translated into German.
-
Mercer Digital
Found the plugin useful on 8 Sep, 2016
Very good product. Great features.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, glad you like it!
-
Vijay Patel
Found the plugin useful on 26 Aug, 2016
Perfect Plugin to handle most complex forms. It covers almost every aspect which is required to build a complex forms. Great work Renato.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Vijay, for the kind words!
-
Metro Ren
Found the plugin useful on 6 Aug, 2016
Very nice plugin!
-
Renatio author
Replied on 11 Sep, 2026
Thank you!
-
Tyson Rude
Found the plugin useful on 6 Jul, 2016
Great plugin with a lot of flexibility for custom projects. Also, the support is timely and very helpful. I definitely recommend this plugin for OctoberCMS forms.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Tyson, for the kind words and the recommendation!
-
Nick
Found the plugin useful on 23 Jun, 2016
Great plugin! Works as expected. Would recommend allowing users to style labels directly though!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Nick! Labels can be styled per field now: set Label CSS classes in the field's HTML & CSS tab. For full control, the label markup of each field type is editable under Form Builder → Field types.
-
Elian
Found the plugin useful on 14 Jun, 2016
Awesome plugin! Very well made. Simple to use and highly costumizable.
Would recommend it to anyone. Well worth the money!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Elian, for the kind words and the recommendation!
-
Juan Timana
Found the plugin useful on 7 Jun, 2016
This is an incredibly useful and very well done plugin. I recommend it to everyone that need to build forms that are easy to build and easy to maintain.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Juan, for the kind words and the recommendation!
-
MyeongCheol Kwon
Found the plugin useful on 17 May, 2016
Very good plugin! Thanks.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, MyeongCheol!
-
Servers
Found the plugin useful on 22 Feb, 2016
Great plugin, very easy to use and integrate :)
-
Renatio author
Replied on 11 Sep, 2026
Thank you, glad to hear it!
-
Marina Sokolova
Found the plugin useful on 3 Feb, 2016
There is awesome plugin and the best support I've ever seen. Thank you very much for your job.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Marina, that means a lot! By the way, since version 5.2.0 the plugin is fully translated into Russian.
-
inIT
Found the plugin useful on 21 Jan, 2016
Very good plugin. Powerful and easy to use.
-
Renatio author
Replied on 11 Sep, 2026
Thank you for the kind words!
-
Andy Barker
Found the plugin useful on 17 Jan, 2016
This is a professionally written plugin that is really useful if you need lots of forms.
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Andy, glad it serves you well!
-
Potting Shed
Found the plugin useful on 16 Dec, 2015
Excellent plugin, and excellent support from Renatio. I would ALL of Renatio's plugins are a must for any serious OctoberCMS developer.
-
Renatio author
Replied on 11 Sep, 2026
Thank you so much for the kind words and for recommending my plugins!
-
Gavin Foster
Found the plugin useful on 7 Oct, 2015
Simply a SUPERB plugin! The ability to customise each form, right down to the styles, layouts, and classes is just fantastic. The one support question I had was answered remarkably quickly. I've got multiple contact forms assigned to individual partials that the client is able to drop into their pages using the "Snippets" section of the Rain.Lab Pages plugin. Developer and client very happy. Highly recommended!
-
Renatio author
Replied on 11 Sep, 2026
Thank you, Gavin, for the kind words! A small tip: the form component is now registered as a RainLab Pages snippet itself, so clients can drop any form into a page and choose it there, without a separate partial for each form.
-
Daniel ody
Found the plugin not useful on 14 Sep, 2015
lake of stuff like date, time...input and setting the column..make wizard form!
-
Renatio author
Replied on 15 Sep, 2015
Hi Daniel, sorry for the reply back then. All three are covered now:
- Date, Time and Datetime are built-in field types, together with E-mail, Phone, URL, Numeric and Color Picker.
- Columns: give each field a wrapper class such as
col-md-6, or lay the form out freely in the form's Custom Template tab. - Wizard (multi-page) forms are on the roadmap.
If you need help, please ask on GitHub Issues.
-
| 5.2.0 |
Security release. Escape submitted values in the submission preview, sandbox the e-mail preview and check the create, update, delete and truncate permissions in every AJAX handler. Sep 11, 2026 |
|---|---|
| 5.1.6 |
Rename the FormLogs e-mail preview action to preview_email. Sep 09, 2026 |
| 5.1.5 |
Add reCAPTCHA v3 support with score-based verification, expose only site_key, version, theme and lang to field markup, fix the 404 on the FormLogs e-mail preview under October 4.3.5 and later, stop the ajax:promise listener throwing on element-less requests, save the autoresponder in its own form log with a list filter. Sep 09, 2026 |
| 5.1.4 |
Add type hints, refactor code, expand test coverage, replace bkwld/cloner with native duplicate() methods. Sep 09, 2026 |
| 5.1.3 |
Fix validation and add tests. Dec 29, 2025 |
| 5.1.2 |
Fix field type validation. Dec 01, 2025 |
| 5.1.1 |
Fix passing form model to mail template. Dec 01, 2025 |
| 5.1.0 |
Add raw field values (fieldname_raw) support. Dec 01, 2025 |
| 5.0.5 |
Refactor to use pluck() function. Oct 07, 2025 |
| 5.0.4 |
Parse form markup with Twig. Thanks @apinard Aug 29, 2025 |
| 5.0.3 |
Update dependencies. Jul 12, 2025 |
| 5.0.2 |
Add compatibility. Jul 07, 2025 |
| 5.0.1 |
Require October 4. Jun 30, 2025 |
| 4.0.8 |
Fix minor issues with form.js. Fix using external property values for formCode property. May 02, 2025 |
| 4.0.7 |
Fix removing form log when using attachOne relation file upload field. Oct 01, 2024 |
| 4.0.6 |
Allow to completely override form in plugin events. Thanks @m49n May 11, 2024 |
| 4.0.5 |
Add hidden field type. Add events to override form and fields before rendering form markup. Mar 05, 2024 |
| 4.0.4 |
Allow to select forms and field types for export. Feb 22, 2024 |
| 4.0.3 |
Fix scroll after form submission. Nov 11, 2023 |
| 4.0.2 |
Add setting to turn off sending uploaded files as mail attachment. Oct 08, 2023 |
| 4.0.1 |
Minor fix. Sep 21, 2023 |
| 4.0.0 |
Remove responsiv/uploader-plugin support with native October ajax file upload. Sep 21, 2023 |
| 3.1.3 |
Add support for October snippets. Sep 07, 2023 |
| 3.1.2 |
Allow to disable form logs. Jun 01, 2023 |
| 3.1.1 |
Fix permissions. Nov 23, 2022 |
| 3.1.0 |
Major rework of the plugin. See upgrade guide for list of changes. Nov 23, 2022 |
| 3.0.0 |
Require October CMS 3.0. Nov 23, 2022 |
| 2.2.0 |
Rewrite querying mail templates. May 17, 2022 |
| 2.1.7 |
Fix for October 3.x. Apr 24, 2022 |
| 2.1.6 |
Fix raw fields markup for PHP < 7.4. Dec 02, 2021 |
| 2.1.5 |
Minor fix. Nov 28, 2021 |
| 2.1.4 |
Minor fix. Nov 28, 2021 |
| 2.1.3 |
Raw fields markup. Nov 27, 2021 |
| 2.1.2 |
Improve reset field type to default. Nov 25, 2021 |
| 2.1.1 |
Minor fixes. Nov 25, 2021 |
| 2.1.0 |
Add patch 2.0 console command for easy upgrade process. Nov 20, 2021 |
| 2.0.1 |
Add support for October v2.0. Drop support for October v1.0. Nov 20, 2021 |
| 1.5.0 |
Elevate plugin permissions. Sep 16, 2020 |
| 1.4.9 |
Fix issue with field options. Jul 23, 2018 |
| 1.4.8 |
Fix issue with ReCaptchaServiceProvider class. Jul 21, 2018 |
| 1.4.7 |
Fix multilingual fields. Jul 18, 2018 |
| 1.4.6 |
Generate form code automatically. Jul 18, 2018 |
| 1.4.5 |
Use October Default Mail Layout for example Templates. Jul 18, 2018 |
| 1.4.4 |
Improve RainLab.Location plugin integration. Jul 18, 2018 |
| 1.4.3 |
Dynamic form reply to fields. Jul 13, 2018 |
| 1.4.2 |
Fix fields and sections translation. Jan 31, 2018 |
| 1.4.1 |
Set default reCaptcha keys for testing. Jan 31, 2018 |
| 1.4.0 |
!!! Nicer form field validation. Oct 18, 2017 |
| 1.3.1 |
Fix example forms seeding. Apr 22, 2017 |
| 1.3.0 |
Allow to use CMS filters and functions in field templates. Apr 22, 2017 |
| 1.2.9 |
Fix RainLab.Translate compatibility issues. Mar 19, 2017 |
| 1.2.8 |
Fix sending email with file attachment for October build 401+ Mar 12, 2017 |
| 1.2.7 |
Improve seeding mail templates. Add Contact Form and Default Form. Update Mail Layout. Mar 12, 2017 |
| 1.2.6 |
Export form logs to CSV file. Feb 08, 2017 |
| 1.2.5 |
Allow to duplicate a form. Sep 19, 2016 |
| 1.2.4 |
Minor changes. May 14, 2016 |
| 1.2.3 |
German translation. Feb 10, 2016 |
| 1.2.2 |
Allow to manually specify url for redirect. Feb 03, 2016 |
| 1.2.1 |
Allow for custom validation messages. Feb 01, 2016 |
| 1.2.0 |
Dutch translation. Jan 29, 2016 |
| 1.1.9 |
Add comment to fields. Jan 22, 2016 |
| 1.1.8 |
Add HTML preview in logs. Jan 08, 2016 |
| 1.1.7 |
Add sections feature. Jan 08, 2016 |
| 1.1.6 |
Add reply to and autoresponse functionality. Dec 08, 2015 |
| 1.1.5 |
Add Event to extend default functionality. Nov 09, 2015 |
| 1.1.4 |
RainLab Location Plugin support. Nov 09, 2015 |
| 1.1.3 |
Minor changes. Oct 19, 2015 |
| 1.1.2 |
Allow for multiple forms on the same cms page. Fix required validation rule for fileuploader field type. Oct 19, 2015 |
| 1.1.1 |
Use Twig::parse() facade. Only update for October build 300 and above. Oct 05, 2015 |
| 1.1.0 |
!!! Important update Oct 05, 2015 |
| 1.0.4 |
Add simple logs. Sep 14, 2015 |
| 1.0.3 |
Add file attachment field type. Sep 14, 2015 |
| 1.0.2 |
Reference __SELF__ in component partial. Sep 06, 2015 |
| 1.0.1 |
First version of Form Builder plugin. Aug 24, 2015 |
Upgrade guide
Versions not listed here need no action. Back up the database before upgrading.
Upgrading To 2.0.1
Requires October CMS 2.x and PHP 7.3. Upgrading from 1.5.0 needs a reinstall or php artisan formbuilder:patch 2.0.
Upgrading To 3.0.0
Requires October CMS 3.0 and PHP 8.0.
Upgrading To 3.1.0
Field types are rewritten for Bootstrap 5; forms rendered with an older framework need their markup adjusted.
Permissions are now granular, so review the roles after the upgrade. Validation uses the AJAX Framework extras
({% framework extras %} in the layout).
Upgrading To 4.0.0
Upgrade to 3.1.3 first and back up the database. The responsiv/uploader-plugin integration is replaced by native
AJAX file uploads: the migration adds the new upload field type and moves the old upload fields to it. Check the forms
with uploads afterwards.
Upgrading To 5.0.1
Requires October CMS 4.x.
Upgrading To 5.1.0
Field IDs are now unique per form. Restore the field types to the default markup to pick this up; customised field
types need the field_id variable added by hand.
Upgrading To 5.1.4
Forms and field types are duplicated with native duplicate() methods instead of bkwld/cloner, so the cloner::cloning and cloner::cloned events are no longer fired.
Upgrading To 5.1.5
Run php artisan october:migrate. Field type markup receives only settings.site_key, settings.version,
settings.theme and settings.lang; customised reCAPTCHA markup must be restored to default or updated by hand to
support v3. The autoresponder is saved as its own form submission, so a form with both switches on produces two
entries per submission.
Upgrading To 5.2.0
Security release. Upgrade every installation running 5.1.x. Submitted values are now escaped in the submission
preview, and every backend AJAX handler checks its permission on the server. Requires PHP 8.2. Run
php artisan october:migrate.
Users who duplicate forms or field types, toggle field visibility or restore the default markup now need the matching Create or Update permission; Clear form submissions needs Truncate form submissions. Review the roles under Settings → Administrators → Roles.
Field names must be unique within the form and use only letters, digits, dashes and underscores; rename an older field
that breaks this rule (and its variable in the mail template) when saving it fails. Field HTML is inserted after the
form template is parsed, so Twig syntax typed into a label or a default value is rendered literally. Merge the changes
into form.js if you ship a customised copy: validation errors now clear as the visitor corrects the field, and a
second submit is blocked while the first is pending.




