Core Forms vs Contact Form 7: When Markup Is Enough
Contact Form 7 is free markup that emails you. Core Forms is a paid WordPress form plugin with storage, spam, payments, polls and a REST backend. Here is when each one fits.
Contact Form 7 is the form plugin most WordPress sites already have. It is free, it has been on WordPress.org since 2007, and a form is a set of tags that send mail. Core Forms vs Contact Form 7 is the choice between that mail-only loop and a plugin that stores the row, filters spam, takes payments and can accept HTML from a static site.
I build Core Forms, so you should know whose table you are reading. Contact Form 7 is still the right tool for a lot of sites, and I will say where.
There are generally three ways people treat Contact Form 7.
You can keep it forever for a name-email-message form that only needs to arrive in an inbox, and never miss the rest.
Or you can bolt on Flamingo, Really Simple CAPTCHA, a SMTP plugin and three more add-ons, and then wonder why a “free” form has a stack.
But being extreme isn’t a good idea at all. Contact Form 7 is an important part of WordPress history and it still does one job cleanly. It is wise to keep it when that job is the whole need, and to move when storage, files, payments or an inbox in WP-Admin become the work.
Contact Form 7 sends mail. Core Forms keeps the row, then sends mail.
Mail is the product on one side. The row is the product on the other.
Quick Verdict
Contact Form 7 is the better pick when the site needs a simple contact form, you are happy editing tags, and email is the only record you want. It costs nothing and it will keep working.
Core Forms is the better pick when submissions should live in WordPress, when a file, a payment, a poll or a CRM action is on the list, or when the same HTML has to post from Astro or Next.js. It is $59 a year or $249 once, unlimited sites, every feature in the license.
Core Forms can import Contact Form 7 forms. Entries are not imported, because Contact Form 7 does not store them unless Flamingo is on.
What Each Plugin Actually Is
Contact Form 7 is a mailer with a form in front of it. You write tags such as [text* your-name] and [email* your-email], map them into a mail template, and WordPress sends that mail through wp_mail(). There is no submissions table in core. Spam protection is extra. Payments, multi-step, polls and a REST submit endpoint are extra or absent.
Core Forms is a form plugin that happens to let you write HTML. The markup is the form. Submissions land in an inbox with a new / read / replied / archived workflow. You can reply from WP-Admin. Files sit in uploads/cf-uploads/. Payments wait for a signed webhook before actions fire. Polls are their own object. Surveys use the same form engine, including a one-question-at-a-time full-screen mode.
The Contact Form 7 messages post is the CF7-specific settings screen. This page is the buy-or-stay decision.
Price
| Contact Form 7 | Core Forms | |
|---|---|---|
| License | Free, GPL, WordPress.org | $59/year or $249 lifetime |
| Sites | Unlimited | Unlimited |
| Storage | None in core (Flamingo add-on) | Submissions inbox included |
| Payments, CRM, polls, headless | Add-ons or a different plugin | Included |
There is no Contact Form 7 Pro. The cost of staying is the time you spend assembling add-ons, and the cost of leaving is rebuilding forms unless you use Core Forms > Migrate.
The Markup
This is where the two plugins feel closest, and where they split.
Contact Form 7 uses its own tag language. A name field is [text* your-name]. A mail template uses [your-name]. You do not write a <label> unless you put HTML around the tags. Plenty of developers like that, because it is small and predictable.
Core Forms stores a real <form>. Labels, autocomplete, fieldset and aria-required are HTML. The visual builder writes the same markup. You can start in the builder and finish in the code tab.
If you already think in CF7 tags, staying is faster. If you already write HTML forms, Core Forms is the plugin that does not invent a second language.
Storage, Spam and Mail
A Contact Form 7 form that “works” is a form whose mail arrived. If mail is late, you have nothing to prove the submit happened. Flamingo stores entries. Without it you are debugging in the dark, which is the whole point of the WordPress form not sending email checklist.
Core Forms stores first. Mail is an action. The inbox still has the row when SMTP fails.
Spam on Contact Form 7 is an add-on conversation: reCAPTCHA, Akismet, a honeypot plugin. Core Forms bundles reCAPTCHA v3, hCaptcha, Cloudflare Turnstile, Akismet, a honeypot and a math challenge, per form, plus rate limits and duplicate blocking.
Outgoing mail still needs authenticated SMTP on both plugins. Neither one can save a host that sends unauthenticated PHP mail.
What Contact Form 7 Will Not Do
These are not insults. They are the boundary of the plugin.
- payments through Stripe, PayPal, Razorpay or Polar
- a native poll with live results
- a Typeform-style full-screen survey
- HubSpot, Slack, Sheets or a signed webhook as a first-class action
- headless submit from another origin
- save and resume on a long application
- first-party field drop-off analytics
- license keys for a digital product
You can assemble some of that with other plugins. At that point you are no longer using Contact Form 7. You are using a stack that happens to start with it.
When to Keep Contact Form 7
- The form is contact-only and email is enough.
- You do not want another paid plugin on the site.
- The theme or a page builder already assumes CF7 shortcodes, and nobody is asking for entries in WP-Admin.
If that is the whole brief, stop here. Installing Core Forms to replace a working CF7 contact form is busywork.
When to Pick Core Forms
- You need the submission in the database, with a reply thread.
- You need files, payments, a poll, a survey or a CRM action.
- You want the same HTML on WordPress and on a static host, posting to WordPress as the form backend.
- You run several sites and want one license that covers them.
Migrate under Core Forms > Migrate, or start from the Contact Form 7 importer. It detects Contact Form 7, converts fields to HTML and notifications to Send Email actions. Export anything Flamingo stored as CSV first.
The Limits
Contact Form 7 install counts and the 2007 launch date are public WordPress.org facts. I have not benchmarked CF7 against Core Forms for TTFB or spam catch rate. This is a researched comparison of what each plugin ships.
Core Forms needs WordPress 6.4+ and PHP 8.1+. Contact Form 7 runs on older stacks. A site stuck on PHP 7.4 cannot move until the host does.
Core Forms has no free version. If the budget is zero and the form is a contact page, Contact Form 7 is the answer.
Final Remarks
Contact Form 7 vs Core Forms is not a builder war. It is whether mail is the product or the by-product.
Keep CF7 when the inbox is the only record you need. Move when you need the row, a file, a payment or a form that lives off WordPress and still lands in WP-Admin.
The pricing page has the Core Forms terms. The WPForms comparison is the next one if a drag-and-drop plugin is also on the list.
FAQ
Can Core Forms import Contact Form 7 forms?
Yes. Core Forms > Migrate detects Contact Form 7 and imports the forms you tick. Entries are not imported unless you export them from Flamingo first.
Does Contact Form 7 store submissions?
Not by itself. Flamingo is the usual add-on for that. Core Forms stores submissions in its own inbox.
Is Core Forms a Contact Form 7 replacement for a simple contact page?
It can be, and it is more plugin than that page needs. Contact Form 7 remains the lighter tool for mail-only contact.