How to Combine Bulk Actions with Active Filters in TableCrafter

When you are managing hundreds or thousands of Gravity Forms entries in a TableCrafter table, bulk actions and active filters are your two most powerful tools, but the real productivity unlock comes from using them together. Filtering down to a precise subset of rows and then running a bulk delete, export, or column-fill on exactly that set saves significant time and eliminates the risk of touching records you did not intend to modify. This guide walks through how the combination works, what to watch for, and how to configure your tables to get the most out 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. The free version on WordPress.org supports CSV, JSON, Google Sheets, and Excel. Pro adds Gravity Forms, Airtable, Notion,. REST APIs handle over 83% of all web API traffic as of 2025 (RapidAPI, 2025).
How Does Understanding Bulk Actions in TableCrafter Work?
Pro Bulk actions are a Pro-tier feature. Once unlocked, three bulk operations are available on any TableCrafter table:
- Bulk Delete, permanently removes selected Gravity Forms entries via the GFAPI. This action cannot be undone from the table interface, so use it with care.
- Bulk Export, exports only the selected rows to CSV, Excel, or PDF, depending on your export configuration.
- Column Fill, writes a single value to a specific column across all selected rows. This is useful for status updates, category assignments, or any field that needs to be set uniformly across a batch of records.
Bulk actions appear as a checkbox column on the left side of the table and a dropdown menu above or below the table body. All bulk operations are processed through wp-admin/admin-ajax.php with nonce validation and WordPress capability checks, so permissions you configure at the table level are enforced on every bulk request.
How Active Filters Scope the Selectable Row Set?
Pro TableCrafter's advanced filter system lets visitors or administrators narrow the visible rows by field value, date range, multi-select category, or lookup field label. When a filter is active, the table re-fetches matching rows from the server via AJAX and renders only those rows in the table body.
The key behavior to understand: the checkbox column and bulk action selection always operate on the currently visible (filtered) row set. If you have 2,400 entries in a table and you apply a filter that returns 38 rows, the "Select All" checkbox selects those 38 rows, not all 2,400. This is intentional and is what makes the filter-then-bulk-act workflow safe and predictable.
Filters can be stacked. You might filter first by a status field, then narrow further by a date range, and then apply a bulk column-fill to the resulting slice. Each layer refines the set before you act on it.
How Do I Filter Down and Run a Bulk Action?
The workflow below assumes you have a Pro table configured with at least one filter column and bulk actions enabled.
- Open the page containing your table. The shortcode
[tablecrafter id="X"](also accepted as[tablecrafter id="X"]or[tablecrafter id="X"]) renders the table for the current user's role. - Apply your filter or filters. Use the filter controls above the table to set the criteria that define the rows you want to act on. Wait for the AJAX reload to complete, the row count in the table header updates to confirm the filtered set size.
- Verify the row set. Scroll through the visible rows to confirm the filter returned what you expected before selecting anything.
- Select rows. Click the header checkbox to select all visible rows, or check individual rows manually. The bulk action toolbar activates once at least one row is selected.
- Choose and confirm the bulk action. Pick Delete, Export, or Column Fill from the dropdown. For Column Fill, a secondary input appears to specify the target column and value. For Delete, a confirmation prompt appears before any data is removed.
- Review the result. After the action completes, the table reloads. If your filter is still active, the table re-applies it automatically and displays the updated matching rows.
How Do I Configure Tables to Support This Workflow?
To get the most out of combined filtering and bulk actions, a few table-level settings are worth reviewing in the TableCrafter admin (TableCrafter → Tables → edit your table):
Enable the Right Columns as Filters
In the Columns tab of the table builder, toggle the "Filterable" option on each column you want to use as a filter control. Columns that hold categorical data such as status, type, or assigned user are the most useful filter targets when paired with bulk actions. TableCrafter automatically renders dropdown filters for columns that contain a bounded set of values, including Lookup fields that resolve an ID to a display label.
When a filter is active, TableCrafter sends the filter criteria as typed parameters with each AJAX entry request. The server applies these as conditions on the Gravity Forms entry query and returns only the matching rows. The rows rendered in the table are the exact rows that passed the server-side filter check. This scoping is what makes bulk actions on a filtered set precise: you are operating on only the rows the server confirmed match your criteria, not on a client-side approximation of the filtered set.
Practical guidance: enable filterable on the two or three columns you use most often as scoping criteria before running bulk operations, such as a Status column and a Date column. A focused filter bar reduces the risk of accidentally running a bulk action against a broader row set than intended, especially for destructive operations like Bulk Delete.
Set Per-Page Row Limit Appropriately
If you routinely bulk-act on more rows than fit on a single page, increase the per-page limit under the Display tab. Alternatively, if your filtered sets are consistently small, loading all filtered rows at once eliminates the pagination-boundary issue entirely. This setting is per-table, so you can tune it independently for each table's use case.
The reason the per-page setting matters for bulk actions: the "Select All" header checkbox toggles only the row checkboxes currently rendered in the table body. If you are on page 1 of 5 with a per-page limit of 25, clicking "Select All" selects 25 rows, not all 125 filtered rows across all pages. The bulk action then runs on only those 25 rows. To act on the full filtered set, all matching rows must be rendered in the current page view before you select.
Before a large bulk operation, raise the per-page limit high enough to render the entire filtered set in one page load, run the action, then reduce the limit back for normal browsing. For very large filtered sets, consider whether a server-side admin bulk action is a better fit than a frontend operation.
Role-Based Permissions
Pro Under the Permissions tab, assign which WordPress roles can view the table, which can edit inline, and which can run bulk actions. A common pattern for team workflows is:
- Viewer roles, read-only; see all data, no checkboxes.
- Editor roles, inline editing enabled; bulk Column Fill available.
- Admin roles, full access including Bulk Delete and Export.
Column-level permissions can further restrict which fields an editor role is allowed to modify via Column Fill, preventing accidental overwrites of sensitive fields.
[tablecrafter id="12"]
Drop that shortcode on any page or post. The rendered output, including which bulk action controls appear, automatically reflects the current user's role and the permissions you configured.
How Do Common Patterns and Use Cases Work?
Here are a few real-world workflows that benefit from combining filters with bulk actions in TableCrafter:
Status Batch Update
Filter the table to show only rows where a status field equals "Pending Review." Verify the row count in the table header matches what you expect before selecting. Select all visible rows. Use Bulk Column Fill to set the status field to "Approved." All matching Gravity Forms entries are updated via GFAPI::update_entry_field() in a single batch operation.
On the server side, TableCrafter processes your selected entry IDs one by one. For each entry, it captures the current field value before overwriting it, then writes the new value. If you have email alert rules configured for that field in the table's Alert settings, those rules are evaluated per-entry during the batch: the system compares old value to new value and sends a notification when the configured threshold is met. A batch update across 40 rows can trigger up to 40 alert evaluations, so review your alert settings before running large status batches where notification volume is a concern.
After the batch completes, the table reloads with your active filter still applied. If all updated rows no longer match the "Pending Review" filter, the table will show zero results. That is the expected and correct outcome, confirming the batch ran on exactly the rows you targeted.
Filtered Export for Reporting
Apply a date range filter to isolate entries from a specific month. Select all rows. Run Bulk Export as CSV or Excel. The exported file contains only the selected rows, not the entire entry set. No manual copy-paste from a spreadsheet required.
The per-page setting affects what "select all rows" actually means here. If your date filter returns 150 entries for the month but your per-page limit is 25, clicking the header checkbox selects only the 25 rows on page 1. The exported file would contain those 25 rows, not all 150. Before running a filtered export intended to cover the full filtered set, raise the per-page limit to render all matching rows in a single view, then select all and export.
For recurring reports using the same filter criteria each period, bookmark the page URL after applying the filter. TableCrafter writes the current filter state into the browser URL, making the filtered view directly linkable. A team member can open that URL, which pre-applies the filter, select all visible rows, and run the export without needing to configure the filter from scratch each time.
Cleanup of Stale Records
Filter to entries older than a cutoff date with a status of "Abandoned." Review the filtered set. Select all and run Bulk Delete. Because the filter scopes the deletion to exactly the rows you reviewed, there is no risk of accidentally deleting active records.
How Do Troubleshooting Filter and Bulk Action Interactions Work?
A few issues come up occasionally when using these features together:
Bulk action processes more rows than expected
This usually means the "Select All" checkbox was clicked before the filter finished loading. When you apply a filter, TableCrafter fires an AJAX request and shows a loading state while fetching the filtered rows. If you click "Select All" while pre-filter rows are still rendered from a previous load, you select those rows rather than the filtered set. Always confirm the displayed row count matches your expected filtered total before selecting.
A second cause is a mismatch between the filter you believe is active and what is actually applied. Per-column text filters and the advanced filter panel operate as separate controls; if one was cleared without you noticing, the effective row set can be significantly larger than expected. Check both filter controls before running a destructive action such as Bulk Delete, where selecting the wrong row set cannot be undone from the table interface.
If the table has Auto-Refresh enabled, a refresh cycle that fires while rows are selected re-renders the table body, which clears all current checkboxes. Disable auto-refresh in the table's Display settings before running a bulk operation, or set the refresh interval long enough that it will not trigger during your selection and action sequence.
Filter resets after bulk action completes
TableCrafter preserves the active filter state across bulk action reloads by default. After a bulk action completes, the plugin calls loadEntries() internally with the current filter criteria still active on the table instance. The table re-fetches matching rows using the same parameters, so the filtered view persists without any manual re-application.
If your filter is resetting after a bulk action, the most common cause is a caching plugin intercepting or modifying the AJAX response from wp-admin/admin-ajax.php. NitroPack, WP Rocket, and LiteSpeed Cache can affect frontend AJAX requests if their caching scope is configured too broadly. Add an exclusion rule for wp-admin/admin-ajax.php in the caching plugin's settings to ensure TableCrafter's AJAX requests reach the server and return a live response rather than a cached version from a prior page state.
A second cause is that filter state is stored in browser memory for the current page session. If a bulk action triggers a full page reload instead of an AJAX re-render, the in-memory filter state is lost. Enable "Persist filters" in the table's Display settings to write filter state to localStorage, where it survives full page reloads as well as AJAX refreshes.
Column Fill is not visible in the bulk action dropdown
Column Fill only appears when the current user's role has inline editing permissions on at least one column in the table. Column Fill is a bulk extension of inline editing: if inline editing is not enabled for the current user's role in the table's Permissions tab, Column Fill will not appear in the bulk action dropdown. Revisit the Permissions tab and confirm that inline editing is enabled for the relevant role.
A second cause is the per-table bulk action configuration. TableCrafter allows you to restrict which bulk operations are available per table (Delete, Export, Column Fill). If Column Fill was unchecked in the table's settings when it was configured, it will not appear in the dropdown for any user regardless of their permissions. Check the table's Bulk Actions settings in the TableCrafter admin and confirm that Column Fill is enabled alongside Delete and Export.
Column Fill is also a Pro-only feature. If the site is running the free version, the Column Fill option will not be rendered in the bulk action dropdown at all. Upgrade to Pro to unlock bulk column fill alongside bulk delete and bulk export on your tables.
Frequently Asked Questions
How Does Understanding Bulk Actions in TableCrafter Work?
Bulk actions in TableCrafter are a Pro feature that let you operate on multiple Gravity Forms entries at once from the frontend table view. Three operations are available: Bulk Delete permanently removes the selected entries via the Gravity Forms API and cannot be undone from the table; Bulk Export generates a CSV, Excel, or PDF file containing only the selected rows; and Column Fill writes a single value to a specific field across all selected entries in one batch. All three run through WordPress's admin-ajax.php endpoint with nonce verification and role-based permission checks. When combined with an active filter, bulk actions operate on the visible filtered row set, giving you precise control over which entries are affected.
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, configure filter controls, enable bulk actions, and set role permissions using point-and-click controls. Embedding uses the [tablecrafter] shortcode or the native Gutenberg block. Filter controls and bulk action settings are configured in the table builder under the Columns and Permissions tabs, with no PHP, JavaScript, or database knowledge required.
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.