How to Set Up Status Badges in a WordPress Table

Updated July 2026 • 6 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

Status badges turn raw text values like "Pending" or "Approved" into color-coded labels that let users scan a table and understand data state at a glance. TableCrafter's status badge feature maps any text value to a custom background color, giving your WordPress tables the kind of visual clarity you'd expect from a spreadsheet or project management tool, without writing a line of CSS. 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 block. CSV remains the most universally supported data exchange format, used by 91% of business intelligence tools (Gartner, 2025).

How Do What Status Badges Are and Why They Matter Work?

When you display form entries in a table, status columns are almost always plain text. A driver dispatch table might show "Available," "On Route," or "Off Duty." An order table might show "Pending," "Processing," "Shipped," or "Cancelled." Reading those words row after row is slow, your eyes have to parse each string individually.

Status badges solve this by pairing each text value with a background color. "Approved" renders as a green pill. "Rejected" renders red. "Pending" renders amber. The color communicates meaning before the reader even reads the word. The result is a table that communicates status in milliseconds instead of seconds.

In TableCrafter, status badges are a Pro column display mode. They are configured per column in the table builder, so you can have badge columns alongside plain-text columns, numeric columns with data bars, and editable columns, all in the same table.

Pro feature: Status badges require a TableCrafter Pro license. The free tier renders all columns as plain text. You can set up the table structure on the free tier and activate badge rendering after upgrading.

What Do I Need Before Setting Up Status Badges?

To follow this guide you need:

Status badges work best on fields with a finite, known set of values, dropdown fields, radio buttons, or any field where entries follow a consistent vocabulary. They technically work on free-text fields too, but you would need to define a badge rule for every possible value you want styled, and unmapped values fall back to plain text display.

Data source note: Status badges work across all TableCrafter data sources, Gravity Forms, Google Sheets, REST API, Airtable, and WooCommerce. The configuration steps below are the same regardless of data source.

Step 1: How Do I Open the Table Builder and Select Your Column?

Navigate to TableCrafter → Tables in your WordPress admin. Either click Add New to create a fresh table or click the name of an existing table to open its builder.

In the table builder, locate the column that holds your status values. If you are building a new table, drag the relevant form field from the field picker into the columns list. Each column card in the builder shows the field label, the field ID, and a Display Type dropdown on the right side of the card.

Click the Display Type dropdown for your status column. You will see options such as Plain Text, Link, Data Bar, and Status Badge. Select Status Badge.

Selecting Status Badge reveals a badge mapping panel directly below the column card. This is where you define which text values map to which colors.

Step 2: How Do I Define Your Badge Mappings?

The badge mapping panel shows a repeater interface: each row has a Value field and a Color picker. Click Add Badge Rule to add your first mapping.

In the Value field, type the exact text string as it appears in your form entries. Matching is case-sensitive by default, so "Pending" and "pending" are treated as different values. Enter the value exactly as Gravity Forms stores it, for dropdown fields, this is the choice label, not the choice value, unless you have configured Gravity Forms to store values separately.

Click the Color swatch to open the color picker. You can enter a hex code directly or use the color wheel. TableCrafter applies this color as the badge background and automatically computes a contrasting foreground color (black or white) so your badge text remains readable at any background hue.

Repeat this for every status value you want styled. A typical set for a dispatch or fulfillment table might look like this:

Pending       → #F59E0B  (amber)
Approved      → #10B981  (green)
Rejected      → #EF4444  (red)
In Review     → #6366F1  (indigo)
Cancelled     → #6B7280  (gray)
Unmapped values: Any entry value that does not match a defined badge rule renders as plain text inside a neutral gray badge. You do not need to map every possible value, only the ones you want color-coded.

There is no limit to the number of badge rules you can define per column. You can also reorder rules using the drag handle on the left of each row, though the order does not affect matching, all rules are evaluated independently.

Step 3: How Do I Save and Embed the Table?

Once your badge rules are defined, click Save Table at the top right of the builder. TableCrafter stores the column configuration, including all badge mappings, in the WordPress database.

To display the table on a page or post, use the TableCrafter shortcode. All three shortcode aliases map to the same handler:

[tablecrafter id="42"]
[tablecrafter id="42"]
[tablecrafter id="42"]

Paste any of these into a page, post, or Elementor HTML widget, replacing 42 with your table's actual ID. The table ID is shown in the URL when you are editing a table in the builder, and in the Tables list under the table name.

Load the page on the frontend. The status column should now render each entry's value as a colored pill badge. If you see plain text instead of badges, verify that your TableCrafter Pro license is active under TableCrafter → Settings → License.

Step 4: How Do I Combine Badges with Inline Editing?

One of the most useful combinations in TableCrafter Pro is status badges paired with inline editing. This lets a user see the current status at a glance and update it directly in the table, clicking the badge opens an edit control, the user selects a new value, and the badge color updates immediately after saving.

To enable inline editing on the badge column, scroll to the column card in the builder and toggle Allow Inline Edit on. For a dropdown field, TableCrafter will render the inline editor as a select input populated with the field's choices. After the user saves, the cell re-renders using the badge display rules, so the new status appears as the correct colored badge without a page reload.

Inline edits write back to Gravity Forms via GFAPI::update_entry_field(), so the change is permanent and reflected in your Gravity Forms entry list. All AJAX calls go through wp-admin/admin-ajax.php with nonce validation on every request.

Role-based editing: You can restrict which user roles can edit the badge column using TableCrafter's column-level permission settings. For example, you might allow "Administrator" and "Editor" roles to change a status field while "Subscriber" or custom roles like "driver" see the badge as read-only.

How Does Troubleshooting Common Issues Work?

If your badges are not rendering as expected, work through these checks:

Frequently Asked Questions

How Do What Status Badges Are and Why They Matter Work?

When you display form entries in a table, status columns are almost always plain text. A driver dispatch table might show "Available," "On Route," or "Off Duty." An order table might show "Pending," "Processing," "Shipped," or "Cancelled." Reading those words row after row is slow, your eyes have to parse each string individually.

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.