Getting Started
This guide provides a brief overview of Freeform's features, with links to more information.
Introduction
Freeform is a plugin that provides an intuitive interface for admins and clients to build and manage simple or complex forms. The form builder feature allows users to see a live preview of the forms they're building, making it easy to customize and modify. Freeform is designed to be user-friendly and allows users to access almost everything they need without navigating to other areas in the control panel. Despite its simplicity, Freeform is also powerful and flexible - offering a range of features, settings, and options to meet different requirements.
Forms
Each form is built inside the intuitive form builder. This is where you can design the form layout, configure which fields are required, set up integrations, email notifications, conditional rules, validation and more. Freeform also allows for multi-page forms and has built-in spam protection options.
The form builder is a workspace divided into 5 sections:
- Layout
- Notifications
- This is where you configure email notifications for the form. Freeform allows you to set up 6 different kinds of email notifications, including at template level with the dynamicNotification parameter in your Form query.
- Rules
- This is where you can configure fields to show or hide based on the contents/selection of other fields, and even skip pages or submit the form based on the contents/selection of fields on a previous page.
- Integrations
- This is where you can configure various types of integrations for your form. It will only show integrations that have been configured/set up in the Freeform Settings area.
- Settings
- This is where you configure all settings and behaviors for the form.
Fields
Freeform uses its own set of field types. The form builder will display all available field types for the form (will differ between editions of Freeform). These can then be added to forms indefinitely.
Email Notifications
Email notification templates are global and can be reused for multiple forms, saving you time when managing many forms. Email templates can be managed within the control panel (saved to the database) or as template files. All notification templates can be created and customized at Freeform → Notifications (or if using files, you can edit them in your favorite editor, etc).
Freeform allows you to send email notifications upon submittal of a form 6 different ways, each with its content/template:
- Admin
- Specify the email address(es) you'd like to be notified of the successful submission of the form.
- Conditional
- Specify the email address(es) you'd like to be notified of the successful submission of the form.
- User Select
- Allow the user to choose from a predefined list of options to be emailed via select dropdown/radios/checkboxes field.
- Template-based
- At the template level with the
dynamicNotification
parameter in the Form query.
- At the template level with the
- Email Fields
- To the user submitting the form, with the email addresses specified/selected in the Email field type.
- User-Defined
- To a user-defined email address (e.g. Tell-a-Friend form), with the email addresses specified/selected in the Email field type.
Formatting Templates
Freeform attempts to do all the heavy lifting when it comes to templating. Our looping templating approach allows you to automate all or almost all of your form formatting. This can be achieved by using ready-made options or custom-building your own formatting templates.
Forms can be generated on the front-end templates two different ways:
- By assigning one of the predefined formatting templates (stored as a standard Twig template in the craft/templates directory) inside the form builder and using the Form query render() method. This approach is very portable / DRY and works similarly to an include. Then simply insert 1 line of code in the template you want your form to load in:
{{ freeform.form("yourFormHandle").render() }}
- By coding the formatting directly within the template you want the form to appear in, using the Form query. We recommend the first approach, but this option is technically available if your project requires it.