How to Edit WooCommerce Order Status Inline from a Frontend Table

Updated July 2026 • 7 min read • By Fahad Murtaza

TableCrafter inline spreadsheet-style editing on the frontend, click any cell to edit
TableCrafter inline spreadsheet-style editing on the frontend, click any cell to edit

TableCrafter's inline editing for WooCommerce orders lets shop managers change order status directly from a frontend table cell, no clicking into the order detail page, no WooCommerce admin navigation. The status change writes back through the WooCommerce order API, which means all the same hooks, automations, and customer emails fire exactly as they would from the WooCommerce admin. 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. WooCommerce powers over 6 million live online stores (BuiltWith, 2026).

How Does Write-Back Work?

When a user changes a status value in a TableCrafter inline edit cell, the plugin does not write directly to the database. Instead it calls wc_update_order() with the new status, which is the same internal function WooCommerce uses. This means:

This is a meaningful distinction from plugins that write status changes directly to the database row, which bypass all WooCommerce hooks.

Email notifications fire automatically. When you change an order from Processing to Completed, WooCommerce sends the customer an Order Completed email. Make sure shop managers understand this before using inline editing in a test or staging environment with real customer email addresses.

Step 1: How Do I Enable Inline Editing on the Status Column?

In your table config, open the Columns tab and find the order_status column. Open its settings and locate the Edit sub-panel:

Save the column settings and save the table config. After saving, the edit settings are stored in the table configuration and apply immediately on the next page load — no cache flush is required. The change is reflected across all pages that embed this table ID using the edit="true" shortcode attribute.

Step 2: How Do I Configure Role Gating?

TableCrafter applies two independent layers of role checking for inline edits:

  1. Table-level edit permission: Set in Access → Roles that can edit. This gates whether the edit UI appears at all.
  2. Column-level edit permission: Set per field in the column's Edit sub-panel. This gates whether a specific column is editable even for users who can edit the table.

For a typical WooCommerce setup, configure both levels:

A customer-role user visiting the page sees the table in read-only mode. The inline edit controls do not render in their browser at all, they are not hidden by CSS, they are not output by the server.

This step completes the connection between your data source and the TableCrafter table engine. Once saved, the plugin caches the connection credentials in the WordPress options table and uses them on every subsequent page load. If you update the source configuration later — for example, rotating an API key or changing a sheet URL — return to this step, enter the new value, and save again. The table updates immediately on next load without any shortcode changes.

Step 3: How Do I Place the Shortcode with Edit Enabled?

Edit the page where you want the WooCommerce order management table and add a Shortcode block or Custom HTML block. Paste:

[tablecrafter id="3" edit="true" filter="true"]

The edit="true" attribute enables the frontend edit mode globally for this embed. Without it, the table renders read-only regardless of the table config's column-level edit settings — you must explicitly activate edit mode at the shortcode level. This design allows you to embed the same table configuration on multiple pages with different behaviors: read-only on a public-facing order summary page (no edit="true"), editable on a private management page (edit="true" present), using the same table ID and the same column configuration. No separate table config is required for the two views.

After publishing, verify the order management table is accessible to Shop Manager accounts but not to Customer-role accounts by testing with accounts at each role level. If a Customer-role user can see the table, check the "Minimum role to view" setting in the table config's Access tab — it should be set to Shop Manager or higher for this use case.

How Does the Inline Edit UX Work?

In edit mode, the order_status column renders each cell as a badge with a small edit icon. When a shop manager clicks the cell:

  1. The badge is replaced by a dropdown select showing all available WooCommerce statuses
  2. The current status is pre-selected
  3. The manager selects the new status
  4. A confirm checkmark (save) and an X (cancel) appear next to the dropdown
  5. Clicking the checkmark sends an AJAX request to TableCrafter's REST endpoint
  6. TableCrafter calls wc_update_order() server-side
  7. On success, the cell reverts to badge display showing the new status
  8. On failure, an error toast appears and the cell reverts to the original value

The entire interaction happens without a page reload.

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.

What Status Changes Trigger in WooCommerce?

Different status transitions trigger different WooCommerce behaviours. Understanding this is important before giving shop managers inline edit access:

Processing → Completed

Any Status → Refunded

Any Status → Cancelled

Refunds are not automatic: Changing status to Refunded records the status change but does not issue a payment refund through your payment gateway. You must process the actual refund separately in WooCommerce order detail or through the payment gateway's dashboard.

How Does Limiting Which Status Transitions Are Allowed Work?

If you want to restrict the dropdown to only valid forward transitions (for example, prevent moving an order backwards from Completed to Processing), use the Allowed Values setting in the column's edit config. Enter the slugs of the statuses you want to appear in the dropdown:

processing, on-hold, completed, cancelled, refunded

Leave out pending and failed if you never want shop managers to set those manually. The column will display any status value (including pending and failed) in read mode, but the edit dropdown only offers the specified options.

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 Does Audit Log Considerations Work?

WooCommerce records status changes in the order notes for each order. When TableCrafter updates a status via wc_update_order(), WooCommerce adds an order note: Order status changed from X to Y. The note does not currently include which user made the change from the frontend table vs. the WooCommerce admin, both appear identically in the order note log. If you need user attribution, enable TableCrafter's Edit Log feature in Settings → Audit, which writes a separate log entry including the WordPress user ID and timestamp for each TableCrafter-initiated edit.

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.

How Do Caveats and Limitations Work?

Frequently Asked Questions

How Does Write-Back Work?

When a user changes a status value in a TableCrafter inline edit cell, the plugin does not write directly to the database. Instead it calls wc_update_order() with the new status, which is the same internal function WooCommerce uses. This means:

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.