QuickFormQuickForm is a form plugin for a Joomla or WordPress website that will help you create a dynamic order form, calculator or feedback form.

The extension features a clear administrative interface, built-in anti-spam protection, minimalist code and high rendering speed per page. In the admin panel you will find a history of sendings, a file manager, search in letters, import and export of projects, flexible tools for developing forms with ready-made widgets and fields.

In addition to ordinary contact forms and calculators, the plugin can create qualifiers, branched tests and surveys, for example, it will create a diagnostic form with dependent fields and a tree (multi-level) structure. In cart mode, QuickForm will create a store with a complex product structure, where the product is not limited either in structure or in the complexity of calculating the cost. This could be an order form for plastic windows, printed products, an interactive form with changing fields and pictures, an appointment form, a scientific calculator or a product cost calculation form.

Despite its impressive functionality, QuickForm is suitable if you simply need a simple form for a website. This is a compact and fast extension, which is reflected in its name and is part of the development concept. Beginner users of Joomla and WordPress will be quite capable of developing a fairly complex web form. The extension is free provided that the author's link is preserved.

The constructor supports forms in a modal window, sending by Ajax, cloning fields, step-by-step forms, dependent fields (of any nesting level), multiple forms on one page, “form to cart” functionality, individual design for each form, different types of calculators for simple and complex cases.

Ready-made forms for the site, which you can download below on this page, are given as examples. Developing complex ones will require some knowledge and skills. The more of them, the more functional and interesting forms you can create. This form builder can be installed on any version of Joomla and WordPress, including the promising J-6 and WP-7.

Download QuickForm.
Compatibility: Joomla! 3+
Languages: en-GB ru-RUes-ESfr-FR
Compatibility: WordPress 2.7+
Languages: en-GB ru-RU es-ES fr-FR
Cube calculation
send it to email

QuickForm can create a wide variety of web interfaces. For example, a powerful online store on a one-page site.


Are you ready to contact us?

Adaptive contact form.

Ready-made project that can be downloaded and imported into QuickForm.
Mainly designed for modal display:

Contact us
Download import file: cont2.qf3.zip(2 KB)

Simple contact form for website.

A simple project in a neutral style. It's in modal view:

Contact us
Download import file: cont1.qf3.zip(2 KB)
Contact us

Other examples:
Doctor appointment formSimple loan calculatorMore examples

Interactive form with pictures, dependent fields and a calculator.


QuickForm and CSS.

QuickForm provides php and javascript functions to make the form work, but you need to write the display styles yourself. In simple cases, you can download one of the examples presented on this site, but in general, this is a purely individual element of the creative process.

By default, the component includes one CSS file with styles: default.css. This is not the file you need to use in your project. It includes a minimum set of rules for all extension widgets, and is needed in order to make a copy of it. You don't need to make changes there - widgets are added to the component, and this file is updated along with it. You need to create your style file in the form project settings.

Open the project settings and create a new style file with a name like example.css. Be sure to check the "copy styles" button. Then a file will be automatically created with the class prefix already written, thanks to which forms with different designs do not interfere with each other on the page. This prefix is equal to the file name, in this case it is "example". Example:

