Skip to content

WordPress Display Form Submissions: View Every Entry

Flat entries table icon beside the title How to View Form Submissions in WordPress

WordPress display form submissions only works when your form plugin saves them first. Contact Form 7 and WPForms Lite send an email and keep nothing. There is nothing to show until you add storage.

I tested this in October 2026 on WordPress 7.1.3 with the free versions of Contact Form 7, Flamingo, WPForms Lite and Fluent Forms. I sent the same test messages through each form and then checked the admin screens, the database and the mail queue.

This guide shows where each plugin keeps entries and how to view them in the dashboard. It also covers showing entries on a page and checking that the notification emails really leave your server.

Where Does WordPress Store Form Submissions?

WordPress itself stores no form submissions because core has no form feature. Your form plugin decides. Some save every entry in the database, while others only send an email. If the plugin keeps nothing, a lost email means a lost message. Check this before you need an old entry.

Here is what I found for each form submission in WordPress on the test site, using the free versions:

WordPress display form submissions storage by form plugin
  • Contact Form 7: Sends an email and saves nothing. Its own docs tell you to install a message storage plugin such as Flamingo.
  • WPForms Lite: Sends an email and saves nothing on your site. The database had no entries table at all after a test submission.
  • Fluent Forms: Saves every entry in its own database tables, even in the free version.
  • Flamingo: Adds storage to Contact Form 7 and keeps each message as a private post type.

The WPForms guide to where form data goes confirms the Lite behavior. It says Lite sends form data by email as soon as the form is submitted, and only the paid plans store entries in the database.

WPForms Lite does offer Lite Connect, a free cloud backup of entries. Its Lite Connect documentation says backups are kept for one year and restoring them needs a paid license.

How to View Contact Form 7 Submissions With Flamingo

To view Contact Form 7 submissions, install Flamingo, the free storage plugin from the same developer. Flamingo saves every new message and lists it under Flamingo > Inbound Messages. It cannot recover messages sent before you installed it. Add it the day you add the form.

The Contact Form 7 page on saving messages with Flamingo recommends the same order. Install storage first, before a missing email costs you a message.

Follow these steps:

  1. Go to Plugins > Add Plugin and search for Flamingo.
  2. Click Install Now and Activate.
  3. Send one test message through your contact form.
  4. Open Flamingo > Inbound Messages to see the list of messages.
    Flamingo Inbound Messages list of Contact Form 7 submissions
  5. Click a subject to open the full message with every field.
    Flamingo inbound message with fields and submission result

Each message shows the fields, the submission date and a Submission result. On my test site every message read mail_sent. That means Contact Form 7 handed the email to WordPress without an error.

The list also has an Export button. It downloads the messages as a CSV file, which is the simplest way to keep a copy outside WordPress.

WPForms Submission Monitoring in WPForms Lite

You cannot view entries inside WordPress with WPForms Lite, because Lite does not save them. The Entries menu only shows a notice and an upgrade offer. Read each submission in your notification inbox instead, or turn on Lite Connect so a cloud copy exists if you upgrade later.

I opened WPForms > Entries after a successful test submission. The screen said form entries are not stored in WPForms Lite.

WPForms Lite entries not stored notice

That makes WPForms submission monitoring an email job on the free plan. Make sure the notification address is one you check, and test it after every change to the form.

If you need a dashboard view, you have two choices. Upgrade to a paid WPForms plan, or switch the form to a plugin that stores entries for free.

How to View Entries in Fluent Forms

Fluent Forms saves every entry in the free version. You can open them from the dashboard. Go to Fluent Forms > Entries to see all forms at once. Each row shows the submission ID, the form, its read status and the time, with a View button for details.

Fluent Forms entries from all forms in the WordPress dashboard

You can filter by form, mark entries as read and export them to CSV from the same screen. The plugin keeps the data in its own tables, such as wp_fluentform_submissions.

My test also caught a quiet problem. The demo contact form saved 3 entries but sent 0 emails because it ships with no email notification set up. Open the form’s Settings > Email Notifications and add one before the form goes live.

WordPress Display Form Submissions on the Front End

WordPress display form submissions on a page need your form plugin’s display feature or a small shortcode. Paid tools like Formidable Views and GravityView build tables and directories. For a simple private list, a shortcode that only logged in staff can see is enough and keeps visitor details safe.

Here is the shortcode I used with Flamingo. It lists the latest messages and returns nothing to visitors who cannot edit posts:

add_shortcode( 'recent_form_entries', function ( $atts ) {
	if ( ! current_user_can( 'edit_posts' ) ) {
		return '';
	}
	$atts    = shortcode_atts( array( 'number' => 5 ), $atts );
	$entries = get_posts( array(
		'post_type'   => 'flamingo_inbound',
		'numberposts' => absint( $atts['number'] ),
	) );
	if ( ! $entries ) {
		return '<p>No form entries yet.</p>';
	}
	$out = '<table><thead><tr><th>Date</th><th>From</th><th>Subject</th></tr></thead><tbody>';
	foreach ( $entries as $entry ) {
		$out .= sprintf(
			'<tr><td>%s</td><td>%s</td><td>%s</td></tr>',
			esc_html( get_the_date( 'M j, Y g:i a', $entry ) ),
			esc_html( get_post_meta( $entry->ID, '_from', true ) ),
			esc_html( $entry->post_title )
		);
	}
	return $out . '</tbody></table>';
} );

