Gravity Forms Frontend Table: Show Entries to Users on the Frontend

Updated July 2026 • 5 min read • By Fahad Murtaza

TableCrafter table builder, connect Gravity Forms, Google Sheets, Airtable, CSV, or JSON data sources
TableCrafter table builder, connect Gravity Forms, Google Sheets, Airtable, CSV, or JSON data sources

By default, Gravity Forms entries live entirely inside the WordPress admin. Your users, employees, customers, drivers, clients, have no way to see them without logging in to /wp-admin. This guide shows you exactly how to publish a searchable, sortable frontend table from any Gravity Forms form, with full control over who sees what. The free TableCrafter plugin on WordPress.org connects directly to Gravity Forms entries and renders them as a live, paginated table embeddable on any WordPress page with the [tablecrafter] shortcode. You configure which fields appear as columns, set role-based read permissions, enable search and multi-column sorting, and go live in under ten minutes, no custom PHP, no template overrides, no third-party JavaScript. WordPress powers 43% of all websites globally (W3Techs, July 2026), and Gravity Forms is the leading data-collection layer for that ecosystem. TableCrafter closes the gap between data collected and data displayed.

Why Gravity Forms Entries Are Admin-Only by Default?

Gravity Forms is active on over 10 million WordPress sites (Gravity Forms, 2025), yet it ships with no native frontend table display.

Gravity Forms is excellent at collecting data. What it does not do is display that data back to users on the frontend of your site. Every entry goes into the Gravity Forms entry list in /wp-admin/admin.php?page=gf_entries, a screen that requires administrator or editor access to reach.

This creates a real gap for a wide range of workflows:

In each case the data is already in Gravity Forms. The missing piece is a way to surface it on the frontend, filtered and scoped to the right audience.

How Does TableCrafter Turn GF Entries into a Frontend Table?

TableCrafter (formerly Gravity Tables) is a WordPress plugin built specifically for this. It reads entries directly from Gravity Forms via the GF API and renders them as a fully interactive table on any page or post via a shortcode. No custom code. No REST API configuration. No external database.

You pick a Gravity Forms form, choose which fields become columns, configure filters and permissions, and drop one shortcode on a page. That is the entire workflow.

Important scope note: TableCrafter works exclusively with Gravity Forms entries. It does not import CSV files, connect to Google Sheets, or pull from external APIs. If your data lives in Gravity Forms, it is the right tool. If your data lives elsewhere, it is not.

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.

How Do I Create My First Gravity Forms Frontend Table?

The setup takes about five minutes once the plugin is installed. TableCrafter connects to Gravity Forms through the GF API rather than via custom database queries, so there is no sync step or separate data store to maintain. Every entry that exists in Gravity Forms at the time a user loads the table page is available immediately, and new entries appear on the next page load or, if you enable auto-refresh, on the configured polling interval.

The configuration you build in the steps below is saved as a JSON object in the WordPress post meta for the table's admin post. This means you can export a table configuration and import it to another site, or duplicate an existing configuration as a starting point for a new table that shares the same form but shows different columns.

1. Install TableCrafter

Install the free version directly from WordPress.org: go to Plugins > Add New, search for TableCrafter (or Gravity Tables), install, and activate. No API key required for the free tier.

TableCrafter checks for an active Gravity Forms installation on activation. If it cannot find one, it shows an admin notice in the dashboard and disables the Gravity Forms data source option in the table builder. If you plan to use Pro features, the Pro plugin file is uploaded via Plugins > Add New > Upload Plugin and activated alongside the free plugin. Both must be active simultaneously for Pro features to function; the Pro plugin extends the base plugin rather than replacing it.

After activation, TableCrafter adds a TableCrafter menu item to the WordPress admin sidebar and registers the [tablecrafter] shortcode globally. No site-wide configuration is required before creating your first table.

2. Create a Table Configuration

In your WordPress admin, navigate to TableCrafter > Tables > Add New. The table builder will ask you to select a Gravity Forms form. Once selected, every field in that form becomes an available column.

Drag the columns you want into the active list. For a load tracker, that might be: Driver Name, Date, Origin, Destination, Load Weight, Status. For an employee directory: Name, Department, Role, Phone, Email.

For each column you add, you can set a custom label that differs from the Gravity Forms field label, choose whether the column is sortable, and decide whether a filter dropdown should appear for that column. Multi-input fields like Name and Address can be mapped to a single column showing the combined value, or each sub-input can be added as a separate column depending on your display needs.

When you save, TableCrafter stores the configuration as a JSON object in WordPress post meta. The table ID visible in the admin URL after saving is what you reference in the [tablecrafter] shortcode.

3. Configure Access Permissions

Under the Access tab, choose which WordPress user roles can view the table. You can restrict it to logged-in users only, specific roles (like subscriber or a custom driver role), or leave it public. This determines who can reach the page, not just who can see the shortcode.

