contact form 7 June 3, 2026 8 min read

How to Save Contact Form 7 Submissions to Database: 5 Methods

Contact Form 7 has been the default WordPress contact form plugin since 2008. It now runs on over 5 million sites. But it has one giant blind spot: by default, every submission goes only to your email inbox. If an email gets lost, sent to spam, or accidentally deleted, the message is gone forever. There is no second copy in your WordPress database.

This guide shows you five practical ways to save Contact Form 7 submissions to a database, so every message has a permanent backup inside your WordPress dashboard. We cover three plugin solutions (one is our own, free, and recommended), one developer-friendly custom-code approach, and how to export entries to CSV when you need them outside WordPress. Start with the Pixellize Form Database plugin if you want a clean modern dashboard with no setup beyond install-and-activate.

MethodBest forFree?Code required?
Pixellize Form DatabaseModern dashboard with search, filter, CSV export, and multi-plugin supportYesNo
FlamingoOfficial CF7 companion. Lightweight. Built by the CF7 dev.YesNo
CFDB7Classic option installed on 700K+ sites. Stable, no-frills.YesNo
Custom code (wpcf7_before_send_mail hook)Total control. You write the SQL.Free (own time)Yes
Form Vibes / Contact Form EntriesMulti-plugin support (CF7 + WPForms + Elementor forms in one dashboard)FreemiumNo
Pick the method that fits your stack. For 9 out of 10 sites, install a plugin. Use custom code only if you have a specific data flow that no plugin handles.

What happens to Contact Form 7 submissions by default?

By default Contact Form 7 only sends submissions as email; nothing is written to the WordPress database. If your email goes to spam or SMTP fails silently, the message is permanently lost. To save Contact Form 7 submissions to database, install one of the five plugins or hooks below within the first week.

Method 1: Pixellize Form Database plugin (recommended)

Pixellize Form Database plugin admin dashboard with captured Contact Form 7 entries

The Pixellize Form Database plugin is a free WordPress plugin that captures every submission from Contact Form 7, WPForms, Ninja Forms, and Elementor Forms into a single dashboard inside your WordPress admin. No setup beyond install-and-activate. As soon as someone submits a form, the entry appears in Pixellize → Form Database in the WP admin sidebar, with the original form name, timestamp, and every field shown in a sortable table.

Install steps: WordPress admin → Plugins → Add New → search “Pixellize Form Database” → Install → Activate. That is the entire setup. From the next form submission onward, every entry is saved to your database. You can filter by form, search by field value, view the raw JSON for any submission, and export filtered results to CSV.

Why we built it: most existing CF7 database plugins were either abandoned, limited to CF7 only, or had clunky 2015-era admin UIs. We wanted one modern dashboard that handles every popular form plugin with the same interface. Read the launch post for the Pixellize Form Database plugin for the full feature list and screenshots.

Method 2: Flamingo (the official CF7 companion)

Flamingo plugin banner from the WordPress.org plugin directory

What Flamingo does

Flamingo is built by Takayuki Miyoshi, the same developer who created Contact Form 7. It stores every Contact Form 7 submission as a custom post type inside the WordPress database. Because Flamingo is officially blessed by the CF7 team, it is the safest choice for sites that want to stay on the official path.

Install and use

WordPress admin → Plugins → Add New → search “Flamingo” → Install → Activate. After activation, a new “Flamingo” menu appears in your admin sidebar with two sub-items: Inbound Messages (all form submissions) and Address Book (contacts the plugin extracted from those submissions). No configuration is needed; CF7 submissions start saving from the next one received (Source: Contact Form 7 official docs).

Limitation worth knowing: Flamingo only saves Contact Form 7 submissions. If you also use WPForms or Ninja Forms on the same site, you need a separate plugin for each, or one unified plugin like Pixellize Form Database.

Method 3: CFDB7 (the classic no-frills option)

CFDB7 plugin admin screen showing Contact Form 7 entries stored in the WordPress database

CFDB7 is the original third-party “save CF7 to database” plugin. As of 2026 it sits on 700,000+ active installs and is still maintained. It creates its own custom table in your WordPress database (wp_db7_forms) and stores every CF7 submission as a single row with all field values as serialized data.

Install steps: WordPress admin → Plugins → Add New → search “Contact Form CFDB7” → Install → Activate. A “CFDB7” menu appears in the admin sidebar. Click any form name to see all entries. CSV export is one click on the entries page. CFDB7’s interface is intentionally barebones, which makes it fast but feels dated compared to newer plugins (Source: WordPress.org plugin directory).

Method 4: Custom code with the wpcf7_before_send_mail hook

For developers who want zero plugin dependency, Contact Form 7 fires a wpcf7_before_send_mail action hook before sending the email. You can hook into it and write the submission to any custom table you create. This is the right choice if you have an existing CRM or external API the data should also flow to.

Minimal code example for your functions.php or a small mu-plugin:

add_action('wpcf7_before_send_mail', function ($cf7) {
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) return;
    $data = $submission->get_posted_data();

    global $wpdb;
    $wpdb->insert(
        $wpdb->prefix . 'cf7_entries',
        [
            'form_id'    => $cf7->id(),
            'form_name'  => $cf7->title(),
            'submission' => maybe_serialize($data),
            'created_at' => current_time('mysql'),
        ]
    );
});

