Skip to main content

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:

  1. Build the screen transitions yourself with JavaScript
  2. 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

ItemDIY JavaScriptFrontierline Forms
CostFreeFree
Step switchingBuild it yourselfSettings only
Progress barBuild it yourselfAutomatic
Per-step validationBuild it yourselfBuilt in
Combining with a confirmation screenRequires further workEnabled via settings
MaintenanceYour responsibilityHandled 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).

See Frontierline Forms details → Get help on WordPress.org