Product support

Visit this product's website for support.

  • Added on Jan 3, 2017
  • Current version: 1.5.1
  • Compatibility
    October CMS v3.x not tested
    October CMS v2.x not tested
    October CMS v1.x use latest
  • Created by
  • Public repository


Please, post your errors or questions on GitHub (not in the reviews area)

Why Magic Forms?

Almost everyday we make forms for our clients, personal projects, etc. Sometimes we need to add or remove fields, change validations, store data and at some point, this can become boring and repetitive. So, the objective was to find a way to just put HTML elements on the page, skip the repetitive task of coding and (with some kind of magic) store this data in the database or send by mail.


New documentation available here: https://skydiver.github.io/october-plugin-forms/


  • Create any type of form: contact, feedback, registration, uploads, etc
  • Write only HTML
  • Don't code forms logic
  • Laravel validation
  • Custom validation errors
  • Use multiple forms on same page
  • Store on database
  • Export data in CSV
  • Access database records from backend
  • Send mail notifications to multiple recipients
  • Auto-response email on form submit
  • reCAPTCHA validation
  • Support for Translate plugin
  • Inline errors with fields (read documentation for more info)
  • AJAX file uploads (BETA, available since v1.3.0)
The following themes use this plugin


11 projects
# 30 in Paid of all time.


Minimal theme for OctoberCMS



35 projects
# 12 in Paid of all time.


Modern, responsive and highly customizable eCommerce OctoberCMS theme based on Shopaholic eCommerce Plugin Ecosystem



17 projects
# 21 in Paid of all time.


A beautiful theme based on CreativeTim Argon. Comes with a simple page builder and custom blocks that extends Argon Design System.



4,356 installations
# 9 in Free of all time.


A multipurpose theme based on Bootstrap 4. Ported to OctoberCMS , designed and developed by themefisher



3 projects
# 41 in Paid of all time.


A beautiful theme based on CreativeTim MaterialKit. Comes with a PageBuilder in StaticPages.


Simple Blog Theme

14 projects
# 47 in Paid of all time.

Simple Blog Theme

Simple theme for blog website


Ultimate Website Builder - CREATOR Theme Bundle

30 projects
# 6 in Paid of all time.

Ultimate Website Builder - CREATOR Theme Bundle

The Ultimate Octobercms Theme Bundle with Advanced Page Builder & Powerful Component Blocks



607 installations
# 78 in Free of all time.


Bootstrap 4 SASS easy customizable Theme with RainLab Blog support



2 projects
# 35 in Paid of all time.


Jagu Mercurius October CMS frontend theme


eMarket - Advanced E-Commerce Octobercms theme

22 projects
# 8 in Paid of all time.

eMarket - Advanced E-Commerce Octobercms theme

Premium Ecommerce Octobercms theme based on OFFLINE Mall Plugin



16 projects
# 15 in Paid of all time.


Portfolio, blog website template


Axiam E-Commerce Theme for Shopaholic

10 projects
# 18 in Paid of all time.

Axiam E-Commerce Theme for Shopaholic

Responsive Bootstrap 4 Shopaholic theme for October CMS



1 project
# 34 in Paid of all time.


Rezume is an impactful dark one page CV website template that helps create a striking online presence



203 installations
# 28 in Free of all time.


Polished single-page business-oriented theme with a blog.


Bootstrap 5 SASS

104 installations
# 85 in Free of all time.

Bootstrap 5 SASS

Skeleton theme based on Bootstrap 5 with SASS and Bootstrap Icons.



49 installations
# 33 in Free of all time.


Single-page drone & UAV business services theme with a blog.