You also need to create the cf7_entries table once via a one-time SQL script or a register_activation_hook in your custom plugin. The trade-off: total control over the schema and zero plugin overhead, but you also own all the future maintenance (CSV export, search, GDPR deletion, schema migrations).

Method 5: Multi-plugin databases (Form Vibes, Contact Form Entries)

Form Vibes and Contact Form Entries are two free plugins that handle Contact Form 7, WPForms, Elementor Forms, and a few others in a single dashboard. They are similar to the Pixellize Form Database approach but with a freemium pricing model. The free tier covers CF7 storage; advanced features like multi-site sync or webhook forwarding need a paid upgrade.

Pick one of these if you specifically need cross-plugin entry consolidation and prefer a freemium model. Otherwise the Pixellize Form Database covers the same multi-plugin use case in its free tier without an upsell screen.

How do you export Contact Form 7 entries to CSV?

To export Contact Form 7 entries to CSV, install any database-saving plugin (Pixellize Form Database, Flamingo, or CFDB7) and open the entries list in WP admin. Each plugin has a one-click CSV export button. Filter your entries first if you only want a subset, then click Export.

Privacy and GDPR considerations when storing form submissions

Once you store form submissions in a database, they become personal data under GDPR (EU), CCPA (California), and similar regulations elsewhere. Four practical compliance points:

  • Update your privacy policy. Add a line that says you store form submissions in your database for a defined period. Name the plugin you use.
  • Set a retention window. Most CF7 database plugins let you auto-delete submissions older than N days. 90 days is a reasonable default for general contact forms; longer for sales leads.
  • Add a consent checkbox to your form: “I agree to my submission being stored for follow-up.” This satisfies the explicit-consent requirement in most jurisdictions.
  • Honor deletion requests. When a user requests their data be deleted (GDPR Article 17), the entries plugin should let you find and delete their submissions by email. Test this before you need it.

Common mistakes when saving form data

Five errors that trip up most first-time setups:

  1. Installing two plugins for the same job. Flamingo plus CFDB7 plus a custom hook can all save the same submission. Pick one. Duplicate storage is wasted database rows and noisy CSV exports.
  2. Forgetting to test after install. Submit a real form right after activating the plugin and confirm the entry shows up. If it doesn’t, the plugin may need a database migration or there’s a conflict with another plugin.
  3. Not setting a retention policy. Five years of contact form spam plus real entries adds up to a bloated database. Configure auto-deletion of entries older than 90-180 days.
  4. Skipping the SMTP plugin too. Database storage solves the “lost emails” problem only partially. Pair it with a transactional SMTP plugin (we use the lightweight WP Mail SMTP) so your emails also reliably arrive.
  5. Storing payment or password fields. Never. If your CF7 form asks for sensitive data, exclude it from the database insert via the plugin’s field exclusion settings or in your custom-hook code.

Which method should you pick?

The fastest way to save Contact Form 7 submissions to database is a plugin. For a new site or any site you maintain yourself, install the Pixellize Form Database plugin. The modern dashboard, multi-form support, and zero-upsell free tier cover what 95% of sites need. If you specifically want the safest official-blessed option, use Flamingo. If you need full custom control over schema and downstream integrations, write your own wpcf7_before_send_mail hook.

Whichever method you pick to save Contact Form 7 submissions to database, install it the same day you launch the form. The cost of lost submissions during a “we’ll add the database later” period is always higher than the 5 minutes it takes to install a plugin upfront. For a broader look at our WordPress plugin stack, see the Pixellize tools directory.

Frequently Asked Questions

Does Contact Form 7 save submissions by default?
No. Contact Form 7 only sends an email when someone submits a form. The submission is never written to the WordPress database by default. You need a separate database-saving plugin like Pixellize Form Database, Flamingo, or CFDB7, or a custom code hook, to keep a copy of every submission.
Which plugin is best for saving Contact Form 7 to the database?
For most sites, the Pixellize Form Database plugin offers a modern dashboard, multi-form support (CF7, WPForms, Ninja Forms, Elementor), CSV export, and zero upsells. Flamingo is the official choice from the Contact Form 7 author. CFDB7 is the classic option with 700,000+ active installs.
Where are CF7 submissions stored after I install Flamingo?
Flamingo stores every Contact Form 7 submission as a custom post type in the WordPress wp_posts table. You can browse them in WP admin under Flamingo → Inbound Messages. The plugin also extracts a contact entry in the Address Book for each unique sender email.
Can I export Contact Form 7 entries to Excel or Google Sheets?
Yes. All major database plugins (Pixellize Form Database, Flamingo, CFDB7, Form Vibes) include one-click CSV export. CSV opens directly in Excel and Google Sheets. For continuous sync to Google Sheets specifically, use WPSyncSheets for Contact Form 7 instead.
Will saving form submissions to the database slow my site down?
No. Each CF7 submission is one INSERT query, executed only when a form is submitted (not on every page load). Even on a busy site with 1,000 submissions per day, the database overhead is negligible. Set a retention policy of 90-180 days to keep the entries table small.
Is storing form submissions GDPR-compliant?
It can be, with three steps: update your privacy policy to mention database storage, set an auto-deletion retention window (90-180 days for general forms), and add an explicit consent checkbox to your form. Make sure your plugin supports entry deletion by email so you can honor GDPR Article 17 requests.
Written by

Founder and CEO of Pixellize.io, building AI-powered web tools and digital products with a focus on user experience and automation. M.Sc. Zoology, working at the intersection of technology, data analytics, and life sciences.

Scroll to Top