Tech
How to Build a Multi-Step Form in Contact Form 7 | Boost Completion Rates
Forms with too many fields lose visitors when everything is crammed onto one screen. This guide explains how to turn Contact Form 7 (CF7) into a multi-step "input → confirm → submit" form, covering both a custom JavaScript build and a plugin-based approach — including a free, no-code option.
Forms with a lot of fields feel overwhelming when every field is laid out on a single screen, and that overwhelm drives people away. Anyone who runs a form has probably seen it happen: a visitor opens a long form stacked with address, phone number, request details, budget, and more, and closes the tab the moment they see it.
This is exactly what a multi-step form solves. By splitting the input into stages — something like “STEP 1: Basic Info → STEP 2: Details → STEP 3: Confirmation” — you reduce the burden on each individual screen. Moving forward one step at a time is a proven technique for lifting completion rates, and it pays off especially well for applications, quote requests, and reservation forms.
This article explains how to build a multi-step form in Contact Form 7 (CF7).
CF7 Doesn’t Support Step Splitting by Default
CF7 is built around one form, one screen, and it has no built-in feature for splitting a form into multiple steps. It doesn’t even come with a confirmation screen by default (see how to add a confirmation screen here).
So to make a form multi-step, you’re left with one of these two options:
- Build the screen transitions yourself with JavaScript
- Use a plugin that supports multi-step forms
Method 1: Build Step Switching Yourself with JavaScript
Implementation effort ★☆☆
This approach divides the form into <div> blocks per step, then switches what’s displayed using “Next” and “Back” buttons. CSS sets the inactive steps to display:none, and JavaScript controls the progression.
<div class="step step--1">
[text* your-name placeholder "Your name"]
[email* your-email placeholder "Email"]
<button type="button" class="step-next">Next</button>
</div>
<div class="step step--2" style="display:none;">
[textarea your-message placeholder "Your message"]
<button type="button" class="step-prev">Back</button>
[submit "Submit"]
</div>
That said, this approach has its limits.
- You have to write your own per-step validation (blocking progress to the next step while required fields are empty)
- The progress bar (the “STEP 1/3” display) also has to be built from scratch
- Adding a confirmation screen on top makes the logic considerably more complex
- Getting it to play nicely with CF7’s Ajax submission takes extra work, and you’re on the hook for maintaining it yourself
A simple two-step form is doable this way, but once you factor in validation and a progress indicator, the amount of code adds up fast.
Method 2: Implement a Multi-Step Form with a Plugin
Implementation effort ★★★
The plugin approach lets you split a form into steps using settings alone. Frontierline Forms adds multi-step functionality to an existing CF7 form with no code required. The free version gives you all of the following:
- Turn a form multi-step just by dividing it into steps (no limit on the number of steps)
- “Next / Back” buttons and a progress bar generated automatically
- Support for per-step validation (blocking progress if a required field is left empty)
- The ability to add a confirmation screen as the final step
- Smooth screen transitions and scroll handling built in for mobile
Because it works with your existing CF7 form, there’s no need to rebuild anything. Combined with the confirmation-screen feature, you can put together a full “input (multiple steps) → confirm → submit → complete” flow using settings alone.
Detailed setup steps are available in the multi-step form setup guide.
Comparison: DIY vs. Plugin
| Item | DIY JavaScript | Frontierline Forms |
|---|---|---|
| Cost | Free | Free |
| Step switching | Build it yourself | Settings only |
| Progress bar | Build it yourself | Automatic |
| Per-step validation | Build it yourself | Built in |
| Combining with a confirmation screen | Requires further work | Enabled via settings |
| Maintenance | Your responsibility | Handled by the plugin |
Summary
Forms with many fields can see their completion rates improve by going multi-step. Since CF7 doesn’t support step splitting out of the box, you’re choosing between a custom JavaScript build or a plugin that adds the feature.
If you want a progress bar, per-step validation, and a confirmation screen, the maintenance cost of building it yourself adds up quickly. Frontierline Forms lets you add multi-step functionality to an existing form through settings alone, and it can be combined with a confirmation screen too — both available without limits in the free version.
If you also want to use spam protection like Cloudflare Turnstile on the same form, see How to Use Turnstile with a Confirmation Screen in Contact Form 7 for setup details.
WordPress Plugin
Multi-step, built with settings alone.
Just split your Contact Form 7 form into steps to get a multi-step form complete with a progress bar, per-step validation, and even a confirmation screen. With Frontierline Forms, multi-step forms, confirmation screens, and database logging of submissions are free and unlimited. Slack/Chatwork notifications and auto-reply emails can be added with the Pro version (from $39.99/year).