Long forms kill completion rates. When a user lands on a form with 15 or 20 fields, most of them leave before they start. Breaking a form into logical steps — “Personal Details”, then “Employment”, then “Preferences” — reduces the perceived complexity and gives users a sense of progress.
If you’re already using Advanced Custom Fields to structure your WordPress data, you can build multi-step forms (also called multi-page or multistep forms) using ACF field groups without writing custom JavaScript or switching to a separate form builder.
This guide shows you how to set up multi-step forms in WordPress using ACF and the Advanced Forms plugin.
New to ACF frontend forms? Start with our complete guide to building frontend forms with ACF →
Why Use Multi-Step Forms?
Multi-step forms improve the user experience for any form longer than 5–7 fields. Breaking a 15-field form into 3 steps of 5 fields reduces cognitive load and gives users visible progress as they complete each section.
They’re particularly effective for:
- Job applications — personal details → qualifications → experience → availability
- Event registrations — attendee info → session selection → dietary requirements → payment
- Membership signups — account creation → profile details → preferences → terms acceptance
- Property listings — basic details → location & pricing → photos & description → features
- Customer onboarding — company info → technical requirements → integration preferences → billing
The benefit isn’t just aesthetics — it’s completion rates. Users who complete Step 1 have invested effort and are more likely to continue through Steps 2 and 3. A single-page form with the same fields gives users no sense of progress and no psychological commitment.
Multi-Step Forms in WordPress: Your Options
General Form Builders (Gravity Forms, WPForms, Ninja Forms)
These plugins have built-in multi-step support and work well for standalone forms — contact forms, surveys, and simple data collection. They have extensive add-on ecosystems, which is valuable for standalone forms.
However, they each have their own field system that’s separate from ACF. If you’re already using ACF to structure your custom post types, using a separate form builder means:
- Defining your fields twice — once in ACF for wp-admin, once in the form builder for the frontend
- No connection between form submissions and your ACF data model
- Two different field configuration UIs to learn and maintain
- Form submissions stored in the form plugin’s own tables, not connected to your posts or users
When your data model is already in ACF, that ecosystem doesn’t help — you need a form builder that speaks ACF.
Custom JavaScript on Top of acf_form()
If you’re using ACF’s acf_form() function, you can build multi-step navigation with custom JavaScript — hiding and showing field groups, managing step state, validating per step, and handling the Previous/Next buttons.
This gives you full control but requires significant development:
- Step navigation UI (progress indicator, Previous/Next buttons)
- Per-step validation before allowing progression
- Browser history management (back button behaviour)
- Accessibility (focus management, screen reader announcements)
- Mobile-responsive step indicators
Each of these features needs testing across browsers and devices, and any ACF update could break your custom step navigation. For a one-off form, this might take a day or two of development. For multiple forms or forms that change over time, maintaining the JavaScript becomes an ongoing cost.
Advanced Forms with Page Fields
Advanced Forms provides a Page field type that defines step boundaries within a form. You add Page fields between sections of your ACF field group, and Advanced Forms automatically generates the multi-step navigation — Previous/Next buttons, step indicators, and per-step validation.
No JavaScript to write. No separate step configuration. Just ACF fields with Page fields between them.
Note: The Page field type is provided by Advanced Forms — it is not a native ACF field type. It appears in the ACF field type selector under the “Forms” category once Advanced Forms is installed. Both Advanced Forms Free and Pro include the Page field and multi-step support. Both versions require ACF Pro v5.7+.
Looking for a WordPress multi-step form plugin that works with ACF? Advanced Forms adds multi-step support with zero custom code.
Step-by-Step: Creating a Multi-Step Form in WordPress with ACF
Step 1 — Create Your Form
In the WordPress admin, go to Forms → Add New (added by the Advanced Forms plugin). Give your form a name — for example, “Job Application”.
Configure your form settings:
- Entries: Enable if you want to view submissions in wp-admin (available in the free version)
- Email notifications: Add notification emails for applicant confirmation and admin alerts (available in the free version)
- Success message or redirect: What happens after the final step is submitted
Step 2 — Set Up Your ACF Field Group
Create an ACF field group and assign it to your form using ACF’s location rules:
Show this field group if: Form is equal to “Job Application”
Add your fields organised by logical sections. For a job application, you might have:
- Full Name (Text)
- Email (Email)
- Phone (Text)
- Current Role (Text)
- Years of Experience (Number)
- Skills (Checkbox)
- Cover Letter (Textarea)
- Resume (File)
- Availability (Date Picker)
- Preferred Salary (Number)
Step 3 — Add Page Fields Between Sections
Now insert Page fields to divide the form into steps. The Page field type is found under Forms in the ACF field type selector (added by Advanced Forms).
Your field group should look like this:
- Page: Personal Details ← Page field
- Full Name
- Phone
- Page: Experience ← Page field
- Current Role
- Years of Experience
- Skills
- Cover Letter
- Page: Final Details ← Page field
- Resume
- Availability
- Preferred Salary
Each Page field becomes a step label in the form navigation. The fields between two Page fields become the content of that step.
Step 4 — Display the Form
Add the form to any page using the shortcode, Gutenberg block, or PHP function:
Or in PHP:
advanced_form('job-application');The form automatically renders with multi-step navigation. Users see the first step’s fields with a “Next” button. Subsequent steps show “Previous” and “Next” buttons. The final step shows “Previous” and “Submit”.
Step 5 — Configure Per-Step Validation
ACF’s built-in field validation runs per step. If a user tries to click “Next” without filling in a required field on the current step, they’ll see the validation message before they can proceed.
Set fields as required in the ACF field group editor as you normally would. Advanced Forms respects these settings per step — users aren’t forced to fill in Step 3 fields to get past Step 1.
Advanced Multi-Step Features
AJAX Submission
By default, submitting the final step triggers a full page reload. To submit via AJAX instead (no page reload), add the ajax parameter:
With AJAX enabled, the form submission happens in the background. The form is replaced with your configured success message or the user is redirected — all without a page reload.
Conditional Steps
ACF’s conditional logic works within multi-step forms. You can show or hide entire fields within a step based on values from earlier steps, or use conditional logic on a Page field itself to skip entire steps based on previous answers.
For example, in a registration form:
- Step 1: Account Type — “Are you registering as an Individual or a Business?”
- Step 2: Business Details — Only shown if “Business” was selected in Step 1 (set conditional logic on the Page field: show if Account Type equals Business)
- Step 3: Contact Details — Shown for both Individual and Business registrations
This keeps the form focused — individual registrants never see business-specific fields, and the step count adjusts automatically.
Storing Multi-Step Form Data in Custom Tables
If your multi-step form collects structured data that you’ll need to query or export — job applications, property listings, membership profiles — consider storing the submissions in custom database tables.
The ACF Custom Database Tables plugin works with Advanced Forms to store entry data in organised, typed database columns instead of wp_postmeta. This makes it fast to query (“show me all applications from the last 30 days with 5+ years experience”) and simple to export.
Read our guide to storing ACF data in custom database tables →
Frequently Asked Questions
Does multi-step work with AJAX submission?
Yes. Add ajax="1" to the shortcode and the form submits without a page reload. Step navigation between steps is handled client-side, and the final submission happens via AJAX.
Can I have different validation per step?
Yes. ACF’s required field validation runs per step. Users must complete required fields on the current step before they can proceed to the next one. Fields on future steps are not validated until the user reaches them.
What’s included in the free version vs Pro?
Multi-step forms, email notifications, AJAX submissions, form entries, honeypot spam protection, and submission limits are all included in the free version of Advanced Forms. The Pro version adds post creation/editing, user registration/editing, calculated fields, reCAPTCHA, and integrations with Slack, Zapier, and Mailchimp. Both versions require ACF Pro.
Can I use multi-step forms with acf_form()?
Not directly. ACF’s acf_form() function doesn’t support multi-step navigation. You could build it with custom JavaScript, but this requires significant development (step validation, progress state, accessibility, browser history). Advanced Forms provides this out of the box with the Page field type.
How many steps can I have?
There’s no limit. Add as many Page fields as your form requires. For usability, 3–5 steps is typical. More than 7 steps may indicate the form should be broken into separate forms or simplified.
Does it work on mobile?
Yes. The step navigation is responsive and works on all screen sizes. The Previous/Next buttons and step indicators adapt to the available width.
Can I style the step navigation?
Yes. The step navigation renders as standard HTML elements with CSS classes that you can target in your theme stylesheet. The form markup is clean and follows WordPress conventions.
Can users save progress and return later?
If entries are enabled, the form creates an entry record on final submission. For true save-and-resume functionality (where users can leave mid-form and return later), you’d need custom code to save partial submissions and pre-fill the form on return. The pre-filling form fields documentation covers the technical approach.
Can I store multi-step form data in custom database tables?
Yes. When using Advanced Forms with ACF Custom Database Tables, form entries are automatically stored in structured database tables instead of wp_postmeta. See our guide to storing ACF data in custom tables.
Need multi-step forms for WordPress? Advanced Forms uses the Page field type to create step boundaries automatically — no JavaScript, no separate form builder, no field duplication. Built by Hookturn, makers of ACF developer tools since 2016. Try the free version or buy a Pro license.