How to Migrate from Ninja Tables to TableCrafter

Updated July 2026 • 7 min read • By Fahad Murtaza • 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

Ninja Tables is a capable standalone table plugin, but if your WordPress site already uses Gravity Forms for data collection, you are maintaining two separate systems that do not talk to each other. TableCrafter turns your existing Gravity Forms entries into interactive, permission-aware data tables with zero data duplication. This guide walks you through every step of the migration so you can cut Ninja Tables loose without losing a single row. 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. 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. Elementor is the most popular WordPress page builder, active on over 12 million sites (Elementor, 2025).

Why Move Away from Ninja Tables?

Ninja Tables stores its own data inside custom database tables. That means every record you want to display has to be imported, synced, or re-entered separately from wherever the data actually lives in your WordPress install. For sites built around Gravity Forms, this creates a painful double-entry problem: a form captures a submission, and then someone manually pushes that data into a Ninja Tables dataset so it can appear on the front end.

TableCrafter takes the opposite approach. Because it reads directly from Gravity Forms entries through the GFAPI, your table is always live. The moment a form is submitted, the entry is available in any table that points to that form. There is nothing to sync and nothing to re-import. That architectural difference is the core reason to migrate.

Other pain points that drive teams to switch include:

What Should I Do Before Migrating from Ninja Tables?

Open your Ninja Tables dashboard and list every active table. For each one, answer three questions:

  1. Where does the data come from? If it was originally captured by a Gravity Forms form, migration is straightforward. If it came from a CSV import of external data, you will need to decide whether to push that data through a Gravity Form first or connect TableCrafter to a data source like Google Sheets or Airtable.
  2. What columns are visible? Note the field labels and any custom column widths, sort orders, or conditional formatting you have configured.
  3. Who can see or edit the table? Identify any access restrictions so you can replicate them in TableCrafter's role-based permission system.
Tip: Export each Ninja Tables dataset as CSV before you do anything else. This gives you a fallback snapshot in case you need to reference specific values during setup.

Step 1: How Do I Install TableCrafter and Connect Your Data Source?

Install TableCrafter from the WordPress plugin directory. The free tier supports unlimited tables, columns, and rows from JSON, CSV, Google Sheets, and Excel sources with read-only display, basic search, sort, and pagination. That is enough to fully replace a typical Ninja Tables setup without spending anything.

Free Read-only tables with search, sort, and pagination any number of rows.

Pro Unlimited tables, inline editing, bulk actions, advanced filters, and additional data sources.

Once the plugin is active, go to TableCrafter → Tables → Add New. The table builder opens. Under Data Source, select the source that matches your Ninja Tables data:

For most migrations from Ninja Tables that were originally fed by Gravity Forms, selecting Gravity Forms and choosing the source form is all you need. TableCrafter will enumerate every field on that form as a potential column.

Step 2: How Do I Configure Columns to Match Your Ninja Tables Layout?

In the table builder's Columns panel, enable the fields you want to display and drag them into the same order your Ninja Tables table used. Pay attention to a few specific column types that have direct equivalents in TableCrafter:

If your Ninja Tables table hid certain columns from non-admin users, set column-level visibility under Column Permissions after saving. You can restrict individual columns to specific WordPress roles without touching the row-level access settings. Pro

Note: TableCrafter inherits Gravity Forms field labels by default. If your Ninja Tables column headers used custom labels, you can override each column's display label directly in the builder without renaming anything in Gravity Forms.

Step 3: How Do I Embed the Table and Remove the Ninja Tables Shortcode?

After saving the table, TableCrafter assigns it an ID. Embed it using any of the three supported shortcodes; all three are handled by the same renderer:

[tablecrafter id="12"]
[tablecrafter id="12"]
[tablecrafter id="12"]

Find every page, post, or widget where a Ninja Tables shortcode appears and replace it with the equivalent TableCrafter shortcode. The shortcodes accept the same simple id attribute, so the swap is mechanical. If you use a page builder like Elementor, look for Ninja Tables blocks and replace them with a shortcode block containing the new syntax.

Common shortcode attributes you may have used in Ninja Tables and their TableCrafter equivalents:

All AJAX calls from TableCrafter go to wp-admin/admin-ajax.php with nonce validation and capability checks on every request. Ninja Tables uses a similar mechanism, so there is no change to your server's AJAX routing.

Step 4: How Do I Replicate Access Controls with Role-Based Permissions?

This is the step where TableCrafter pulls significantly ahead of Ninja Tables for teams that need access control. TableCrafter supports two layers of permissions: Pro

Navigate to TableCrafter → Settings to configure global defaults, then override per table inside the table builder under the Permissions tab.

If your Ninja Tables setup relied on a third-party role plugin to lock down tables, you can likely remove that dependency entirely once you have moved to TableCrafter's native permission system.

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.

Step 5: How Do I Enable Inline Editing and Decommission Ninja Tables?

One of the most common reasons teams switch is inline editing. Ninja Tables requires users to open a modal or navigate to a separate admin page to change a value. TableCrafter's inline editing writes directly back to the Gravity Forms entry via GFAPI::update_entry_field(), so edits are reflected immediately in the source record. There is no intermediate sync step. Pro

To enable inline editing, open the table in the builder, go to the Editing tab, and toggle Allow Inline Editing. You can restrict which roles can edit and whether editing is allowed per column. Once enabled, users with permission will see cells become editable on click, just like a spreadsheet.

Bulk actions are also available under the same tab: delete selected rows, export the current filtered view as CSV, Excel, or PDF, or fill a column value across multiple rows at once. Pro

Once you have verified that all your tables render correctly and your users have confirmed the inline editing and permission behavior match expectations, deactivate and delete the Ninja Tables plugin. There is no hard dependency between the two plugins, so removal is clean.

Optional: Enable Auto-Refresh on any table that shows frequently updated data. TableCrafter polls for new entries via AJAX at a configurable interval, so the table stays current without a page reload. Pro

Frequently Asked Questions

Why Move Away from Ninja Tables?

Ninja Tables stores its own data inside custom database tables. That means every record you want to display has to be imported, synced, or re-entered separately from wherever the data actually lives in your WordPress install. For sites built around Gravity Forms, this creates a painful double-entry problem: a form captures a submission, and then someone manually pushes that data into a Ninja Table

What Is TableCrafter?

TableCrafter is a WordPress plugin that turns data from Gravity Forms, Google Sheets, Airtable, Notion, REST APIs, CSV files, and WooCommerce into interactive, sortable, filterable frontend tables. Embed any table on any WordPress page with the [tablecrafter] shortcode or the native Gutenberg block. No PHP or custom development required. The free version supports CSV, JSON, Google Sheets, and Excel. Pro adds Gravity Forms, Airtable, Notion, WooCommerce, REST APIs, inline cell editing, export to CSV and PDF, role-based column visibility, and auto-refresh.

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.

Ready to try it?

TableCrafter is free on WordPress.org. Pro unlocks inline editing, role-based permissions, and advanced data sources.

If the expected behavior does not appear after saving, clear any page or object caches active on your site. Caching plugins such as WP Rocket, W3 Total Cache, or LiteSpeed Cache may serve a stale version of the page that predates your configuration change.

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.