Add it with a code snippets plugin or a small custom plugin, never by editing a theme that gets updates. Then put [recent_form_entries number="5"] in a Shortcode block on any page.

WordPress display form submissions on a front end page with a shortcode

Logged in as an admin, I saw all four test messages in a table. Logged out, the same page showed no table and no names. Every value passes through esc_html(). That stops a message from injecting code into the page.

Never publish raw submissions for everyone to see. Form entries hold names and email addresses. A public list can break privacy law and invite spam.

If you would rather publish records safely, learn how to create a searchable database in WordPress from a CSV file or a custom post type.

How to Check That Form Notification Emails Are Delivered

A form saying “sent” only proves WordPress accepted the email. It does not prove that it reached anyone. The WordPress docs say a true result from wp_mail() does not mean the user received it. Check delivery with a test message, a mail log or an SMTP service that reports what happened next.

My test showed the gap. Contact Form 7 said “It has been sent”, and Flamingo recorded mail_sent. Yet the message never left my test server, because it had no working mail relay, and it sat in the local mail queue.

WordPress form mail sent but still waiting in the mail queue

The wp_mail function reference explains why. A true return value only means the method processed the request without errors.

Use this list as a simple WordPress form delivery checker:

  • Send a real test: Submit the form yourself and wait for the email in an outside inbox.
  • Check spam folders: Mail sent by PHP often lands in spam because it lacks SPF and DKIM records.
  • Use SMTP: Send through a real mail service with an SMTP plugin, and run its test email.
  • Log failures: Hook into wp_mail_failed to record every error WordPress reports.

Here is the logging snippet I used. It writes each failure to a file in wp-content:

add_action( 'wp_mail_failed', function ( $error ) {
	error_log( date( 'c' ) . ' ' . $error->get_error_message() . "\n", 3, WP_CONTENT_DIR . '/mail-errors.log' );
} );

A full email log with delivery status is a paid feature in WP Mail SMTP. The free version sends through SMTP and offers a test email, which covers most small sites.

Why Your Form Submissions Are Not Showing Up

Missing submissions usually come from one of four causes. The plugin never stored them, a spam filter caught them, a cache served an old form or the email failed. Check them in that order, because no setting can bring back an entry that was never saved.

  • No storage: Contact Form 7 and WPForms Lite keep nothing. Look in the inbox instead.
  • Spam filters: Check the spam view in Flamingo or your form plugin, and your anti-spam plugin’s log.
  • Cached forms: A cached page can carry an expired security token. Exclude form pages from the page cache.
  • Broken emails: Use the delivery checks above when entries exist but emails never arrive.

If your form page returns a 404 after a URL change, save your WordPress permalink settings again to refresh the rewrite rules.

How to Track Form Submissions as Conversions

Viewing entries tells you who wrote, while tracking tells you how many visitors converted and from where. Send a form submit event to Google Analytics through Google Tag Manager. Then compare submissions with visits per page, and spot a form that suddenly stops sending.

Our guide on how to install Google Tag Manager in WordPress covers the container setup. A form submit trigger in Tag Manager fires on each successful WordPress form submit.

A sudden drop to zero is the most useful alert. It often means a broken plugin update or an email change, long before anyone complains.

Test changes on a copy of the site first. A local WordPress site with Local WP lets you try a new form plugin without touching real entries.

Conclusion

WordPress display form submissions starts with storage. Contact Form 7 needs Flamingo, WPForms Lite keeps nothing on your site, and Fluent Forms saves entries for free.

Once entries are saved, view them in the plugin’s admin screen or list them on a private page with a shortcode. Keep visitor details away from public pages.

Finally, test the emails as well as the entries. A form that says “sent” can still fail. Send a real test after every change.

Frequently Asked Questions (FAQs)

Q1. Where are form submissions stored in WordPress?

They are stored wherever your form plugin puts them. Fluent Forms uses its own tables, and Flamingo saves Contact Form 7 messages as a private post type. Contact Form 7 alone and WPForms Lite save nothing in WordPress.

Q2. Does Contact Form 7 save submissions?

No. Contact Form 7 only sends an email. Install the free Flamingo plugin to save new messages in the database and read them under Flamingo > Inbound Messages.

Q3. Does WPForms Lite save entries?

No. WPForms Lite emails each entry and keeps nothing on your site. Its optional Lite Connect backup keeps entries in the cloud for one year, and restoring them needs a paid license.

Q4. Can I recover form submissions sent before I installed Flamingo?

No. Flamingo only saves messages sent after you activate it. Older messages exist only in the notification emails. Search your inbox and spam folder.

Q5. How do I show form submissions on a page?

Use your form plugin’s display feature, or a shortcode like the one above. Limit the list to logged in staff, because entries hold personal details such as names and email addresses.

Q6. Why does my form say sent but I get no email?

“Sent” only means WordPress handed the email to the server. Check your spam folder and then send through an SMTP service. In my test, a “sent” message never left the server because it had no mail relay.

Yash Kapoor
Yash Kapoor

Yash Kapoor is the founder and WordPress expert at DevDiggers, where he builds WordPress and WooCommerce plugins for loyalty programs, point-of-sale systems, digital wallets and affiliate management. He writes about developer tools, site performance and the technical side of running a WordPress store. He draws on years of building and maintaining production plugin codebases.

Leave a Reply

Your email address will not be published. Required fields are marked *