Nothing is saved, which is why enquiries vanish without trace
This is the fact that explains most of the support requests this plugin generates. CF7 composes an email and passes it to WordPress to send; it writes nothing to the database. So a mail that silently fails, is rejected by the receiving server, or lands in a junk folder nobody checks does not leave a failed record — it leaves no record. Businesses discover this when a customer rings to ask why nobody replied to the message they sent three weeks ago. The first thing we do on any CF7 site is make that impossible.
Your host is probably sending your mail badly
By default WordPress hands mail to the server's own sending function, which typically sends from an address your domain has never authorised. Modern mail providers treat that as forgery and either bin it or file it as junk, and increasingly they reject it outright. The fix is to send through an authenticated service and to line up the domain records that vouch for it. It is unglamorous, it takes under an hour, and it resolves the majority of "our form does not work" reports without touching the form at all.
A copy of every submission, kept in the site
Once mail is reliable, the next step is to stop depending on it entirely. A submission log inside WordPress means an enquiry exists whether or not the email arrived, survives a staff member leaving, and gives you something to search when a customer says they contacted you in March. CF7's own companion plugin does this, it is free, and it takes minutes to set up. That it is not installed by default is the single biggest gap between CF7 as shipped and CF7 as it should be run.
The form is loading on every page of your site
CF7 enqueues its stylesheet and JavaScript everywhere by default, including on pages with no form on them. On a small site that is a minor cost; combined with a sitewide captcha script it becomes one of the more noticeable easy wins available on an otherwise fine site. Restricting the assets to the pages that actually have a form is a small change, and it is the sort of thing that quietly improves the numbers Google is measuring.
Validation and conditional behaviour need help
CF7 ships with basic required-field checking and very little else, so a phone field will accept anything typed into it and a form cannot show a section only when it is relevant. Both are solvable — real validation through the plugin's filter hooks, and conditional sections through a well-maintained companion plugin — and both are worth doing on any form longer than four fields, because the alternative is staff retyping bad data and customers abandoning forms that ask irrelevant questions.
Spam handling that does not cost you a real enquiry
The consequence of spam on CF7 is different from other form plugins, because you cannot review what was blocked — there is no rejected pile to check. That makes aggressive filtering genuinely risky: a false positive is a lost customer you will never learn about. So the order matters. Stop the automated volume at the edge, keep the in-form checks conservative, and always have the submission log running first so that anything the mail layer loses is still recoverable.
When you have outgrown it, and when you have not
CF7 is free, stable and maintained, and it will keep working. The honest signals that you have outgrown it are specific rather than general: you need to take payment, you need one form to behave several ways, you need submissions reported on rather than read, or you are maintaining five near-identical forms because it cannot do conditional logic. Wanting a nicer-looking form is not one of them — that is CSS. We will tell you which side of that line you are on rather than quoting a migration by reflex.
What this costs
The core job — authenticated sending configured, domain records set, submission logging installed, a real delivery test from outside — starts at $300 and is usually the whole job. If you would rather have the current setup diagnosed and written up first, that is $249. Anything further, such as custom validation or rebuilding several forms into one, is $165 an hour or $750 for a five-hour block.