The role check is applied by comparing the current user's WordPress role against the allowed_user_roles array stored in the table's configuration. If the array is empty, no role restriction is applied and any logged-in user can view the table. If the array contains one or more role slugs, only users with a matching role see the output; everyone else gets nothing from the shortcode, not a blank table, not an error message.

Separately, you can enable the Filter by Current User option, which filters the Gravity Forms entry query by the created_by field to match the current logged-in user's WordPress ID. This is the mechanism that makes a driver see only their own load submissions and a customer see only their own orders, without any custom PHP.

4. Place the Shortcode

Save your table configuration. TableCrafter assigns it a numeric ID, let's say it is 1. Open any page or post and add the shortcode:

[tablecrafter id="1"]

Publish the page. Visit it on the frontend. Your Gravity Forms entries now appear as a live, paginated table.

The table ID in the shortcode matches the configuration ID shown in TableCrafter > Tables, not the Gravity Forms form ID. If you have multiple table configurations for the same form (for example, one for admins and one for drivers), each gets its own ID and shortcode.

How Does Role-Based Access Control Who Sees Which Entries?

Showing the table to logged-in users is one layer of control. Filtering which entries each user sees is a separate, equally important layer, and this is where most real-world use cases get interesting. TableCrafter implements both as independent configuration options, and combining them is where the real power of the access model becomes visible.

The view permission set via allowed_user_roles determines whether a user can see the table container at all. The entry filter set via the filter_user_entries flag in the table configuration determines which rows from Gravity Forms appear in the data query. A user may have view permission but still see only a subset of all entries because the entry filter is active. An administrator bypasses the entry filter and sees all entries unless you configure a separate admin-facing table with explicit role restrictions.

Show Users Only Their Own Entries

TableCrafter supports filtering by the WordPress user who submitted the entry. Enable the Filter by Current User option in the table configuration, and a driver logging in will see only their own loads. A customer will see only their own orders. This works via Gravity Forms' built-in created-by field, no custom coding required.

The filter works by appending a created_by condition to the Gravity Forms entry query. Gravity Forms stores the WordPress user ID of the form submitter in the created_by field on every entry. When filter_user_entries is enabled in the table configuration, the AJAX handler that fetches entries adds a search criterion matching created_by to the ID of the currently logged-in WordPress user. Entries submitted while logged out have no user association and are excluded from filtered views.

The filter only works when the user who submitted the form was logged into WordPress at the time of submission. If your form accepts anonymous submissions and you later need to associate them with users, that association must be made directly in Gravity Forms. TableCrafter reads whatever is stored in created_by and does not infer a user from other field values.

Admins See Everything, Users See Their Own

A common pattern is to create two table configurations from the same form:

  1. Admin table (ID 1): All entries, all columns, restricted to the administrator role. Embedded on an admin-only dashboard page.
  2. Driver table (ID 2): Filtered to current user, limited columns (no internal notes column, for example), open to the driver role. Embedded on the driver portal page.

Both tables pull from the same Gravity Forms form. Each has its own shortcode. This setup handles the majority of role-based data access requirements without any custom PHP.

Because each configuration has its own numeric ID and shortcode, you can embed them on completely different WordPress pages. The admin table might live on a page accessible only to administrators, while the driver table sits on a member-only page in the driver portal. Neither page needs conditional logic in the template; the role check inside the table shortcode handles the gatekeeping.

If your site has more than two audiences, you can create as many configurations as needed from the same form. A third configuration might give supervisors an aggregated view with status badges, while the admin configuration includes raw field data and internal notes columns.

How Does Column Visibility by Role Work? Pro

If you need column-level control, not just row-level, TableCrafter Pro adds per-column role visibility. You can configure a column so that administrators see a Cost field while drivers do not, even if both are viewing the same table on the same page.

This is useful when your form captures internal data (margins, admin notes, vendor contacts) alongside data that is appropriate for the end user to see. Instead of building two separate tables, you build one and toggle visibility per column per role.

Column visibility by role is configured per column in the table builder's column settings panel. A column without a role restriction is visible to everyone who can view the table. A column with restrictions is not rendered into the HTML for users who lack the required role; it is removed at the server rendering stage rather than hidden with CSS, which means it is absent from the page source for restricted users.

The feature pairs naturally with per-row filtering. You can combine a current-user entry filter with column-level role visibility to build a table where regular users see only their own entries and a subset of columns, while administrators see all entries and all columns including those with cost data or internal notes.

How Do Filtering, Search, and Sorting Work?

Every TableCrafter table ships with search and sorting built in, no configuration needed. These are free features:

For a load tracking system, a dispatcher might filter by driver name and date range to see that day's completed loads. For an order tracker, a customer might search by order number. All of this works with zero code.

How Do I Export Table Data?

TableCrafter includes a CSV export button Free that exports the currently filtered view. If a user has filtered the table to their own entries for a date range, the export reflects exactly that, not the full dataset.

