Blog / friday roundup
Contact Form 7 vs WPForms: what we see
Two WordPress form plugins compared from the server side: spam volume, mail delivery, page weight and whether the enquiry actually survives.
Contact forms are the quietest part of a WordPress site until they stop working, and then they are the loudest thing on it. We see both ends of that: the mail logs when a form sends, and the support ticket three weeks later when somebody finally notices nothing has come through. Two plugins account for most of the forms we run into, Contact Form 7 and WPForms. Here is how they compare on the things that actually generate tickets, rather than the things that appear on a feature page.
Getting the first form live
Contact Form 7 hands you a text box with tags in it. If you have written HTML before that is fine, and you can have a working form up in about five minutes. WPForms gives you a drag-and-drop builder with templates, and site owners who are doing this themselves generally get further without calling anyone. Neither approach is wrong. We just notice that CF7 sites tend to have one form nobody has touched in years, while WPForms sites tend to have six.
Where the spam actually goes
Neither plugin stops spam on its own merits. CF7 relies on a honeypot field or a CAPTCHA that you add and configure yourself, and until you do, it will forward whatever gets typed into it. WPForms turns basic anti-spam checks on for new forms, which clears the obvious bot traffic without anyone thinking about it. On our servers the difference shows up as mail volume: a neglected CF7 form on a site with any traffic at all can push a few hundred junk messages a day through the queue, and that is how a domain's sending reputation quietly gets worse. A form is one of the few places you invite strangers to write to your site, so the usual security habits apply here too.
Delivery is the part that breaks
Both plugins hand the message to WordPress, which by default means PHP mail from the web server. That works right up until the receiving end decides it does not. Most "my contact form stopped working" tickets we open turn out not to be form problems at all: the message is being sent from an address the domain has not authorized, and Gmail or Outlook is dropping it without a bounce. Send through a real mailbox on your own domain over SMTP, and check your DNS records while you are in there. We covered the records that fix most of this in why your email lands in spam, and any business email mailbox on your account can be used as the sending address.
What each one puts on the page
CF7 is small, and if you have one form it stays small. It does load its stylesheet and script on every page of the site unless you tell it otherwise, which is worth ten minutes of somebody's time. WPForms carries more weight by design, though it is reasonably careful about loading its assets only where a form is present. On a site that is caching properly, neither one is what is making your pages slow. We have yet to see a form plugin be the real cause of a bad speed score.
Whether the enquiry survives
This is the difference that costs people actual money. CF7 emails the submission and keeps nothing, so if the mail fails, the enquiry is gone and you have no way of knowing it existed. WPForms is built around storing submissions and showing them to you in the dashboard, which means there is a record to go back through when something goes wrong upstream. Whichever you run, our advice is the same. Send yourself a test enquiry once a month from an address you do not control, your phone for example, and confirm it lands.
The details nobody checks
Labels, error messages and keyboard focus are handled sensibly by both plugins, as long as you leave them alone. Where we see it come apart is custom markup: somebody rebuilds a CF7 template to match the theme, drops the labels in favour of placeholder text, and now anyone using a screen reader is filling in a column of unlabelled boxes. WPForms is harder to break this way because the markup is generated for you. If you are hand-writing your own form template, keep the labels in.
Which one we would pick
For a single contact form on a small business site, looked after by whoever built it, CF7 is still a reasonable choice and it has been maintained steadily for a very long time. For an owner who wants to build their own forms, needs conditional fields or a multi-step layout, and wants the entries kept somewhere readable, WPForms saves everyone a good deal of back and forth. The wrong answer is having both installed at once, which we do see, usually a year or two after a redesign.
Whichever one you land on, test the form after any theme or plugin update. It takes a minute, and it is the only reliable way to catch a form that has gone silent. If yours has stopped delivering and you cannot work out why, we can read the mail logs on your account and tell you exactly where the message went, so open a ticket and we will take a look.