Enables the Contact Form 7 plugin to create multi-page, multi-step forms.
I needed a contact form that spanned across multiple pages and in the end would send an email with all the info collected. This plugin adds onto the popular Contact Form 7 plugin to do just that.
Sample of this working is at https://webheadcoder.com/contact-form-7-multi-step-form/
Requires the Contact Form 7 plugin, version 4.8 or above, by Takayuki Miyoshi.
Usage
Create one page or post for each step in your multi-step form process. If you have 3 steps, create 3 pages/posts. You will need the urls to these when creating your forms.
Create a Contact Form 7 form.
Place your cursor at the end of the form.
On the “Form” tab of the Contact Form 7 form, click on the button named “multistep”.
In the window that pops up, check the checkbox next to “First Step” if this is the first step of your multi step forms. If this is your last step in the multi step forms, check the “Last Step” checkbox. All other checkboxes are optional.
The Next Page URL is the url that contains your next form. If this form is the last step, you can leave the URL field blank.
Click “Insert Tag”
Save your completed form and place the form’s shortcode into the appropriate Page/Post you created in step 1.
Repeat for each form in your multi-step form process.
On the last step, you probably would want to send an email. Make sure to check the “Send Email” checkbox in step 5. On the Mail Tab, simply enter the mail-tags as you normally would. For example if your first form has the field your-email
you can include [your-email]
in the Mail tab on your last form. Note: CF7 will see this as an error because your-email
may not be displayed on the current form. You can safely ignore this error.
Multistep Tag Options
Name – The name of this multistep form-tag. This is required, but is currently not being used.
First Step – Besides marking the first step of your multistep forms, this allows any form to act as the first step and show when no previous data has ben submitted. This is useful when you want some users to skip the first step.
Last Step – Besides marking the last step of you multistep forms, this clears the data from user’s browsers. Once they submit this form they won’t see their data populating the forms anymore.
Send Email – If this is checked the form will send an email like a normal Contact Form 7 submission.
Skip Save – If you use Flamingo or CFDB7 to save submissions to the database this prevents saving this form submission.
Next Page URL – This is the URL your users will go to after the form is submitted.
Additional Tags
[multiform "your-name"]
The multiform
form-tag can be used to display a field from a previous step. Replace your-name
with the name of your field. This is only for use on the Form tab, this tag will not work in the Mail tab.
[previous "Go Back"]
The previous
form-tag can be used to display a button to go to a previous step. Replace Go Back
with text you want to show in the button.
Messages Tab
When a visitor to your site visits the 4th step in your multi step form without filling out the 1st step, the message “Please fill out the form on the previous page.” will be displayed. You can change this on each form in the Messages tab.
What this plugin DOES NOT do:
This plugin does not support file uploads on every form. If you need to use file uploads make sure to place it on the last step.
This plugin currently does not support “pipes” in the select field. See https://contactform7.com/selectable-recipient-with-pipes/ for more on what “pipes” is on the Contact Form 7 site.
This plugin does not load another form on the same page. It only works when the forms are on separate pages. Many have asked to make it load via ajax so all forms can reside on one page. This plugin does not support that.
PRO Version
If you expect to have a lot of data submitted through your multi-step forms, the Pro version may be able to help you better. The PRO version uses Session Storage so it is able to handle roughly 1,000 times more data for your multiple forms. In total it can handle about 5MB vs 4KB in the free version. Currently the Pro version REQUIRES the WordPress REST API and Contact Form 7 AJAX Submission to be enabled.
Another feature the Pro version offers is the ability to skip steps with the “Contact Form 7 – Conditional Fields plugin”. Learn more here.
Like all Contact Form 7 forms, you still need to add a button to submit the form. Use the normal submit button with any label you want like so [submit "Next"]
.
The multistep
form tag is a hidden field and tries not to add any spacing to your form. In this effort, anything directly after this tag may be hidden. To prevent this, add a carriage return after the multistep
form tag, or just follow the directions and place the form tag at the end of the form.
It could be one of these reasons:
[multistep multistep-123 first_step "/your-next-url/"]
If your form reloads the page after hitting the submit button, you either disabled the WordPress REST API or javascript for Contact Form 7 isn’t working correctly. Please see the Contact Form 7’s troubleshooting page for more information:
https://contactform7.com/why-isnt-my-ajax-contact-form-working-correctly/
[multiform “your-name”]
The multiform form-tag can be used to display a field from a previous step. Replace your-name
with the name of your field.
The multiform form-tag should only be used on the Form tab. On the Mail tab follow the instructions from the Contact Fom 7 documentation. So if you wanted to show the your-name
field, type [your-name]
.
It’s also important that the last form has the multistep form-tag.
Yes, you can. Make sure to check the “Send Email” checkbox or have the send_email attribute in the multistep form-tag like: [multistep multistep-123 first_step send_email "/your-next-url/"]
.
Make sure you have the multistep
tag on each and every form.
It is very common for other plugins to have javascript errors which can prevent this plugin from running properly. Deactivate all other plugins and try again.
The multistep
form tag is a hidden field and tries not to add any spacing to your form. In this effort, anything directly after this tag may be hidden. To prevent this, add a carriage return after the multistep
form tag, or just follow the directions and place the form tag at the end of the form.
Make sure to check the “Skip Save” checkbox or have the skip_save attribute in the multistep form-tag like: [multistep multistep-123 skip_save "/your-next-url/"]
.
When checkboxes are not checked they aren’t submitted through the form so the last step of the form doesn’t know the unchecked checkbox field exists. To get around this issue add a hidden form tag like [hidden field-name]
to the last step. This way the last step will either submit the previously set value or a blank value.
In Version 4.0 the format of the multistep form-tag has changed dramatically. The old format is backwards compatible and will still work until January 2021. Beyond that the old format is not guaranteed to work with newer versions. More Info: https://webheadcoder.com/contact-form-7-multi-step-forms-update-4-0/
Contact From 7 version 4.8 or above is required for this version.
* fixed incompatible JSON_UNESCAPED_UNICODE for PHP versions < 5.4.
Contact From 7 version 4.8 or above is required for this version.
* fixed not redirecting to next step on older iPad browsers.
* fixed illegal offset exception warning.
* added JSON_UNESCAPED_UNICODE for czech language.
Contact From 7 version 4.8 or above is required for this version.
* fixed back button on firefox.
* fixed url not displaying correctly when it has the & symbol.
Contact From 7 version 4.8 or above is required for this version.
* fixed back button going back more than one step.
Contact From 7 version 4.8 or above is required for this version.
* fixed an issue where a notice occurred when using scan_form_tags on servers that displayed PHP notices.
Contact From 7 version 4.8 or above is required for this version.
* fixed back button not working when using with Contact Form 7 version 4.8.
* fixed fields from previous steps not showing up when using with Contact Form 7 version 4.8.
Thanks to @eddraw, updated deprecated functions.
[multiform]
tag causes the field to blank out and not show in emails on certain servers.