How to Connect a Public Google Sheet to TableCrafter

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

The fastest way to display Google Sheets data on your WordPress site is to publish the sheet as a public CSV and point TableCrafter at that URL. No API key, no OAuth flow, no server-side credentials. This guide walks every click from an empty sheet to a live embedded table. 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.

What "Public" Means Here?

Google Sheets is used by over 1 billion people worldwide (Google, 2023). For WordPress site owners who already manage data in Sheets, TableCrafter eliminates the manual CSV-download-then-upload loop entirely.

Google Sheets has two separate sharing concepts that are easy to confuse:

You need the second one. Turning on the share link alone will not work.

Data sensitivity check: Once a sheet is published to the web, any server or script anywhere can read it without authentication. Never put names, emails, phone numbers, pricing you want to hide from competitors, or any personal data in a publicly published sheet.

Step 1: How Do I Prepare Your Google Sheet?

TableCrafter reads the first row as column headers. A few rules make mapping smoother:

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.

Step 2: How Do I Publish the Sheet as CSV?

  1. Open your Google Sheet.
  2. Click File → Share → Publish to web.
  3. In the first dropdown, select the specific tab you want to publish (or "Entire document" if you only have one tab).
  4. In the second dropdown, change "Web page" to Comma-separated values (.csv).
  5. Click Publish, then confirm in the dialog.
  6. Copy the URL that appears. It will look like:
    https://docs.google.com/spreadsheets/d/e/2PACX-1vABCDEF.../pub?gid=0&single=true&output=csv
Test the URL first: Paste it directly into a browser tab or run curl "YOUR_URL" | head -5 in a terminal. You should see raw CSV with your header row on line 1. If you see an HTML page instead, you selected the wrong output format.

Step 3: How Do I Add a Google Sheets Source in TableCrafter?

  1. In your WordPress admin, go to TableCrafter → Data Sources → Add New.
  2. Choose Google Sheets (Public CSV) as the source type.
  3. Paste your published CSV URL into the Sheet URL field.
  4. Set Cache duration. The default is 60 seconds, meaning the table refreshes from Google every minute. For slowly-changing data like a product list, 300 seconds (5 minutes) reduces unnecessary fetches.
  5. Click Save and Fetch Preview. TC pulls a sample of your rows and displays them below.

Step 4: How Do I Map Your Columns?

After the preview loads, TC shows each detected column with a mapping row. For each column:

Save the data source. Give it a memorable name like Product Catalog, Public Sheet.

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 5: How Do I Create a Table and Embed It?

  1. Go to TableCrafter → Tables → Add New.
  2. Under Data Source, select the public Google Sheets source you created in Step 2 from the dropdown.
  3. In the column selector (populated automatically from your sheet's header row), choose which columns to display, set display types (Text, Number, Date), and drag to reorder. Toggle off any columns that should not be visible to visitors.
  4. Configure display options: set rows per page (10, 25, 50, or 100), enable the search bar if you want full-text search across visible columns, and enable the export button if visitors should be able to download the data.
  5. Save the table. TableCrafter assigns it a numeric ID visible in the admin table list (e.g., 3) and generates a shortcode.
  6. Add the shortcode to any WordPress page or post using a Shortcode block:
[tablecrafter id="3"]

To enable search, dropdown column filters, and CSV export together in one shortcode:

[tablecrafter id="3" filter="true" search="true" export="true"]

After publishing the page, load it while logged out to confirm the table renders correctly for non-admin visitors. The Google Sheets data should appear, paginated if the row count exceeds your per-page setting, and filterable if you enabled filter="true".

How Does Handling Multiple Tabs Work?

Each tab in a Google Sheet gets a separate gid (grid ID) parameter in the published URL. The first tab in a new spreadsheet always has gid=0, but subsequent tabs or renamed tabs get auto-assigned numeric IDs. To find a specific tab's gid, click the tab in Google Sheets and look at the URL in your browser: ...spreadsheets/d/SHEET_ID/edit#gid=1234567890. Replace the gid=0 in your published CSV URL with that number to target a specific tab.

This means you can have one Google Sheet with multiple tabs — Products, Inventory, Pricing, Team Members — and create a separate TableCrafter table for each tab by using different gid values in each data source configuration. All four tables read from the same spreadsheet document, but each reads a different sheet. When you update data in the Pricing tab, only the pricing table refreshes its data — the Products and Inventory tables are unaffected. You do not need to create separate Google Sheets documents for separate tables.

Note: the gid parameter is only required when targeting a tab other than the first one. If your spreadsheet has only one tab, you can use the default gid=0 or omit the parameter entirely from the CSV published URL.

How Does Limitations of the Public CSV Approach Work?

No write-back

TC can read the sheet but cannot push edits back to Google. Inline editing in TC saves to TC's own cache only.

60-second minimum latency

Google's CSV export may lag behind actual sheet changes by up to 60 seconds independent of TC's cache setting.

Row limit

The CSV export reliably handles up to ~10,000 rows. Larger sheets may truncate. Use the private API method for big datasets.

No formula results

Cells that display formula results export correctly, but cells containing #REF! or errors export as blank.

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.

How Does Updating Data Work?

Edit the Google Sheet normally. Within the cache duration you set in TC (default 60 seconds), the live table on your site will reflect the change. No need to touch WordPress at all. This is the primary advantage of the public CSV approach: your editorial team can maintain the sheet directly without any WordPress access.

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.

Need private sheets? If your data cannot be public, see How to Connect a Private Google Sheet to TableCrafter (API Key) for the full OAuth and GCP walkthrough.

Frequently Asked Questions

How Does What "Public" Means Here Work?

Google Sheets has two separate sharing concepts that are easy to confuse:

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.