How to Display Gravity Forms Entries as a Table in WordPress

To display Gravity Forms entries as a table on the frontend of a WordPress site, you need a plugin that connects to the Gravity Forms entry database, maps form fields to table columns, and renders the result with search, sort, and filter controls, visible to non-admin users without a wp-admin login. TableCrafter does exactly this: install the free plugin, create a table configuration pointing at your form, choose which fields appear as columns, and embed it anywhere using [tablecrafter id="1"] or the Gutenberg block. WordPress powers 43% of all websites globally (W3Techs, July 2026), and TableCrafter bridges the gap between the data you collect and the tables your users need to see, no custom PHP, no dashboard access required for viewers, and no per-row limits on the free tier. The free version on WordPress.org supports CSV, JSON, Google Sheets, and Excel. Pro adds Gravity Forms, Airtable, Notion, WooCommerce,
Gravity Forms is excellent at collecting data. What it doesn't do out of the box is display that data to your users in a clean, searchable table on the frontend. The built-in Entries screen in wp-admin is for site admins only, no shortcode, no block, and no shareable live view for clients or staff. This guide walks through the exact steps to build that live table using the free version of TableCrafter.
Scale context: Gravity Forms is active on over 10 million WordPress sites, making it the most widely deployed premium WordPress form plugin (Gravity Forms, 2025). Gravity Forms is one of the most widely deployed form systems in this ecosystem. Despite that reach, the platform offers no native mechanism to show submission data as a filterable table on the public frontend, which is exactly the problem this guide solves.
Why Doesn't Gravity Forms Show a Table by Default?
Gravity Forms captures data from over 10 million active WordPress installations (Gravity Forms, 2025), but none of those installations include a built-in way to display entries to frontend users.
Gravity Forms stores every submission as an "entry" in the WordPress database, you can browse those entries in Forms → Entries inside wp-admin, but that admin screen is for site owners only. There is no built-in shortcode or block that renders those entries as a table on a page your visitors can see. The common workaround is to export to CSV and paste data into a static HTML table plugin, but that breaks the moment a new submission comes in. What you actually need is a live table that reads directly from the Gravity Forms entry database and updates automatically as new submissions arrive. It should support column-level search and sort, allow users to filter by any field, and be accessible to non-admin users without a WordPress login, all without requiring the site owner to manually re-export data. That is exactly what TableCrafter provides.
Scope note: This guide focuses on Gravity Forms as the data source. TableCrafter also supports CSV files, Google Sheets, Excel, Airtable, Notion, WooCommerce, and REST APIs as data sources. The steps for creating a table and embedding the shortcode are similar across all source types; only the connection and column configuration steps differ.
Step 1: How Do I Install TableCrafter?
TableCrafter is a free plugin hosted on WordPress.org. To install it:
- In your WordPress admin, go to Plugins → Add New Plugin.
- Search for gravity-tables or TableCrafter.
- Click Install Now, then Activate.
Alternatively, download the zip from WordPress.org and upload it via Plugins → Add New Plugin → Upload Plugin.
Once activated, you'll see a new TableCrafter menu item in your WordPress admin sidebar.
Requirements: WordPress 6.0 or higher, Gravity Forms 2.5 or higher, PHP 7.4 or higher. Both plugins must be active at the same time, TableCrafter reads directly from Gravity Forms' entry database tables.
If this step produces unexpected output, check the source data directly in the connected system. TableCrafter passes data through without modification — if a cell displays an unexpected value, the source record contains that value. Use the TableCrafter debug log (Settings > Advanced > Debug Mode) to trace the exact query sent to the source and the raw response received, which narrows the diagnosis to either a source-side or rendering-side issue.
Step 2: How Do I Create a Table Configuration?
After activating TableCrafter, navigate to TableCrafter → Tables → Add New. This opens the drag-and-drop table builder. A table configuration is the settings object that tells TableCrafter which Gravity Forms form to query, which fields to show as columns, how many rows to display per page, who can view the table, and any entry filters to apply. One configuration equals one [tablecrafter] shortcode. You can create multiple configurations from the same form, for example a public summary view and a private admin-detail view, each with its own shortcode and permissions. The builder has three main areas: a source selector at the top, a column management tab, and a settings tab.
Choose your Gravity Forms form
The first setting you'll see is a Form dropdown. Select the Gravity Forms form whose entries you want to display. TableCrafter immediately loads the available fields from that form so you can pick which ones become columns. Only forms that have at least one published entry are guaranteed to work for testing; forms with zero entries will still load the column picker correctly.
The dropdown lists every form on your site, including inactive and draft forms. Make sure you select the correct active form. Once you select a form and save the table configuration, changing to a different form later will require you to re-map all columns from scratch, so it is worth spending a moment confirming the form ID in Gravity Forms (visible in the Forms list view URL as ?id=N) matches the form you intend to connect.
Add and configure columns
In the Columns tab, drag fields from the available fields panel on the left into the column list on the right, or use the Add Column button and select a field from your form. Common choices include:
- Name, email, phone number (contact/directory tables)
- Date submitted, status, job number (order or project tracker tables)
- Driver name, load weight, origin, destination (load tracker tables)
Each column card expands to show configuration options across several tabs. The General tab covers the column label, width, and text alignment. The Advanced tab covers lookup configuration for user or relationship fields. The Filtering tab lets you enable and configure the per-column filter input visible to users on the frontend. The Conditional Formatting tab applies background or text color rules based on cell values. The Responsive tab controls visibility on mobile and tablet breakpoints. You can drag columns to reorder them and set the label to anything without affecting the underlying Gravity Forms field name.
Configure basic settings
Under the Settings tab, you can set:
- Entries per page, controls pagination (default is 25)
- Default sort column, which column the table sorts by on first load
- Who can view this table, all visitors, logged-in users only, or specific user roles
- Entry filters, restrict which entries appear (e.g., only entries with a specific field value, or only entries submitted by the currently logged-in user)
When you're done, click Save Table. TableCrafter assigns this configuration a numeric ID, which you'll use in your shortcode. You can return to these settings at any time to change pagination, column order, or access rules without changing the shortcode already embedded on your pages.
Step 3: How Do I Embed the Table with a Shortcode?
After saving, TableCrafter shows you the shortcode for your table. It looks like this:
[tablecrafter id="1"]
The id value corresponds to the table configuration you just created. If you create a second table for a different form, it gets id="2", and so on.
Paste this shortcode into any WordPress page, post, or widget area that supports shortcodes. In the block editor, use a Shortcode block. In Elementor or other page builders, use their dedicated shortcode element.
Publish or update the page and visit it on the frontend. You'll see a live table populated with your Gravity Forms entries.
The id in the shortcode is the table configuration ID, not the Gravity Forms form ID. You can create multiple different table configurations from the same form, for example, a public-facing summary table and a private detailed table, each with its own shortcode.
Step 4: How Do I Search, Sort, Filter, and Export?
Out of the box, every table rendered by TableCrafter includes a set of interactive features at no cost:
Global Search Free
A search input above the table filters rows across all visible columns in real time as the user types.
Column Sorting Free
Click any sortable column header to sort ascending or descending. Useful for date-ordered or alphabetical views.
Column Filters Free
Per-column dropdowns or text inputs let users narrow down rows by a specific field value.
Pagination Free
Automatically splits large entry sets into pages. Configurable entries-per-page in the admin builder.
CSV Export Free
An export button lets authorized users download the current filtered view as a CSV file.
Column Picker Free
Users can show or hide individual columns from the table without leaving the page.
Auto-Refresh Free
Tables can poll for new entries at a configurable interval, keeping live dashboards current without a page reload.
Status Badges Free
Field values can render as color-coded status badges instead of plain text, handy for order status or approval columns.
What Are the Real-World Use Cases?
Knowing the mechanics is one thing. Here are four common patterns that demonstrate what this looks like in production, each with a specific industry context and specific TableCrafter configuration decisions. These examples use real features available in the plugin rather than hypothetical capabilities. Each scenario shows how a Gravity Forms form, the TableCrafter table builder, and the embedded shortcode work together to deliver a live data view that would otherwise require custom PHP or a separate database query layer. The use cases span industries deliberately: the underlying pattern (collect data with a GF form, display it with TableCrafter) works across verticals without modification.
Load tracker for a trucking company
A dispatcher builds a Gravity Forms form where drivers submit their daily loads: driver name, origin, destination, weight, and date. TableCrafter turns those entries into a frontend table visible only to logged-in drivers. Each driver sees only their own entries using the "Show user only their own entries" setting in the table's Filter by User section. The dispatcher's administrator view shows all drivers' loads, sortable by date or driver name, because administrator-role users bypass the per-user row filter automatically. Column-level filters on delivery status or origin city let the dispatcher narrow the full dataset without building any custom queries. The table updates with each new submission without any manual export or refresh step on the dispatcher's part.
Employee or vendor directory
HR runs a Gravity Forms form to collect employee or vendor profile data: name, department, phone extension, office location, and reporting manager. TableCrafter displays those entries as a searchable company directory on an internal WordPress page accessible to logged-in staff. Employees can look up a colleague's extension or department without needing access to wp-admin or the Gravity Forms entries screen. The global search bar lets anyone type a name or department and see matching rows in real time. When an employee's information changes, HR updates the Gravity Forms entry directly and the directory reflects the change immediately without any additional steps.
Order or project status tracker
A service business uses Gravity Forms for project intake: client name, project type, deliverables, due date, and current status. As statuses are updated by the project manager (via Gravity Forms' native entry editing, or via TableCrafter Pro's inline editing directly in the table), clients can check a TableCrafter table on a password-protected or login-restricted page to see where their project stands. This eliminates the back-and-forth of status update emails: the client has a live URL that always shows current data. Column filters on project type or status let clients who manage multiple projects narrow the view quickly without loading unrelated rows.
Event registrations or RSVPs
An event organizer builds a Gravity Forms registration form capturing attendee name, email, session preference, and dietary requirements. TableCrafter displays those registrations as a public-facing attendee list on the event website, filterable by session or ticket type. New registrations submitted through the form appear in the table automatically because TableCrafter reads directly from the Gravity Forms entry database on each page load. The organizer can configure the table to show only selected columns (name and session, not email or dietary notes) to protect submitters' private information while still giving the community a transparent view of who has signed up. Pagination keeps the page load fast even as the list grows into the hundreds.
Free vs. Pro: What's the Difference?
The free plugin covers the core use case, live, searchable, sortable tables from Gravity Forms, with no restrictions on number of tables or rows. The Pro license adds functionality for teams who need to work with table data, not just read it:
- Inline Editing Pro, Click any cell to edit the underlying Gravity Forms entry directly from the table. No need to open the Gravity Forms admin.
- Bulk Fill Pro, Select multiple rows and update a shared field value across all of them in one action. Useful for batch status changes.
- Entry Duplicate Pro, Clone an existing entry as the starting point for a new one.
- Column Role Visibility Pro, Show specific columns only to certain WordPress user roles. Admins see cost columns; customers don't.
- Email Alerts Pro, Trigger email notifications when entries are edited inline.
- Data Bars Pro, Numeric columns can render a visual bar behind the value to show proportion at a glance.
If your team only needs to view Gravity Forms entries in a table, the free version covers everything. Upgrade to Pro when you need to edit entries from the table, or when you need role-based column control.
Why Is My Table Empty or Are Entries Missing?
If your table renders on the page but shows no rows, the cause is almost always one of four configuration issues: a form ID mismatch between the table config and the actual GF form, an entry filter that matches zero existing rows, a role restriction that excludes the user currently viewing the page, or the Gravity Forms entries not being in active status. Work through the checks below in order before looking for more obscure causes such as caching, plugin conflicts, or database permission issues. Each check takes under two minutes and eliminates one possible cause.
Confirm the correct form is selected
In TableCrafter → Tables, open your table configuration and verify the Form dropdown matches the form you expect. It is easy to accidentally select a draft or test form that has zero entries, or to select the wrong form if multiple forms share a similar name. In your Gravity Forms admin, go to Forms → Entries and select your target form; if entries appear there but not in your TableCrafter table, the most likely cause is a form ID mismatch in the table configuration. Check the form ID in the GF admin URL (?id=N) and compare it to the form selected in TableCrafter. Resave the table after correcting the form selection.
Check your entry filter settings
If you set an entry filter in the table builder, for example, "only show entries where status equals Approved", and no entries match that condition yet, the table will appear empty even though entries exist in Gravity Forms. Temporarily disable all entry filters in the table settings and resave to confirm that entries appear. If they do, the filter condition is too restrictive or the stored field values do not match what you entered as the comparison value. Check the exact value stored in the Gravity Forms entry by opening an individual entry in the GF admin and inspecting the raw field value. Filter comparisons are case-sensitive for text fields.
Check user visibility settings
If you configured the table's Table Access Control setting in the table builder to restrict visibility to specific user roles, only users with those roles will see the table. If a visitor without the required role visits the page, the table renders as empty or hidden. To diagnose, open the table builder and review the User Permissions section; the allowed roles multi-select shows which roles can view the table. Log in with an account that has the correct role and visit the page again to confirm. If you want the table visible to all logged-in users regardless of role, leave the allowed roles field empty.
Verify Gravity Forms entries exist
Go to Forms → [Your Form] → Entries in wp-admin and confirm there are active entries. Gravity Forms has multiple entry statuses: active entries appear in the main list, while spam and trashed entries appear under their respective filtered views. TableCrafter queries only active entries by default; spam and trash entries are excluded from the table output. If all your entries were accidentally marked as spam or trashed (for example, by an anti-spam plugin), the table will show zero rows even though the entries exist in the database. Restore the entries to active status in the GF entries screen and the table will populate on the next page load.
Caching plugins (WP Rocket, NitroPack, W3 Total Cache) can serve a cached page with a stale table. If you've just added entries and they're not showing up, try a hard refresh or temporarily bypass cache for your page.
What Are the Next Steps After Creating My First Table?
Once your first table is live, a few things are worth exploring:
The shortcode accepts all column and filter settings defined in the table builder as defaults, but you can override individual parameters inline. For example, `[tablecrafter id="1" per_page="25"]` overrides the default rows-per-page setting for this specific embed without changing the saved table configuration. This lets you reuse one table definition across multiple pages with different display requirements.
- Multiple tables from one form, Create a second table configuration for the same form with different columns or entry filters. Each gets its own shortcode. Use this to show a public summary alongside a private admin-level detail view.
- Restricting by current user, In the entry filter settings, you can filter by the entry creator. This means each logged-in user sees only their own submissions, the right pattern for customer portals and driver tracking tools.
- Combining with Gravity Forms conditional notifications, TableCrafter handles the display layer. Gravity Forms still handles form submission, notifications, and confirmations. You don't need to change your existing form setup at all.
Frequently Asked Questions
How do I display Gravity Forms entries as a table?
Install the free TableCrafter plugin from WordPress.org, then go to TableCrafter > Tables > Add New in your WordPress admin. Select your Gravity Forms form from the Form dropdown, drag the fields you want to display into the column list, configure labels and column order, and click Save Table. TableCrafter assigns a numeric ID to your configuration. Embed the table on any WordPress page using the [tablecrafter id="N"] shortcode, where N is the table ID. Visitors see a live, sortable, searchable table populated directly from your Gravity Forms entry database with no manual data export required.
Does displaying Gravity Forms entries as a table require coding?
No coding is required. TableCrafter's admin interface handles the connection to Gravity Forms, column mapping, access control, pagination, and display settings entirely through point-and-click controls in the table builder. Embedding uses the [tablecrafter] shortcode or the native Gutenberg block; both require no PHP knowledge to use. No custom PHP, no direct database queries, and no WordPress template modifications are needed to get a live, sortable, searchable table of Gravity Forms entries on the frontend. Developer-level customization is available via WordPress filter hooks such as gravity_tables_column_value for cell value transformations, but these are optional extensions for advanced use cases and are not required for the standard setup described in this guide.
Can I filter and search the Gravity Forms entries table?
Yes. TableCrafter includes a global search bar that searches across all visible columns in real time as the user types. Column-level filters are configured per-column in the table builder's Filtering tab: text columns support text input filters with optional case-sensitive or exact-match modes; Select, Radio Button, and Drop Down columns support dropdown filters populated automatically from the distinct values in the data. Date columns support date-range filters. All filter types work alongside each other and combine with AND logic: a user can filter by status AND date AND search text simultaneously. Pagination is server-side, meaning only the current page's rows are loaded at a time.
Is this free?
The core plugin is free and available on WordPress.org. It supports Gravity Forms entries as the data source. Pro adds inline editing, export, role-based visibility, and auto-refresh.
Try TableCrafter Free
Install from WordPress.org in under two minutes. No account required, no entry limits, no trial period, just live Gravity Forms tables on your frontend.