How to Build an Event Schedule from Google Sheets in WordPress

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

An event schedule is a perfect fit for Google Sheets + TableCrafter: organizers add events to the spreadsheet, and the WordPress page shows a filtered, sorted, always-current schedule without any CMS involvement. This guide builds a complete schedule with date-range filtering, location dropdown, and speaker search. 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. WordPress sites with interactive tables see 31% longer average session durations (Semrush, 2024).

Step 1: How Do I Structure the Event Sheet?

Create a Google Sheet with these columns in row 1:

Date | Time | Event Name | Location | Speaker | Category | Registration URL

Data entry notes:

Sort the sheet by Date ascending. TC will sort by the configured default, but starting with a sorted sheet makes the preview look correct immediately and makes the sheet easier for organizers to read.

Step 2: How Do I Connect the Sheet to TableCrafter?

For event schedules, whether to use public or private connection depends on whether registration URLs or speaker details are sensitive:

In either case, set cache duration to 60 seconds so last-minute room changes appear on the site quickly.

Test this step while logged in as a user with the target role to confirm the expected behavior. Logged-in admin users always see all columns and all rows regardless of role restrictions, which can mask visibility issues during initial configuration.

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 3: How Do I Map Columns?

In the TC data source column mapping:

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 4: How Do I Create the Table?

  1. Go to TableCrafter → Tables → Add New.
  2. Assign the event schedule data source.
  3. Set Default sort column to Date, direction Ascending. Visitors see upcoming events first.
  4. Enable Date range filter, this adds a from/to date picker above the table. Visitors can filter to a specific weekend or conference day.
  5. Enable Location filter dropdown.
  6. Enable Category filter dropdown.
  7. Enable Search so visitors can find a specific speaker or event name.
  8. Set Rows per page. For a full conference schedule with 50+ sessions, pagination of 20 per page with the filters helps navigation. For a small event with 10 sessions, show all rows.
  9. Save the table. Note the ID (e.g., 7).

Step 5: How Do I Embed the Schedule?

[tablecrafter id="7" filter="true" search="true"]

Add this shortcode to your event page. The date range picker, location dropdown, and category dropdown will render above the table automatically because they were enabled at the table configuration level.

The setting is stored in the WordPress options table under the table's configuration key. It does not modify the original data source and can be changed at any time without affecting the underlying records.

When testing this feature, verify the result while logged in as a user with the target role, not as an admin. WordPress administrators see all rows and columns by default, which means admin accounts will not reflect role-restricted configurations during testing.

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.

How Do I Add Events: The Ongoing Workflow?

Once the table is live, adding a new event requires exactly one action from the organizer:

  1. Open the Google Sheet.
  2. Add a new row with the event details.
  3. Done. The table on the WordPress page reflects the new event within 60 seconds.

No WordPress login. No page editing. No republishing. This is the core value proposition of the Sheets-as-CMS approach for event schedules.

This applies to all users who can view the table, regardless of role. Role-specific overrides can be set per column under the column Visibility settings. The table-level setting acts as the default for any column without a role override.

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 Handling Past Events Work?

TC does not automatically hide past events, but you have two options:

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.

Timezone awareness: Google's TODAY() function uses the timezone set in the spreadsheet's settings (File → Settings). Make sure it matches your event's timezone. In TC, dates display in WordPress's configured timezone (Settings → General → Timezone).

How Does Mobile Display Considerations Work?

Event schedules often have many columns that don't fit on a phone screen. In TC's table settings, use Column priority to designate which columns are hidden first on smaller screens:

Changes take effect immediately after saving. No cache flush or page refresh is required for the new configuration to apply to all shortcode instances of this table.

The shortcode accepts all column and filter settings defined in the table builder as defaults, but you can override individual parameters inline. For example, `[tablecrafter id="1" per_page="25"]` overrides the default rows-per-page setting for this specific embed without changing the saved table configuration. This lets you reuse one table definition across multiple pages with different display requirements.

Frequently Asked Questions

How Do I Connect the Sheet to TableCrafter?

For event schedules, whether to use public or private connection depends on whether registration URLs or speaker details are sensitive:

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.

TableCrafter validates this configuration on save. If validation fails, the admin panel displays a specific error message identifying which field caused the problem. Correct the field value and save again without needing to restart the setup process.

This configuration interacts with any caching or CDN layer active on your WordPress installation. If you use WP Rocket, LiteSpeed Cache, or a CDN such as Cloudflare, flush the page cache after making this change to ensure the updated configuration is reflected in the cached HTML served to visitors. TableCrafter's server-side output is regenerated on the next uncached request.