How to Display Airtable Data as a Read-Only Table in WordPress

The simplest and most common Airtable use case in TableCrafter is a clean, read-only display: pull records from an Airtable base, show them in a filterable, sortable table on your WordPress site, and give visitors no ability to edit the underlying data. This guide covers the exact configuration, the canonical use cases where this pattern shines, and the shortcode to use. 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. Google Sheets is used by over 1 billion people globally (Google, 2023).
When Read-Only Is the Right Choice?
Not every table needs inline editing. Read-only display is the right choice when:
- Data is managed entirely in Airtable by a specific team and visitors should only browse it
- The table is public-facing and you do not want anonymous visitors modifying records
- You are displaying reference data: a product catalog, event schedule, team roster, or resource list
- You want the simplest possible setup with the fewest moving parts
Read-only mode also means you do not need write scope on your Airtable personal access token, which reduces the security surface area of the integration.
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 1: How Do I Create the Personal Access Token (Read Scope Only)?
Go to airtable.com/create/tokens (sign in if prompted) and click Create new token. On the token creation screen:
- Under Scopes, add only
data.records:read. You do not needdata.records:write,schema.bases:read, or any metadata write scope — requesting extra scopes increases the blast radius if the token is ever leaked. - Under Access, select the specific Airtable base you are connecting. Granting access to all bases means this token can read any base in your workspace — scope it to the minimum needed.
- Name the token descriptively: "TableCrafter Read - [Site Name]" so you can identify it in the token list when rotating credentials later.
After clicking Create token, the token value is shown once — copy it immediately into a secure location. Airtable does not show the token value again after you close the creation dialog. If you lose it, you must rotate (revoke and regenerate) the token and update TableCrafter's data source settings with the new value.
Step 2: How Do I Configure the TableCrafter Data Source?
- In WordPress, go to TableCrafter → Add New Table.
- Name the table something descriptive, for example
Event CalendarorPublic Project Board. - Select Airtable as the data source.
- Enter your read-only personal access token, base ID, and table name.
- Optionally specify a view name to pull from a filtered or sorted Airtable view rather than showing all records.
- Click Test Connection and confirm fields are detected.
Using a specific Airtable view is particularly powerful for read-only display. You can create a filtered, sorted view in Airtable, for example, only showing published events sorted by date, and point TableCrafter at that view. Visitors see exactly the records you intend, without needing to configure filters in TableCrafter itself.
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.
Step 3: How Do I Configure Columns for Read-Only Display?
With fields detected, configure which columns to show and how they render.
- Toggle off any internal fields visitors should not see (record IDs, internal notes, admin flags).
- Set readable column labels. Use plain language, not Airtable field names.
- For image URL fields, set the column type to Image so thumbnails render instead of raw URLs.
- For URL fields, confirm the column type is set to URL for clickable links.
- Set column widths and the default sort column.
Do not enable the Edit toggle. Leave it off entirely, this is what makes the table read-only.
TableCrafter re-fetches this data on each page load by default. If your data source updates infrequently and your site has significant traffic, enable the built-in caching option in the table's Performance tab. This stores the fetched data for a configurable number of minutes and serves it from WordPress transients, reducing API calls to the source and improving page load time for visitors.
Step 4: How Do I Enable Filtering and Search?
Read-only does not mean static. Visitors can still sort, search, and filter to find the records they need.
- Enable Search to show a live search bar above the table. Visitors can type and filter rows in real time across all text columns.
- Enable Filters to show dropdown filters for Select and Multi-select columns. For example, a project board can be filtered by Status; an event list can be filtered by Category.
- Enable Sort to allow visitors to click column headers to sort ascending or descending.
These features are all purely client-side in read-only mode, they operate on the fetched dataset without making additional API calls, which means fast interaction even on larger tables.
The configuration you set here applies to every visitor who loads a page containing this table, regardless of whether they are logged in. Role-specific overrides for columns and rows are a separate layer and do not replace these global display settings. Apply global settings first, then add role restrictions as needed for tables that serve multiple user types.
Step 5: How Do I Place the Shortcode?
Paste the shortcode into any WordPress page or post using a Shortcode block in the block editor, or directly in the Classic Editor. The shortcode you use determines what controls are visible to the visitor:
Read-only table with search and filters enabled:
[tablecrafter id="1" filter="true" search="true"]
Renders a full-featured read table with a search box above the data and dropdown filter controls for configured columns. Use this for member directories, product catalogs, or any table where visitors need to narrow down many records.
Read-only table with no controls — pure display:
[tablecrafter id="1"]
Renders just the table with headers and data rows. Use this for small reference tables (team roster, pricing tiers, feature comparison) where the number of rows is small enough that filtering is unnecessary.
Read-only table with export enabled:
[tablecrafter id="1" filter="true" search="true" export="true"]
Adds an Export button to the toolbar above the table. Visitors can download the current filtered view as CSV, Excel, or PDF depending on which formats you enabled in the table settings. Use this when visitors may need to take the data offline — event lists, vendor directories, public datasets.
What Are the Canonical Use Cases?
Public Project Board
Display a team's active projects with columns for Project Name, Status (Single select), Owner, Start Date, and Due Date. Visitors can filter by Status to see only In Progress or Completed projects, and sort by Due Date to see what is coming up soonest.
Recommended configuration: filter by Status column, sort by Due Date ascending by default, search enabled.
[tablecrafter id="2" filter="true" search="true"]
Content Calendar
Publish your editorial calendar publicly so contributors, clients, or partners can see what is scheduled. Columns: Title, Author, Publish Date, Content Type (Single select), Status. Filter by Content Type and Status; sort by Publish Date.
For a content calendar, point TableCrafter at an Airtable view that only shows records with Status not equal to Draft, so internal drafts stay private while the public calendar shows scheduled and published items.
Event List
Display upcoming events with Name, Date, Location, Category, and a Registration URL column. Filter by Category, sort by Date ascending, and use a date range filter on the Date column so visitors can find events in a specific window.
Use an Airtable view filtered to only show events with a date greater than or equal to today, so past events automatically drop off without any maintenance on the WordPress side.
Resource Library
A table of downloadable resources, guides, templates, case studies, with Name, Type (Single select), Description, and a File URL column. Display the File URL column as a link with a static label like Download. Filter by Type so visitors can browse by resource category.
Team or Vendor Directory
A listing of team members or vendors with Name, Role/Category, Location, and Contact. Search by name, filter by Role. Display a photo URL column as an image thumbnail. This is a lightweight version of the full member directory recipe, for the complete build, see How to Build an Airtable-Powered Member Directory.
How Does Locking Down Editability at Multiple Levels Work?
TableCrafter has two places where edit mode is controlled. Both must have editing disabled for a truly read-only table:
- Table configuration: The Edit toggle in the table settings. If off here, the table is read-only regardless of the shortcode.
- Shortcode parameter:
edit="true"enables editing. If you do not include this parameter (or includeedit="false"), the table is read-only at the shortcode level even if the table config has editing enabled.
For a public-facing read-only table, the safest approach is to disable editing in the table configuration. This means even if someone copies and modifies the shortcode in a page editor, they cannot enable editing.
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.
How Does Performance Considerations for Read-Only Tables Work?
Read-only tables load slightly faster than editable tables because TableCrafter skips loading the inline editing JavaScript bundle — a bundle that is only needed when edit="true" is present in the shortcode. For public pages with high traffic, this can reduce per-visit JavaScript payload by 15-30KB depending on which edit features are configured.
For public pages with meaningful traffic, combine read-only mode with a longer cache TTL (300-3600 seconds) in the data source settings to minimize Airtable API calls. At 60-second TTL with 500 concurrent visitors, TableCrafter would fire 500 independent Airtable API requests per minute — well over the Airtable API's free tier limit of 5 requests per second per base. At 300-second TTL, it fires only 1 API call per 5 minutes and serves all 500 visitors from the WordPress transient cache. For truly static reference data, TTLs of 3600 seconds or longer are appropriate. See How to Keep an Airtable Table in Sync with Your WordPress Site for full caching configuration details.
Frequently Asked Questions
How Does When Read-Only Is the Right Choice Work?
Not every table needs inline editing. Read-only display is the right choice when:
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.