form-basics

Choosing a WordPress form builder plugin: what to check before you install

September 30, 2026 ・ Halict Editorial

Every comparison of WordPress form builder plugins is organised the same way: a list of products, a paragraph each, a verdict. That format answers a question almost nobody actually has. The field types are broadly the same across the serious options, conditional logic is everywhere, and every one of them can put a form on a page and email you the result.

The differences that decide whether a choice ages well are narrower and less exciting. What the licence counts. Which single field is gated and therefore forces the upgrade. Whether submissions are stored at all by default. And what the plugin expects to happen when a person has to write a reply. Four checks, in that order, before installing anything.

Check one: what the licence counts

Almost every WordPress form plugin is priced by the number of sites it runs on. That single fact has more consequence than any feature list, because it determines whether the tool gets more expensive as your situation changes.

Plugin Entry paid price Sites at entry Free build
Contact Form 7 None Any Whole plugin
Forminator $50 per year 1 Extensive
Formidable Forms $79 per year list 3 Yes
Fluent Forms $79 per year 1 Extensive
WPForms $99 per year list 1 Yes (Lite)
Gravity Forms $59 per year 1 None
JetFormBuilder $199 per year bundle 1 Extensive
Elementor Pro $60 first year 1 No form widget

Several of those carry a promotional discount at the time of writing. WPForms shows Basic at $49.50 against a $99 list, Plus at $99.50 against $199, Pro at $199.50 against $399 and Elite at $299.50 against $599. Formidable shows the same structure, with Basic at $39.50 against $79 and Elite at $299.50 against $599. Forminator Pro arrives inside WPMU DEV plans at $50 for one site, $75 for three and $100 for ten, each including the vendor's whole Pro plugin suite. Gravity Forms is $59 for one site, $159 for three and $259 for unlimited, with no free version at all. Discounts expire; the list price is the number to plan around.

The axis, not the amount, is what to check. Site-count pricing is cheap when many people share one website and expensive when one person maintains many client sites. Nothing in that table counts submissions, and nothing counts people. If the shape of your situation is a lot of staff reading responses on a single property, site licensing is a bargain and you should take it.

Install counts are not a recommendation

The plugin directory publishes install counts, and they get quoted as though they settle the question. They do not, but they are still worth reading for what they do tell you.

Plugin Active installations Directory rating
Contact Form 7 10,000,000+ 4.0 of 5 across 2,179 ratings
WPForms Lite 5,000,000+ 4.8 of 5 across 14,378 ratings
Fluent Forms 700,000+ 4.8 of 5 across 798 ratings
Ninja Forms 600,000+ 4.4 of 5 across 1,395 ratings
Forminator 600,000+ 4.8 of 5 across 2,131 reviews
Formidable Forms 300,000+ 4.8 of 5 across 1,384 ratings
JetFormBuilder 80,000+ Published on the directory

Gravity Forms does not appear because it is not distributed through the directory at all, which is a licensing decision rather than a comment on quality.

What these numbers are good for is judging abandonment risk. A plugin with hundreds of thousands of installs and a release in the last month is not going to disappear, and that is genuinely worth knowing when a form will still be collecting applications in three years. What they are not good for is telling you which one fits. Contact Form 7's install count reflects a decade of being the default choice bundled by hosts and themes, not a verdict that it is the right answer for an intake process today.

Check two: which field forces the upgrade

Free builds look generous until the one field you need turns out to be gated. Working out which field that is takes five minutes and saves an argument later.

File uploads are the most common gate. On Fluent Forms, both the File Upload and Image Upload fields are Pro only, so any intake needing a document attached is a paid site from the start. Forminator takes the other approach and includes multi-file uploads in the free build, with per-type and per-size limits.

Repeatable input is the second. Collecting an unknown number of attendees, previous employers or line items requires a repeater. Fluent Forms puts Repeat Field and Container Repeater behind the licence; Forminator's field group and JetFormBuilder's repeater are both in the free build.

Multi-step forms are the third. Fluent Forms gates the Form Step field. JetFormBuilder includes the Form Page Break block and a progress bar for free. Save and resume, which usually gets wanted alongside multi-step, tends to sit on the paid side wherever it exists.

Payments are the fourth and the answer here is genuinely spread out. Forminator includes Stripe and PayPal free, following Strong Customer Authentication rules, with the Stripe Dynamic Payment Element exposing more than 40 payment methods. Fluent Forms includes Stripe in its free build. WPForms applies a 3 per cent platform fee on transactions when running the free version or an inactive licence, and no transaction fee on an active paid licence. Formidable and Gravity Forms both put payments on the paid side.

Write down the three or four fields your actual forms need, then check each one against the vendor's own feature page rather than a comparison article. Vendors are precise about this on their own sites because they have to be.

Check three: are submissions stored, and where

This is the check most often skipped, and it produces the worst surprises.

Contact Form 7 has 10 million or more active installations, which makes it the most widely installed form plugin on WordPress by a wide margin. Its own listing states that with the default configuration the plugin, in itself, does not write any user personal data to the database. That is a deliberate privacy position and a perfectly defensible one. It also means that on a default install, a submission exists only as an email, and if that email is lost the submission is gone. Sites that need retention add a separate plugin for it.

