TL;DR: CraftForms can import your existing CF7 forms automatically. If you’ve ever lost a submission, had an email silently fail, or wished CF7 had a submissions inbox — this guide is for you.


Contact Form 7 powers millions of WordPress sites. It’s free, lightweight, and it gets the job done — until it doesn’t.

If you’ve ever had a client call to say “I filled in your contact form but never heard back,” you’ve already hit CF7’s biggest limitation. The form sent the message (maybe). CF7 has no idea whether it arrived.

This guide walks through what CF7 is missing, what CraftForms imports for you automatically, and how to get fully up and running in under 15 minutes.


What Contact Form 7 Doesn’t Give You

CF7 was built in a different era of WordPress — before Gutenberg, before the rise of sophisticated spam bots, before anyone expected a plugin to save form submissions to the database. It’s not that CF7 is broken. It’s that the bar has moved.

Here’s what you won’t find in CF7:

No submissions database

CF7 sends an email and forgets the submission ever happened. There’s no inbox, no export, no way to go back and review what was submitted. If the email fails — or lands in spam — the lead is gone forever.

The workaround most people reach for is Flamingo (a separate free plugin by the same author). It helps, but it’s not integrated: submissions live in a separate screen, aren’t connected to your form settings, and offer no filtering or export out of the box.

No email delivery log

You can’t tell whether an email was delivered, bounced, or rejected. When a client says “I never got the notification,” there’s no log to check. You’re left guessing whether the problem was the form, the server, the spam filter, or the client’s inbox.

No native spam scoring

CF7 relies on reCAPTCHA or Akismet to filter spam. Both work — but reCAPTCHA v2 puts a “I’m not a robot” checkbox in front of every legitimate user. Akismet requires an API key and flags submissions after the fact rather than blocking them silently.

There’s no built-in behaviour-based scoring that catches bots without adding any friction for real users.

Not a native block

CF7 embeds forms via a shortcode: [contact-form-7 id="123"]. That shortcode can go inside a paragraph block, but the form itself isn’t a block — you can’t add it to a block template, control its layout with block spacing tools, or edit it inline in the Gutenberg editor. You drop a shortcode and hope for the best.


What CraftForms Imports from CF7

CraftForms includes a one-click importer that reads your existing CF7 forms and recreates them as native CraftForms forms. Here’s what comes across automatically:

  • All standard fields — text, email, URL, telephone, number, textarea, select, checkboxes, radio buttons, and file upload fields
  • Field labels — the visible labels you set in CF7 are preserved
  • Placeholder text — any placeholder text carries over as-is
  • Required field rules — fields marked required in CF7 are marked required in CraftForms

What the importer doesn’t bring over:

  • Custom CF7 validation hooks (PHP-level custom validation that lived in your theme or another plugin — these need to be recreated manually)
  • Flamingo submission history — past submissions stored by Flamingo stay in Flamingo; the importer handles form structure, not historical data
  • Mail templates — CF7’s mail tab configuration is not imported; you’ll configure email sending fresh in CraftForms using submit actions and email templates

Running the Import — Step by Step

Before you start: keep CF7 active during the import. The importer reads CF7’s database entries directly, so CF7 needs to be installed and its data needs to be present.

Step 1 — Install CraftForms

If you haven’t already, install CraftForms from the WordPress plugin repository. Go to Plugins → Add New, search for CraftForms, install, and activate.

Step 2 — Open the importer

In your WordPress admin, go to CraftForms → Forms. On the forms list page, click the Import from CF7 button. Make sure Contact Form 7 plugin is active, otherwise the button for importing CF7 forms will not appear!

Step 3 — Select a form and import

A modal appears showing all CF7 forms found in your database. Select the form you want to import from the dropdown, then click Import. Repeat for each form you want to migrate.

Step 4 — Continue editing

The import is instant. As soon as it completes, CraftForms opens the imported form directly in the editor, ready for you to review and configure.


What to Verify After Import

Don’t just assume the import is perfect — spend five minutes checking each form before you make it live.

Check field names

CraftForms uses field names (slugs) to reference field values in email templates, dynamic tags, and other logic. The importer assigns names based on your CF7 field names, but it’s worth opening each imported form and confirming the names look right — especially if your CF7 forms used custom name attributes.

To check: open the form in the CraftForms editor, click each field, and look at the Field Name setting in the sidebar.