Component settings
  • Found the plugin useful on 18 Jan, 2022

    Beautiful plugin. Everything you need and it works great

  • Found the plugin useful on 6 May, 2021

    Is there any news about updating Magic Forms for October CMS 2?

  • Found the plugin useful on 24 Mar, 2021

    Great plugin but I noticed that it crashes when I attempt to export large amounts of data. I attempted ~20k and above records and it crashed, showing a 500 internal server error

  • Found the plugin useful on 28 Oct, 2020

    Great and easy to use plugin for forms! An essential plugin for all your OctoberCMS projects.

  • Found the plugin useful on 27 Feb, 2020

    This is fast and able to export the user submitted data easily and quickly. Some similar plugin charges $50 and yet the created simple forms takes a long time to process when user submits and also no export function for submitted data! The best for this plugin is it's free!

  • Found the plugin useful on 15 Feb, 2020

    Best plugin for forms

  • Found the plugin useful on 21 Nov, 2019

    Hi, first of all I would like to thank you for the good and very useful plugin. I have a question thought. Is there any posibility to insert in the list view the filled in value of a record? Let's say that the stored field is Driver Name, the driver name will apear when I click on the recod and see all the stored details but it would be very useful if we can see the name of the driver also in the List View because i would know that the specific record is for the X Driver.

    At this moment we can't see who filled in the form in list view and is time consuming to open each record to search for a specific persona...phone..etc.

    Thank you in advance.

  • Found the plugin useful on 20 Oct, 2019

    A really good and well-documented plugin!

    I adapted it for bulma framework which I prefer to bootstrap, I'll share it as a git if someone is interested.

  • Found the plugin useful on 12 Sep, 2019

    This is such a great idea for a plugin. I love the fact that I can use whatever markup I want. I would recommend this over the other form builders because it keeps close to the design philosophy of October itself. If you can build a partial in October with valid html form markup you will be able to use this plugin no problem.

  • Found the plugin useful on 4 Sep, 2019

    Great Plugin Ever related forms really like a magic. but i guess validation rule regex with or operator has a problem ex: required|regex:#^(+|00)9627\d{9}$#i really thanks

  • Found the plugin useful on 22 Mar, 2019

    Thanks for this wonderful plugin. It could use a better documentation, but with very little effort I was able to figure out how to make the generic form, then the empty one.

    I just would like to understand how to translate it to my language, brazilian portuguese. I've seen this lang/pt-br/lang.php on GitHub, but couldn't understand how to enable it nor how does this supports Translate plugin.

    Sadly, the lack of documentation makes it hard for non hardcore-users. :D

  • Found the plugin useful on 29 Jul, 2018


    Nice plugin! Is there any way to update data using this plugin? For example using this plugin to create a form to enter some data for a contact to database and then update some fields with updated data to database.

  • Found the plugin useful on 21 Jul, 2018

    Great job on creating this very useful plugin!!!

  • Found the plugin useful on 16 May, 2018

    Definitely could use better documentation -- needs a complete step-by-step walkthrough using screenshots (or a video).

    For others, when you override the component HTML, watch out that you call it as a component instead of a partial:

    {% component 'genericForm' %}

    {% partial 'genericform/default' %}

    Overall a great plugin though, extremely useful once you get it set up.

  • Found the plugin useful on 2 May, 2018


    is there any way how to override parameters as:

    Send Notifications -> Subject Send Auto-Response -> Subject Send Notifications -> Recipients Send Auto-Response -> Sender Address

    for dynamic use?



  • Found the plugin useful on 1 May, 2018

    Can you give an example of validation? Yes, i know about laravel validation rules, but different variants of the key-values don't work

  • Found the plugin useful on 27 Apr, 2018

    Excellent plugin.

  • Found the plugin useful on 22 Mar, 2018

    Useful App Converted to a Comment System

    I spent time building a system that can run as a comment form because I was tired of looking for one outside of the forum topic. Thanks!

    • 1.Create a page for the form
    • 2.Create a partial that is going to load the back-end data
    • 3.Set the where() method to specify what data is being queried
    • 4.Add the ajax handler to refresh partial after submission to the component
    • 5.Add the php call to the onRefreshTime()

    1. Page Markup: Summarized

    <div id="magicForms">{% partial 'testing/magicform' %}</div> <form data-request="{{ genericForm2 }}::onFormSubmit">...</form>

    2. Partial Markup: Summarized

    <ul> {% for record in records %} <li><strong>{{ record.form_data_arr.name }}:</strong> {{ record.form_data_arr.comment }}</li> {% endfor %} </ul>

    3. Parital Code: This is where the the collection methods get handy. Using the where() method I can query for the specific group. Here I am searching for the forms with 'group' and 'testing-comments'; the reverse is to put the newest comment on top.

    use \Martin\Forms\Models\Record as FormsRecords; function onStart() { $comments = FormsRecords::all(); $this['records'] = $comments->where('group', 'testing-comments')->reverse(); }

    4. Generic AJAX Form Component: Add this in More Settings -> JS on Success

    jQuery(document).ready(function($) { setInterval(function () { $.request('onRefreshTime', { update: { 'testing/magicform' : '#magicForms' } }) }, 300); });

    5. Page Code: This is needed for the javascript to call the onRefreshTime.

    function onRefreshTime() { return [ '#magicForms' => $this->renderPartial('testing/magicform') ]; }

  • author

    Replied on 25 Mar, 2018

    Hello Brandon,

    Thanks for your great comment.

    Do you want to add to the "official documentation" here?


  • Found the plugin useful on 25 Feb, 2018

    Really simple to use once you know how. Having only just started using OctoberCMS, I was completely lost on how to get this working. But following the documents linked here, this is how I "got" it: create a folder called genericform containing a default.htm file in the theme's partials folder using FTP. Added the genericform component to a page and bingo - customised form. I hope this helps others just starting out with OctoberCMS.

  • author

    Replied on 26 Feb, 2018

    Hello Steven:

    How do you think the docs can be improved?

    Also, you can contribute to the documentation here: https://github.com/skydiver/october-plugin-forms


  • Found the plugin useful on 17 Feb, 2018

    Hi for all. Plugin is great. To work captcha you need to make site work via https, because this says on google recaptcha page faq.

  • Found the plugin useful on 9 Feb, 2018

    Martin! It's a very good plugin for me, it's quick and easy to help me when making my website forms. I just started studying the october cms system 2 weeks ago. I have one problem, I can not understand how the Recaptcha section works.

    1. I filled the site and secretkeys under the system menu item.
    2. I have enabled captcha in the recaptcha settings section.
    3. With using your pre-assembled generic form I tried to work but failed. The following error is displayed: An exception has been thrown during the rendering of a template ('recaptcha' partial is not found.)

    What did I miss? How can I make it work?

  • Found the plugin useful on 9 Feb, 2018

    Best Form plugin on the October marketplace.

  • author

    Replied on 26 Feb, 2018

    Thanks Zanor!

  • Found the plugin useful on 3 Feb, 2018

    Magic Forms is great!

    There is only one demo for an example of its use.

    But after reading the comments and documentation it was possible to get it to work.

    All that I needed from the forms, I was able to implement with it!

    Thank you very much, Martin!

  • author

    Replied on 26 Feb, 2018

    Thanks for the comment Roman!

  • Found the plugin not useful on 25 Jan, 2018

    Very poor documentation, didn't understand how to use the plugin. Do you have any quick video guide?

  • author

    Replied on 24 May, 2018

    Feel free to record a video/tutorial and will be happy to include on the front page

  • Found the plugin useful on 11 Jan, 2018

    forms are not submitting on cms pages, but works on cms layouts

    I have a page registration.htm then I created the Empty AJAX Form, but it's not submitting. My other form which is contact form using Generic AJAX Form, I put it in one of my layout and it works fine.

    what should be the problem? is forms not working on cms pages?

  • Found the plugin useful on 21 Dec, 2017

    Great Plugin but the upload file button does not work. Can anyone help me please?

  • Found the plugin useful on 18 Oct, 2017

    This is a great plugin when you get it working.

    The documentation does not make the pre-requisites clear. You must ensure that the October AJAX framework is included on the page: <https://octobercms.com/docs/ajax/introduction#framework-script>;

    Additionally the component cannot be added to a partial otherwise to yet an AJAX handler not found error - it must be added to a page.

  • Found the plugin not useful on 12 Aug, 2017

    The plugin looks OK, but it's broken. I tried all three types of components: emptyForm, genericForm, uploadForm. None of them work. On sending form, the page just reloads with no errors (even in log files). I tried to change SMTP to PHP Mail in October CMS settings. It didn't help me.

    Also captcha for uploadForm didn't output anything (Google keys was set before).

  • Found the plugin useful on 11 Aug, 2017

    "The partial 'recaptcha' is not found." I am getting this problem. I tried finding the answer but none of it worked. Can you please help me?

  • Found the plugin not useful on 29 Jul, 2017

    Seems to be useful, but is poorly documented. Couldn't even put to work the default genericForm.

    Pitty :(

  • Found the plugin useful on 13 Jul, 2017

    Hello and thanks for the great plugin.

    I have a question because I get this error when I use the file uploads plugin: uploader.js:340 Uncaught TypeError: $(...).render is not a function at uploader.js:340 at uploader.js:344

    This is the syntax it's getting stuck on: $(document).render(function () { $('[data-control="fileupload"]').fileUploader() })


    I see the upload form and I can submit it but I just can't upload a file. It's not working..

    Can you help me?

  • Found the plugin useful on 11 Jul, 2017

    Hello, not sure what I'm messing I'm not receiving the emails?

    [genericForm ContactForm] group = "ContactForm" rules[name] = "required" rules[email] = "required|email" rules[subject] = "required" rules[message] = "required" rules_messages[name.required] = "name is required" rules_messages[email.required] = "email is required" rules_messages[subject.required] = "subject is required" rules_messages[message.required] = "message is required" rules_messages[email.email] = "email must be valid" messages_success = "Your message was successfully submitted" messages_errors = "There were errors with your submission" mail_enabled = 1 mail_subject = "new contact message" mail_recipients[] = "info@theen.biz" mail_recipients[] = "asma020@gmail.com" mail_replyto = "email" mail_resp_enabled = 1 mail_resp_field = "email" mail_resp_from = "info@theen.biz" mail_resp_subject = "Thank you for contacting us!" reset_form = 1 inline_errors = "display" anonymize_ip = "disabled" recaptcha_theme = "light" recaptcha_type = "image" recaptcha_size = "normal"

  • author

    Replied on 12 Jul, 2017

    Hello Asma,

    Config looks fine, are October mails working?

  • Found the plugin not useful on 31 May, 2017

    I do not understand how to install this plugins, can the documentation be clarified again and please kindly help me.

  • Found the plugin useful on 29 May, 2017

    Greate plugin! Thank you for your work very much! Can I add some js on success answer? I have 2 forms on my page and I need to add different google analytics actions.

  • Found the plugin useful on 22 May, 2017

    Hi! Excellent plugin!! but I have some error occurs, it says:

    Form session expired! Please refresh the page.

    Can you please help me solve the problem?

  • author

    Replied on 22 May, 2017

    Hello Denis, usually, this problem occurs when this line is missing on the component HTML:

    {{ form_token() }}

  • Found the plugin useful on 15 May, 2017

    Love that plugin so easy to create forms!

    What is the best way to create multiple forms?

  • Found the plugin useful on 13 Apr, 2017

    im very thanksful there's plugin that's so useful like this plugins, btw i've asking the question about my problem to outputing the value from backend to the frontend, is that must using SQL query? or it become simple like {{ form.name }} ? i've try it to outputing the value but i dont have any idea how.

    im glad if there's anyone tell me how to do that.

  • author

    Replied on 14 Apr, 2017

    Please, check the updated documentation (feedback will be welcome)

  • Found the plugin useful on 7 Apr, 2017

    Great plugin, really useful and easy to use.

    Some lack with file upload, but the support is really good and I'm sure this part will be improved over time.

  • author

    Replied on 9 Apr, 2017

    Thanks for your words.

    Yes, file upload is still beta, there is a discussion on github about the future, maybe change to another component ...

  • Found the plugin not useful on 5 Apr, 2017

    This looks like it could be a handy plugin, but the documentation terrible. Provide some screenshots, etc. so that you don't have to rely on everyone being an OctoberCMS developer to make sense of what you are doing.

  • Found the plugin useful on 23 Mar, 2017

    I like this plugin.

    One question: can you provide me with pointers on how to extend this ? say I want to save user_id (of authenticated user, a new column already added to the table thru new plugin), how to do it?


  • Found the plugin useful on 7 Mar, 2017

    recaptcha did not display, My problem is regulated in this way

    <form data-request="{{ emptyForm }}::onFormSubmit">
            {{ form_token() }}
            <div id="{{ emptyForm }}_forms_flash"></div>
            <!-- YOUR FORM FIELDS -->
            {% partial 'recaptcha' __SELF__=emptyForm %}
            <!-- SUBMIT BUTTON -->

  • Found the plugin useful on 7 Mar, 2017

    Hi, plugin is cool but i want ask. When i send form, data dont clear from fields. Its my mistake or plugin?


  • author

    Replied on 7 Mar, 2017

    Hello Petr

    There is an option to reset form, you can check here

  • Found the plugin useful on 6 Mar, 2017

    Great plugin! Easy to setup and customize!!

    Thank you very much

    Is it possible to have inline validation in the current version instead of a (possibly huge) alert-box?

  • author

    Replied on 6 Mar, 2017

    Hello Vianney:

    You can check the issue #21 and the branch inline-errors on github.

    We are testing for possible alternative to inline errors.

    Feel free to test for yourself (feedback is welcome).


  • Found the plugin useful on 4 Mar, 2017

    Like it very much so far. Used the file upload and the empty form. Both worked liked a charm so far. Thank you for all the work.

  • author

    Replied on 5 Mar, 2017

    Thanks for your words Ralf

  • Found the plugin useful on 6 Feb, 2017

    Very nice plugin, really useful, easy to use, user friendly, flexible, regularly updated... By far the best form plugin for October.

  • author

    Replied on 7 Feb, 2017

    Thanks for your comments.

    Happy to see my work helping other people.

  • Found the plugin useful on 17 Jan, 2017

    I really want to use this plugin, but it's hard for me to understand due to the "generic ajax form" being all blank with no information in it. Am I missing something?

  • author

    Replied on 18 Jan, 2017

    If you are using the empty ajax form component you need to:

    1. override the component HTML, more info here

    2. paste the provided template:

      <form data-request="emptyForm::onFormSubmit">
          {{ form_token() }}
          <div id="{{ __SELF__ }}_forms_flash"></div>
          <!-- YOUR FORM FIELDS -->
          {% partial '@recaptcha' %}
          <!-- SUBMIT BUTTON -->
    3. Replace
      <!-- YOUR FORM FIELDS -->

      with the HTML of your form (inputs, selects, textareas) and

      <!-- SUBMIT BUTTON -->

      with a submit button

  • Found the plugin useful on 15 Jan, 2017

    Thanks for your job! Can it attach file to backend/mail?

  • author

    Replied on 15 Jan, 2017

    AJAX file upload it's "too complicated" (you can read more here.

    I think the best solution will be creating a new component who refresh the page (or redirect) to upload files.

    Definitely it's something i want to see on the plugin, but, honestly don't know when.

    This option was added on v1.3.0

  • Found the plugin useful on 13 Jan, 2017

    Hi, do not work plugin. I don't understand how to setup could put the video for easy installation?

  • Found the plugin useful on 12 Jan, 2017

    Excellent plugin!!

    This is by far the best form plugin that I have used for October. Easy to use and very flexible.

    Quick question: How can we create an auto-response email to the person submitting the form?

    Thanks for this plugin!


  • author

    Replied on 12 Jan, 2017

    Thanks for the feedback!

    I will add this option to the plugin in the next version.

    Edit: this option was added on v1.2.1

  • Found the plugin useful on 9 Jan, 2017

    Great job on creating this very useful plugin!!!


email templates improvemenrs [thanks to mjauvin]

Dec 10, 2020


fixes related to October Build 469 [thanks to mjauvin]

Sep 13, 2020


added invisible reCAPTCHA [thanks to mjauvin]

May 01, 2020


added russian translation [thanks to FlusherDock1]

Feb 29, 2020


export records enhancements [thanks to Fosphatic]

Dec 29, 2019


allowing sanitize to work recursively [thanks to multiwebinc]

Nov 17, 2019


added chinese translation [thanks to everyx]

Sep 28, 2019


enhancements related to saving record and events [thanks to boxxroom]

Sep 28, 2019


fixed error with empty auto-response subject

Mar 10, 2019


pass an array with form errors to JavaScript [thanks to multiwebinc]

Jan 25, 2019


use form variables on auto-response mail subject [thanks to jiargei]

Jan 21, 2019


added Laravel custom attributes to form validation [thanks to geekfil]

Dec 21, 2018


improvements related to event functionality

Aug 13, 2018

bugfix when a form field array has more than 2 levels of depth

Jun 08, 2018

fix a nullable type error on PHP 7.0

May 26, 2018


fix on replaceToken function when replacement is null [thanks to leonaze]

May 24, 2018


added GDPR cleanup feature [thanks to Alex360hd]

May 12, 2018


you can use your form variables on notification mail subject [thanks to Alex360hd]

Apr 15, 2018

Changed database field from json to text to support MySQL 5.5

Nov 27, 2017


New option to skip saving forms data on database.

Nov 21, 2017

Store form data without escaping unicode [thanks to panakour]

Oct 14, 2017


Mail class code refactoring

Oct 06, 2017

Fix with notifications emails

Sep 10, 2017


Use custom partials for Success and Error messages

Sep 10, 2017


Fixes related to October Build 420

Aug 30, 2017


Escape HTML characters on the view records page [thanks to Andre]

Jul 30, 2017


New option "Reply To"

Jun 19, 2017


Added Events (please, refer to docs) [thanks to therealkevinard]

Jun 09, 2017


Use custom mail templates

May 24, 2017


Fixed handling arrays (radio inputs) in notification email

Apr 28, 2017


Displaying errors with fields (inline errors)

Apr 14, 2017


French translation

Mar 16, 2017


New option "Redirect on successful submit"

Mar 05, 2017


New "Anonymize IP" option

Feb 26, 2017


Fixed record detail page when form data contains an array

Feb 17, 2017


Fixed multiples reCAPTCHAs on same page

Feb 05, 2017


Added lang pt-br

Feb 04, 2017


AJAX file uploads

Feb 01, 2017


Added detailed reCAPTCHA help

Feb 01, 2017


New option to reset form after successfully submit

Jan 27, 2017


Override notifications and auto-response email subjects

Jan 15, 2017


Auto-response email on form submit

Jan 13, 2017


Export stored data in CSV format

Jan 12, 2017


Filter forms records

Jan 12, 2017


fix when using reCAPTCHA + allowed fields

Jan 07, 2017



Jan 06, 2017


Added CSRF protection

Jan 05, 2017


First version of Magic Forms

Dec 31, 2016