Elementor draws the line at the plan level. The Form Builder is included on the Essential plan, but Elementor's pricing page states that forms submissions are not available on that plan; Advanced Solo and above add a central dashboard in WordPress. So the cheapest Elementor plan gives a form that emails and stores nothing, for about two dollars a month less than the plan that stores.

JetFormBuilder makes storage an action rather than a default. Save Form Record has to be added to a form, and a form without it processes the submission and keeps nothing.

Forminator and Fluent Forms both store by default and give submissions a screen with filtering and export.

Whichever you pick, confirm the behaviour on a real form with a real submission before the first campaign, not after.

Check four: what happens to the reply

The first three checks are about collection. This one is about the work that repeats, and it is the one that decides whether a choice still fits in a year.

Every plugin in the list sends a notification email and can send the respondent a templated acknowledgement. Several add conditional routing, so a submission that says "billing" alerts the billing address. All of that is collection and triage, and it works.

None of them hold the reply. A message written individually to one applicant about one detail is composed in a mail client, and once it leaves from there the only copy sits in one person's sent folder. The submission screen has no record that the exchange happened. Six weeks later, when that person replies asking about what they were told, the history has to be reassembled by someone who may not have been party to either half.

Ownership is the same gap in a different form. No submissions table in a WordPress form plugin carries an owner field or a pipeline status. Two staff open the list, both see the same unanswered submissions, and the only thing preventing a duplicate reply is a chat message. When someone is away, "what is outstanding and whose is it" cannot be answered from the screen.

How to tell whether this matters to you

There is a single number that settles it. Count last month's submissions, then count how many produced a reply that a person wrote by hand rather than a template.

If that second number is small, the handling gap is theoretical and any of the plugins above will serve for years. Pick on the licence axis and the gated fields, install it, and stop thinking about it.

If the second number is a large fraction of the first, then most of the actual work happens after the part these plugins cover, and no additional feature closes it. The choice becomes where a response should be worked on, which is worth judging against the use cases that match your intake and by watching something handle a response end to end rather than reading a feature grid.

The part nobody puts on a comparison page

Two operational facts apply to every self-hosted option and belong in the decision.

Mail delivery is the first. Notification and acknowledgement email sent from a WordPress server without an authenticated sending path lands in spam often enough to matter. Elementor's own documentation raises this directly, noting that providers such as Gmail have become increasingly strict about reputation and authentication, and recommends routing site mail through a dedicated sending service. The failure is silent on both sides: the respondent assumes the form is broken, the site owner assumes nothing arrived, and the entry sits in the database unread. Fix this before anything else, whatever plugin you choose.

Updates are the second. A form plugin handles uploads and payment fields, which makes it worth attacking, and active plugins ship security releases. Forminator published a run of them between August and September 2026, disclosed through Patchstack with reporters credited by name, which is exactly the behaviour to want from a vendor. The consequence is operational rather than alarming: somebody has to apply each release, on every site holding submission data, reasonably promptly. That is the standing cost of self-hosting, and it appears on no pricing page. In exchange, the data stays on infrastructure you control, which for intake involving identity documents or health information often decides the matter on its own.

What to change first

Run the count before installing anything: last month's submissions against replies typed by hand. Then pick on the licence axis that matches your real shape rather than the lowest headline price, confirm the two or three fields you actually need are not gated, and check on a live submission that storage is switched on. If most of the work turns out to be the reply, keep the owner, the status and the message on the response itself and compare candidates by how they price access against the number of people who genuinely need it, which is the axis Halict is built around.

Q1. Which WordPress form plugin is free and actually usable?

Contact Form 7 is entirely free with 10 million or more active installations, though its own listing notes that by default it does not write personal data to the database, so submissions exist only as email. Forminator, Fluent Forms and JetFormBuilder all ship substantial free builds that do store submissions, and each gates a different set of fields.

Q2. What does a WordPress form builder plugin usually cost?

List prices for a single site start around $50 to $99 a year: Forminator inside WPMU DEV plans at $50, Gravity Forms at $59, Fluent Forms at $79, Formidable at $79 and WPForms at $99. JetFormBuilder comes inside Crocoblock bundles from $199 a year. Elementor Pro starts at $60 for the first year but does not include submissions on its entry plan.

Q3. Do all of these plugins store form submissions in WordPress?

No, and this is the most common surprise. Contact Form 7 does not by default, Elementor's Essential plan does not include submissions at all, and JetFormBuilder requires the Save Form Record action to be added to a form. Forminator and Fluent Forms store by default. Confirm the behaviour with a test submission before relying on it.

Q4. Which plugin should a team of several people choose?

None of them differ much here, because no WordPress form plugin's submissions table carries an owner field or a pipeline status. If several people need to divide responses between them and reply individually, that work sits outside what these plugins cover, and the decision is about where responses get handled rather than which builder to install.

Q5. Why do form notification emails end up in spam?

Mail sent directly from a hosting server without an authenticated sending path is the usual cause, and inbox providers have tightened reputation checks. Elementor's documentation raises this explicitly and recommends a dedicated sending service. It is worth fixing first because the failure is silent: a missing acknowledgement looks exactly like a form that did not work.

All guides