Check required field rules

Open each field and confirm the Required toggle matches your original CF7 setup. The importer maps this automatically, but a quick review takes 30 seconds and will save you from a form that silently accepts incomplete submissions.

Check the submit button

CF7’s submit button text is not always imported cleanly. Open the form, find the Submit button block, and confirm the button label says what you want.

Test the form on the frontend

Add the form to a page as a synced pattern (or use a staging page you’ve set aside for testing), submit a test entry with real data, and confirm the submission appears in CraftForms → Submissions.


Immediate Upgrades to Make Right After Import

Once the form is working, it takes another five minutes to unlock features that CF7 simply doesn’t have.

1. Add a Save Submission action

Open your form and go to its Submit Actions tab. Add a Save Submission action. This is the single most important step — your form now has a database-backed inbox. Every submission is stored, searchable, and exportable. No more “the email probably went to spam” conversations.

2. Connect an SMTP server

Go to CraftForms → SMTP Servers and add your SMTP connection. Brevo (formerly Sendinblue) offers 300 free emails per day and takes about five minutes to set up. Once connected, CraftForms logs every outgoing email with its delivery status — sent, failed, or bounced — so you always know whether a notification reached its destination.

WordPress’s default wp_mail() function uses your hosting server’s sendmail configuration. On most shared hosts this means no authentication, no DKIM or SPF, and a high chance of landing in spam. An external SMTP service fixes all of this.

3. Spam protection — nothing to configure

CraftForms includes behaviour-based spam scoring out of the box. It runs automatically on every submission, watching mouse movement, focus events, keystroke timing, and paste behaviour to assign a risk score. Bots that fill forms instantly with no mouse activity score high and are blocked silently — no CAPTCHA, no setup, no settings to touch.

4. Set up email sending

CF7’s mail configuration doesn’t import, so you need to add email sending as a submit action. CraftForms handles this through email templates — you design the email once, connect your form data using dynamic tags, and then attach the template to your form.

Create an email template

Go to CraftForms → Email Templates and create a new template. Build the email layout using the Gutenberg editor: add your logo, brand colours, and a message body. To pull in submitted values, use dynamic tags in the format {{email.fieldname}} — for example, {{email.name}} inserts whatever the user typed into the “name” field. You can also reference site-level variables like {{site.name}} or {{site.admin_email}}.

Set the email subject in the template settings (dynamic tags work there too).

Attach the template to your form

Back in your form, go to the Submit Actions tab and add a Send Email Template action. Select the email template you just created. Configure the recipient address — use {{email.email}} to send a confirmation back to the person who submitted, or enter a fixed address to notify yourself or your team.

Add separate Send Email Template actions for each recipient: one pointing to your admin address, another pointing back to the submitter’s email field.


Going Further

Once your forms are working and your submit actions are configured, CraftForms Pro unlocks several capabilities that CF7 never offered:

The features below are part of CraftForms Pro (paid upgrade). They are not available in the free version.

Conditional logic — Show or hide fields based on what the user has already selected. For example: show a “preferred contact time” field only if the user selects “Phone” as their preferred contact method. This keeps forms shorter and completion rates higher.

Live price calculation — If you’re using forms for quotes, orders, or bookings, you can write pricing formulas using Smart Variables and display a running total as the user fills in the form. No separate calculator plugin needed.

Stripe payments — Collect card payments directly through the form without WooCommerce. Useful for deposits, one-off service fees, or booking payments. The price is always validated server-side — the browser never sets the charge amount.

Post creation — Map form submissions directly to WordPress posts. Useful for job boards, event submissions, community directories, or any scenario where a form submission should create a new piece of content.


Summary

Contact Form 7 is a solid starting point, but it’s showing its age. No submission storage, no email log, no spam scoring, and no native block integration add up to a meaningful gap — especially if you’re relying on these forms for real business enquiries.

The migration itself is fast: CraftForms imports your fields, labels, and required rules automatically. The post-import steps — adding a Save Submission action, connecting an SMTP server, and setting up email templates — take less time than debugging one missed email in CF7.

If you’ve been putting off the switch because you didn’t want to rebuild your forms from scratch, the importer removes that barrier entirely.


Ready to migrate? Install CraftForms, head to CraftForms → Forms, and click Import from CF7.