This is particularly useful for drivers who need to submit weekly mileage reports, or customers who need a record of their orders for accounting purposes. The export respects access permissions: a driver exporting their own table cannot download another driver's entries.

This step applies universally to all instances of this table. If you have the same table embedded in multiple pages or posts, the setting takes effect on all of them simultaneously without any additional steps.

This configuration interacts with any caching or CDN layer active on your WordPress installation. If you use WP Rocket, LiteSpeed Cache, or a CDN such as Cloudflare, flush the page cache after making this change to ensure the updated configuration is reflected in the cached HTML served to visitors. TableCrafter's server-side output is regenerated on the next uncached request.

What Are the Real-World Use Cases?

Load Management System

Drivers submit loads via a Gravity Form. A frontend table shows each driver their own history. Dispatchers see the full board filtered by date and status.

Employee Directory

HR collects staff information via a form. The table surfaces it company-wide as a searchable directory, no database plugin needed.

Order Tracker

Customers submit orders via Gravity Forms and check status on a portal page. Filtering by current user ensures each customer sees only their orders.

Project / Task Board

Project submissions feed a frontend table visible to team members. Status badges highlight which tasks are open, in progress, or complete.

How Does Inline Editing on the Frontend Work? Pro

TableCrafter Pro adds the ability to edit entries directly in the frontend table, no round-trip to the WP admin required. Click a cell, type a new value, and the change saves back to Gravity Forms via AJAX.

For a load tracker, a dispatcher can update a delivery status from In Transit to Delivered directly in the table. For a project board, a team member can mark a task complete without leaving the page. Inline edit validation ensures data integrity: required fields cannot be blanked out, and format constraints from the original form are respected.

Additional Pro editing features include:

How Do Status Badges and Data Bars Work?

Two display features make the table readable at a glance:

Status Badges Free map choice field values to color-coded pill badges. If your form has a Status field with values like Open, In Progress, and Closed, you configure each value to a color. The column renders as color badges instead of plain text, immediately scannable.

Data Bars Pro render numeric fields as horizontal progress bars relative to the column maximum. For a load weight column, for instance, each row shows a bar indicating the load relative to the heaviest entry in the current view.

After completing this step, verify the result by viewing the page as a logged-out visitor in an incognito window. This confirms the table behaves correctly for public visitors rather than reflecting admin-level permissions that may hide configuration issues during initial setup. Check both the rendered output and the browser console for any JavaScript errors.

How Do Requirements and Compatibility Work?

TableCrafter has minimal requirements:

It works alongside any WordPress theme and does not require Elementor, WooCommerce, or any other plugin. The free version is fully functional with no usage limits on the number of tables or entries.

TableCrafter does not add custom database tables. It reads directly from Gravity Forms' entry tables (wp_gf_entry, wp_gf_entry_meta). Your data stays in Gravity Forms, TableCrafter is purely a display and editing layer on top of it. 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, REST APIs, inline cell editing, export to CSV/PDF, role-based column visibility, and auto-refresh. Every table embeds on any page with a [tablecrafter] shortcode or the native Gutenberg block.

What Features Does Free Include vs. Pro?

The free version covers most display and filtering needs:

Pro adds write-back and advanced display capabilities:

Start with the free version to verify it fits your use case, then upgrade if you need editing or role-based column control.

The column mapping you define here is stored as a JSON configuration in the WordPress database. You can export this configuration using the TableCrafter export tool and import it to another table or another site. This is useful when replicating a table layout across multiple pages or when migrating a table to a staging environment for testing before going live.

Frequently Asked Questions

Why Gravity Forms Entries Are Admin-Only by Default?

Gravity Forms is excellent at collecting data. What it does not do is display that data back to users on the frontend of your site. Every entry goes into the Gravity Forms entry list in /wp-admin/admin.php?page=gf_entries, a screen that requires administrator or editor access to reach.

What is a Gravity Forms frontend table?

Gravity Forms Frontend Table: Show Entries to Users on the Frontend is a capability provided by TableCrafter, a WordPress plugin that displays data from Gravity Forms, Google Sheets, Airtable, Notion, REST APIs, CSV, JSON, and WooCommerce as interactive, searchable, sortable frontend tables, without writing code.

Does this require PHP or developer skills?

No. TableCrafter is configured entirely through the WordPress admin interface. You choose your data source, map fields to columns, and set display preferences using point-and-click controls. Embedding uses the [tablecrafter] shortcode or the native Gutenberg block.

Is the free version sufficient or do I need Pro?

The free plugin on WordPress.org supports CSV, JSON, Google Sheets, and Excel sources with unlimited tables, rows, and columns. Pro adds Gravity Forms, Airtable, Notion, WooCommerce, REST API sources, inline cell editing, bulk row actions, export to CSV and PDF, role-based column visibility, and auto-refresh every N seconds.

Try TableCrafter Free

Install from WordPress.org in two minutes. No account required. Upgrade to Pro when you need inline editing or role-based column visibility.