.example {
    font-size: 14px;
    max-width: 800px;
    margin: 0 auto;
    padding: 80px 0;
    background: linear-gradient(0, #1a5889, #56d7d3);

.example .qf3 {
    width: 74%;
    margin: 0 auto;

Now you can remove the unused css rules, style the form for the site design, ask me questions via support, in general, do the usual things.

Please note that there are features in QuickForm. For example, the class "compact", which is added to the form if the width of the parent container (not the width of the browser window) becomes less than 500px. This is a useful element for responsive layout. QuickForm also adds a "touch" or "desk" class, depending on whether the device is a touchpad.

QuickForm and conditional fields.

QuickForm has the ability to create dependent fields and dependent field groups. It can also be some text, images, styles or html code. Dependent fields in QuickForm can have an unlimited nesting level, are compatible with the calculator and other widgets.

It is possible to create a tree structure of a form of any complexity. The creation process is simple and does not require any description. Just attach any field group to a field from another field group.

Below you can see an example that uses dependent fields, widgets "qfAdder" and "spoiler".

Cart empty

QuickForm and calculator.

QuickForm creates calculators from simple trading calculations to complex scientific calculators. Any form of a component can be turned into a calculator. There are four types of calculators built into QuickForm, which may be more convenient in one case or another. The description of these types is located in the project settings of the form in the "calculator" tab. I will try to reveal some details.

The calculator type is "default". This is a unique option that does not require any formula. Go to the settings of any field and look at the calculator tab. Enter the "math" parameter, for example, +5. Add another field with the same "math". Add a special field "calculatorSum" to output the result. You will see that the calculator is working and shows the result: 10. Using various modifiers, brackets and dependent fields, you can solve most mathematical problems. Each dependent field can act as an if else condition, branching the logic and launching its own calculation branch. See the example of an insurance calculator made using this option.

Unfortunately, not every option can be calculated using this type. Of the limitations is the fact that thus displays only one result. In addition, it happens in mathematical logic, requiring reuse of some variable in the calculation. For example, we have the following formula: result = (a + b) * c + a * c + b. It will be difficult to make such a calculator the "default" way.

The calculator type is "multiple". A feature of this type of calculator is the binding of mathematical logic to the id of the form fields. This is a flexible option that can display any number of calculation results. It supports logical operations, the distribution of mathematics between fields and the defining formula.


The formula for this calculator is:
408.4 = {408.2};
408.5 = {408.1} * {408.2}

408.4 and 408.5 - this is the id of the special fields "calculatorSum" (two of them). One displays the number of days, the second displays the product of the number of days by the tariff. {408.2} - this is the id of the calendar field. {408.1} -id of the apartment class selection radio group. The "math" radio button contains the daily rate.

The expression 408.5 = {408.1} * {408.2} literally means: write in the field with id 408.5 "math" of field {408.1} multiplied by "math" of field {408.2}.
This example can be downloaded here: Hotel Cost Calculator

The calculator type is "simple". This calculator uses the traditional notation of a formula using variables. The variable name is written to the "math" fields. In the formula, a mathematical expression is written that includes these variables. The usual common logic. This is a simple but limited type of calculator because it counts fields whose value is changed by the user. For an example, see A simple loan calculator.

The calculator type is "custom". This one is written in php "however" and "as needed". The most functional and flexible type of calculator. In most cases, I use this one, as I tend to be approached for complex solutions.

The structure of QuickForm is flexible. You can make calculators without using math at all. Or you can add your own new type of calculator programmatically. You can read more about the calculator on the page Calculator form. Contact me, I will be happy to help if you have any questions or need development.

How to show the form on the site page.

The output to the page is carried out in different ways:

1. Output by the content plugin plg_content_qf3. Allows you to add a form to the text of the material of another component, for example com_content. It can be output via any component that supports content plugins. To do this, insert the following instruction in the desired place of the text: {QF3=1}, where 1 is the id of the form project.

2. Output by the module mod_qf3. This will allow you to display the form on several pages. Publish module at the desired position of the template, specify its parameters project id of the form that you wish to withdraw.

3. Output by the code. It is very simple to do:

echo QuickForm\qf::form(id); //form project id

Description of the fields.

Before describing, I will clarify a few points. All attributes available to fields in standard html can be written in the "custom" setting. Placeholder duplicates the field header in the email when this header is empty, so it can be used for those fields that do not have it by the standard.

1. customHtml. Allows you to embed arbitrary html code into the form, can be used to display text, pictures, styles, scripts, and more.

2. customPhp. This most universal field which includes two associated user functions. One for a conclusion in the form of, another for a conclusion in Email. As a matter of fact, it is the same customHtml, but with parsing php. I shall not describe any details as it is a field for the experienced users, capable to understand with it independently.

3. qf_file. Displays a customized file upload button. To add multiple files, use the "multiple" attribute, to sort files on the client side, use "accept". In the field settings, you can specify a "white list" of file types. And also, you can enable the upload function to the server. Uploading files to your server solves the problem of blocking emails with attachments, as there is no need to attach a file to the email.

4. calculatorSum. Displays the result of the calculator. To withdraw multiple amounts, you need to withdraw this field several times.

5. recaptcha. It has a decorative function, since the component has its own protection. It is not necessary to use.

6. cloner. clonerDesigned to display cloned blocks of fields. Functionally, it is a container that encloses a group of component fields. When you click on the "plus" button, a copy of the group is loaded. In the settings, you can choose a vertical or horizontal cloner. The markup of the horizontal version is tabular, respectively, does not imply the presence of dependent fields inside the clone. The vertical version, on the other hand, can contain both dependent fields and other nested cloners.

The picture shows a vertical cloner nested with a horizontal one.

When using a calculator, the cloner can display not only the total amount, but also the sums in each clone separately. This can be enabled in the field settings.

7. qfincluder. Another container that includes a group of component fields. For example, you can create a separate project that will consist of several frequently used field groups, then include these groups in another form.

8. backemail. Displays a checkbox, by selecting which the user will be able to receive a copy of the message to their email address. Sending is done to the address from the user's registration data, respectively, in order to receive a copy, he must be authorized on the site.

9. addToCart. The field that is used in the store mode instead of the submit button. When you click the button, the form will not be sent to the mail, but will be added to the plugin's cart. Learn more about the store mode on the page: Form with cart.

10. qfTabs.tabsDisplays the "tabs" interface. You can specify a vertical or horizontal position. You can output not only fields, but any content or html code. The picture shows an example of horizontal tabs. More information about tabs is available: Form with tabs..

11. qfcalendar. Displays a stylized calendar. You can display a single or dual calendar. The dual calendar, when using the calculator, writes to the v "math" setting the number of days that make up its difference. In the settings you can turn off past days, weekends.

12. stepper. Displays a step-by-step form interface (step 1, step 2...).

The stepper widget has two parts.
1. stepperbox is a container that bounds the area of the form in which it will be executed. That is, the scope of the widget. Can be all or part of a form.
2. stepperbtns - forward-backward buttons. (Must be inside the container).

You can download an example here: form with t-shirts
Another example: A simple form example with the "stepper" widget

13. spoiler. A field that displays hidden content (part of the form). When the button is clicked, the content appears. When pressed again, it hides. In the settings, you can specify the modal display of hidden content.

14. qfAdder. A widget that provides a simplified shopping cart interface. To use it, you do not need to enable the store mode in the component. The widget consists of two special fields: "boxadder" - a set of added products, and "addercart" - a cart with added products. Thus, the basket can be displayed separately in the right place on the form.

Problems and Frequently Asked Questions

1. The form appears for a moment and disappears. This error is related to author link issues. If you do not have an activation code, the author's link must be present on the page. Otherwise, the form will not be displayed. If you use plugins that close external links from indexing, then add QuickForm to the exceptions or get an activation code.

2. Calculator does not consider. Check the browser console for JavaScript errors. Serious errors in external scripts can completely or partially block the operation of a component or the entire site.

3. Calculator does not count correctly.The calculator counts according to the rules of mathematics. If the result is not what you expected, look for a math error.

4. Emails come to the spam folder. This means that the IP address from which your hosting sends emails is in the black list of the mail server that the email receives. There are other reasons, they are determined by the operating conditions of the mail server to which the mail arrives.

5. Emails do not come at all. The component uses the built-in Joomla function to send mail. Thus, the first thing you need to make sure that your website is able to send e-mails. Do send a test mail from the global settings of Joomla administration panel.

6. Form does not look nice. QuickForm was not created as a style solution, it is a functional solution.

7. Captcha does not work. In the component settings, you must enter the keys corresponding to the domain of your site. If your site has moved to another domain, respectively, you need to get new keys.

8. The author's link is displayed in large font. As a rule, this means that in the project settings no css file is selected that is responsible for the styling.

Thanks for QuickForm.

QuickForm, as a free extension, places an author's link on the site page. But there is a way to remove this link legally. To do this, you need to help develop the project. An activation code that removes the link will be sent automatically to the address you specify below.

Make a donat:

And get an activation code:

Or contact me: support

Add comment


# Dave 2024-07-13 23:39

I am trying to make conditional "nutritional defiencies" quiz for human biology.

Does anyone have any video tutorials on this to make it relatively simple to do? I already searched youtube and only 2 exist that I can see and they are in Russian?
# funcvar 2024-07-15 00:14
This plugin is well suited for creating tree-based surveys, tests, support or diagnostic forms. Usually there are no questions with this, it is quite simple. You create fields and combine them into groups. Then you attach these groups, for example, to different select options or radio group inputs. And to score points for correct answers, you can use the built-in calculator.
# Rodrigo Gould 2023-07-18 00:15
I'm having trouble setting all the fields as REQUIRED. How do you set the fields as MANDATORY?
# funcvar 2023-07-18 01:24
Just open the field settings and add "required". You can download one of the examples from this site and see it.
# Cipri88 2023-04-01 13:51
Hi, I'm having trouble sending emails. When I fill out the form and hit send, I get "This form cannot be submitted". From the jooomla backend it does send the test mail.
# funcvar 2023-04-02 06:41
It needs to be looked at locally. Perhaps you are using your own (not from a component) submit button.
# Jos 2023-01-20 17:58

Thanks for this nice tool.
I'm learning now and playing around. So far all is fine except the following:

I have a form and when users fill it out they do NOT receive a copy of the message.
The message is only send to me.
I added the box "backemail", but even than there is no mail sent... --> I also receive the message: (Authorization required)

Any help is appreciated.
# funcvar 2023-01-20 18:15
In the latest version QF, the behavior of the "backemail" field has been changed. Because this function could be used in illegal actions. Now it is possible to receive a copy of the email only to the address from the user's registration data. Accordingly, he must be authorized for this.
# Jos 2023-01-20 22:16
Thanks for your prompt reply.
So, if I understand correctly I cannot use QF for non-registered users to ask for information and that they receive a copy to their mail themselves?

That would be a pity
# funcvar 2023-01-20 23:27
You cannot send an email to any address that the user specifies in the field. This address must be verified. Otherwise, you may get problems.
# pv-dude 2022-10-12 13:44
Thank you for a great form builder that I used to design a solar yield calculator. My question is: Is there a way to export a project/form and import it into another Joomla installation? How?
# funcvar 2022-10-12 15:44
It's on the main page of the component. At the top there are two buttons: import and export.
# pv-dude 2022-10-12 16:07
Thank you for your quick reply, but I can see only 4 buttons: Add new, Publish, Deactivate, Delete plus a Help button on the right. Is this not the main page?
# funcvar 2022-10-12 16:11
Are you using the latest version of QuickForm?
# pv-dude 2022-10-12 18:46
unfortunately, after updating I could have exported my calculator, but it is not working anymore
# funcvar 2022-10-12 20:19
It doesn't work because the field and project IDs have changed since the import. This has been resolved in the latest version.
# pv-dude 2022-10-12 16:25
I just noticed I had to update the component, and now the buttons are there.
# alex 2022-10-10 13:43
Attachments won't be saved in ../components/assets/attachment/COM_QF_TEMP_FOLDER_NAME

What's to do?
# funcvar 2022-10-11 14:24
You need to allow file uploads in the component's general settings. After that, you will be able to use this function in the settings of the input[file] field.
# manfred 2022-09-07 12:10
is it possible to use the users email address to use for the reply field (send from),
so when answering to the message I/we don't have to copy the email-address first.
# funcvar 2022-09-07 14:00
Of course. QuickForm does this itself. Use: add fields -> one-off -> useremail instead of input[email]
# Richard 2022-08-31 12:32
after the current update to Joomla 4.2.1, the fields can no longer be edited.
Best regards
# funcvar 2022-08-31 16:08
This needs to be looked at individually, because there are no more messages like this. Write to me in support.
# Nony 2022-08-25 21:56
Is it possibly to change the email subject field from a submitted. As an example, in the form you will have an "Event Name" field and whatever the user enters will be the subject of the email.
# funcvar 2022-08-25 22:13
No, you can set the email subject as a string and you can use variables. These are: {replacerName}, {replacerId}, {replacerDate}. As you need, you can do code revision, but it's not here in the comments.
# Barbara 2022-08-22 21:50
1. I have setup two email addresses but I do not receive any form information.

3. How can I extract the results?
# funcvar 2022-08-23 01:15
First, check if your site can actually send emails. You did not specify which CMS you are using. If it's Joomla, send a test email from the control panel.
If you need more detailed information, it would be better to open a topic on the Joomla forum. There can be many reasons.
# Barbara 2022-08-23 21:26
Yes it can actually send emails - some of the results from the submissions have been already sent to email no 1 but not to email no 2.
I have setup it as
email no 1; email no 2;
Secondly some of the submissions have not been sent to email no 1
Joomla CMS
# funcvar 2022-08-24 00:27
Why do you write email semicolon if it says you need comma splice? Please open a forum topic, I don't want to bloat the comments on this page.
# maha 2022-06-09 14:04
what means Form error_qfuseremail ... ??
Can't figure out, what's wrong ... Appreciate your help ...
# funcvar 2022-06-09 16:48
Possibly misuse of the "backemail" field. Requires the user's email to which a copy of the message will be sent.
# Mark 2022-04-13 21:16
Where is uploaded file location
# funcvar 2022-04-20 07:47
Open the Attached files section in the menu and hover over any file. You will see the address.
# Mark 2022-04-03 17:43
Is that possible to disable send email and just store it data to database/table...?
# funcvar 2022-04-20 07:27
This cannot be done using settings. But it can be done with a simple change in the code. These questions are best asked on the forum.
# Nick 2021-12-05 01:00
I would like the option to receive the users IP address in the contact e-mail set to the webmaster. Can this be done using the customPHP field?
# funcvar 2021-12-05 02:23
It's possible. customPHP field allows you to add any functionality to the form. But if you are going to output this html in an email, you will need to consider the markup of the email template.
# Nick 2021-11-26 16:14
Great extensions. Would like to use PayPal, is that possible?
# funcvar 2021-11-26 19:14
Unfortunately, this is not possible in my country. But I gave here payment systems that work everywhere, you can use them. You can also write to me, we will think of something.
# zamazeev 2021-11-18 15:43
Error during installation - Parse error: syntax error, unexpected '.', expecting ',' or ';' in /home/inome/inome-group.com.ua/www/components/com_qf3/classes.php on line 59

Joomla! 3.9.5 Stable
# funcvar 2021-11-26 19:16
This happens with old php version on your server. I'll fix it soon.
# Ali 2021-09-26 20:35
Thank you so much for perfect extension,
it's very useful !
# Stephen J. 2021-06-09 14:16
I just want to thank you for such a wonderful extension. Great job.
# xena 2020-11-27 17:19
Hello there
I used your form on my website but im having a problem with emails.
It doesnt sen anything... whe i try to send the form i get an error "FORM error_qfuseremail"
I did try to send a test email from my page and its working, but the form doesnt...
Any ideas!? please!?

# funcvar 2020-11-27 17:34
You need to contact support to find out the cause of the problem. This is not a topic for comment.