How to Display a Product Catalog from Google Sheets in WordPress

TableCrafter can render a full product catalog from a Google Sheet, complete with product images, category dropdown filters, and price-range filtering, without WooCommerce or any e-commerce plugin. This is ideal for wholesale catalogs, equipment lists, parts directories, or any product display where purchasing happens off-site or via inquiry. 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 Gutenberg block. WooCommerce processes over 7 billion dollars in orders monthly across all installations (WooCommerce, 2024).
When to Use This Instead of WooCommerce?
This approach is not a WooCommerce replacement for transactional stores. It fits situations like:
- Wholesale catalogs where buyers contact you to order
- Equipment or parts lists with no online checkout
- Service provider directories with pricing
- Internal product reference sheets for sales teams
- Manufacturer catalogs maintained by a product team in Sheets
If you need a cart, checkout, inventory management, and shipping, use WooCommerce (which TC can also pull from as a data source).
Step 1: How Do I Structure the Google Sheet?
A product catalog sheet that maps cleanly to TC columns looks like this:
SKU | Product Name | Category | Subcategory | Price | Stock Status | Description | Image URL | Spec Sheet URL
Column-by-column guidance:
SKU
Plain text, uppercase, consistent format. Visitors may search or filter by SKU. Keep it in the first column so it acts as a natural row identifier.
Product Name
The display name. Keep it under 60 characters so it doesn't wrap badly in the table cell. If you have a long technical name, consider a separate Short Name column for display and the full name for search/filtering.
Category and Subcategory
Separate columns make two-level filtering possible. Category might be Pumps and Subcategory Centrifugal. Using separate columns lets TC build independent dropdown filters for each level. A single concatenated column like Pumps > Centrifugal only allows filtering on the full string.
Use exact, consistent spelling. Run a Sheets data validation rule on both columns using a defined list of valid values, this prevents organizers from accidentally creating a new category through a typo.
Price
Numeric values only, no dollar signs, no commas. Enter 1299.99 not $1,299.99. TC's Number column type and price-range filter require numeric values. TC's column formatter can prepend $ and add comma separators in the display layer.
Stock Status
Text values like In Stock, Low Stock, Out of Stock, Discontinued. TC renders these as color-coded badges. Define the allowed values in a Sheets dropdown (Data → Data validation) to keep values consistent.
Description
Keep this brief, one to two sentences. Long descriptions overflow table cells. TC can show the full description in an expandable row detail panel on click, so the cell itself just needs a teaser.
Image URL
Full HTTPS URL to the product image. The image must be publicly accessible, Sheets cannot host images for external rendering. Options:
- Upload images to your WordPress media library and use the direct image URLs
- Use a CDN or image hosting service
- Use Google Drive public image links (File → Share → Anyone with the link, then use the direct image URL format:
https://drive.google.com/uc?id=FILE_ID)
Spec Sheet URL
Link to a PDF or product page. Set the TC column type to URL. TC renders this as a clickable link.
Step 2: How Do I Connect the Sheet?
Product catalogs typically contain pricing and inventory information you don't want scraped as raw CSV. Use the private API method with an API key restricted to the Sheets API and your domain.
Set cache duration to 300 seconds (5 minutes). Product catalogs change less frequently than event schedules or leaderboards, and a longer cache reduces API calls and speeds up page loads.
Step 3: How Do I Map Columns in TableCrafter?
In the data source column mapping interface:
- SKU, Type: Text, Sortable: yes, Searchable: yes
- Product Name, Type: Text, Sortable: yes, Searchable: yes
- Category, Type: Text, Filterable: yes (TC builds a dropdown of all distinct category values)
- Subcategory, Type: Text, Filterable: yes
- Price, Type: Number, Sortable: yes, Price Range Filter: enabled, Format: Currency (adds $ prefix and 2 decimal places in display)
- Stock Status, Type: Text, Filterable: yes, Badge mode: enabled
- Description, Type: Text, Visible in row: yes, Show in expandable detail: yes (hides from main table, shows when row is clicked)
- Image URL, Type: Image URL. This tells TC to render the cell as an
<img>tag rather than displaying the URL string. Set max image width to 80px for table display. - Spec Sheet URL, Type: URL, Link label:
View Specs
Step 4: How Do I Configure Badge Colors for Stock Status?
In the Stock Status column editor, set badge rules:
In Stock→ green backgroundLow Stock→ amber/yellow backgroundOut of Stock→ red backgroundDiscontinued→ gray background, strikethrough text
Step 5: How Do I Create the Table?
- Go to TableCrafter → Tables → Add New.
- Assign the product catalog data source.
- Set Default sort column to Product Name ascending, or leave unsorted to preserve the sheet's order.
- Enable Category filter, Subcategory filter, Price range filter, and Stock Status filter.
- Enable Search (searches across SKU, Product Name, and Description).
- Enable Export if your sales team needs to download the filtered results as CSV.
- Set Rows per page to 25 or 50 for large catalogs.
- Enable Expandable row detail to show Description and full-size image on row click.
- Save the table. Note the ID (e.g., 8).
Step 6: How Do I Embed the Catalog?
Go to the WordPress page where you want the product catalog to appear, add a Custom HTML block or Shortcode block, and paste the shortcode TableCrafter generated after you configured the table:
[tablecrafter id="8" filter="true" search="true" export="true"]
The filter="true" attribute adds per-column dropdown filters so visitors can narrow the catalog by category, brand, or any other column with repeating values. The search="true" attribute adds a search box that runs across all visible columns simultaneously. The export="true" attribute adds a CSV download button, useful if buyers want to save a filtered product list. After publishing, view the page while logged out to confirm the table renders for public visitors. If the table appears empty or shows a connection error, return to the TableCrafter admin, verify the Google Sheet URL is published and accessible, and re-save the table configuration.
How Does Maintaining the Catalog Work?
The product team workflow is entirely in Google Sheets:
- Add a product: Add a row. It appears on the site within 5 minutes.
- Update a price: Edit the Price cell. Live on the site within 5 minutes.
- Mark out of stock: Change Stock Status to
Out of Stock. The badge turns red on the site. - Remove a product: Delete the row or change Status to
Discontinued.
No one needs WordPress access for routine catalog maintenance. This separation of content management from site management is the key operational benefit of the Sheets-as-catalog approach.
Frequently Asked Questions
How Does When to Use This Instead of WooCommerce Work?
This approach is not a WooCommerce replacement for transactional stores. It fits situations like:
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.