How to Connect a Notion Database to TableCrafter

TableCrafter can pull data directly from any Notion database and render it as a filterable, sortable table on your WordPress site. This guide walks through every step: creating an internal integration, sharing your database with it, locating your database ID, configuring the TableCrafter data source, mapping your Notion properties to columns, and placing the shortcode. 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. Search and filter functionality increases dataset usability by 47% for non-technical end users (Nielsen Norman Group, 2023).
What You Need Before You Start?
Before touching TableCrafter, gather two things from Notion:
- An internal integration token (Notion calls this an "internal integration secret"; it starts with
secret_orntn_) - Your database ID (a 32-character hex string from the database URL)
You will also need TableCrafter installed and activated on your WordPress site. Notion is an advanced data source: you configure it in the full table builder, not the quick wizard. The Notion source connects through the official Notion API (api.notion.com/v1).
Step 1: How Do I Create a Notion Internal Integration?
Notion uses integrations rather than a single account-wide API key. An internal integration is scoped to your own workspace and is the right choice for connecting TableCrafter.
- Go to notion.so/my-integrations while logged into your Notion account.
- Click New integration.
- Give it a recognizable name, such as
TableCrafter WordPress, and associate it with the workspace that holds your database. - Set the integration type to Internal.
- Under Capabilities, enable Read content. If you plan to use inline editing that writes back to Notion, also enable Update content.
- Submit, then open the integration and copy the Internal Integration Secret. This is the token TableCrafter needs.
Do not share this token. It grants API access to every page and database you connect it to. TableCrafter stores it encrypted at rest, but keep your own copy in a password manager, not in plain text.
Step 2: How Do I Share Your Database with the Integration?
This step is the one people most often miss. Creating the integration is not enough, Notion will return an empty result or a permission error until you explicitly grant the integration access to the specific database.
- Open the Notion database you want to display (open it as a full page, not a linked view).
- Click the ••• menu in the top-right corner.
- Choose Connections (older Notion builds label this Add connections).
- Find and select your integration by name (for example
TableCrafter WordPress). - Confirm the connection.
If your database lives inside a parent page, sharing the parent page with the integration also grants access to databases nested under it. Sharing at the database level is the most precise option.
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.
Step 3: How Do I Find Your Database ID?
The database ID is embedded in the URL when you have the database open in Notion.
- Open your Notion database as a full page in the browser.
- Look at the URL. It follows the pattern:
https://www.notion.so/workspace/DATABASE_ID?v=VIEW_ID - The database ID is the 32-character hex string immediately before the
?v=query parameter. It may appear with or without dashes, TableCrafter accepts either form. - Copy that 32-character string. Do not copy the
v=value; that is a view ID, which TableCrafter does not use.
Tip: If your database opens inside another page, the URL may show the parent page slug. Use the database's own full-page URL (open it via "Open as page") to be sure you are reading the database ID and not a page ID.
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 4: How Do I Configure the Notion Source in TableCrafter?
Now open the TableCrafter admin panel in WordPress.
- Navigate to TableCrafter → Add New Table and open the full table builder.
- Under Data Source, select Notion.
- Paste your internal integration token into the Notion API Token field. It is a password field, the value is stored encrypted and shown as dots once saved.
- Enter your Database ID (the 32-character hex string, dashes optional).
- Save, then run the connection test / preview.
A successful connection returns the first rows of your database and shows the property names TableCrafter detected. Under the hood, TableCrafter calls POST https://api.notion.com/v1/databases/{database_id}/query with your token as a Bearer credential and the Notion-Version: 2022-06-28 header.
Once a token is saved, the field shows a masked placeholder. Leave it blank on future edits to keep the existing token; only type a new value if you are rotating credentials.
Step 5: How Do I Map Notion Properties to Table Columns?
After a successful connection, TableCrafter reads every property in your Notion database and pre-configures a column for each. You then decide which columns appear and how they render.
- In the Columns section, toggle each Notion property on or off.
- Set a column label for each included property. This is the heading visitors see, and it can differ from the Notion property name.
- Confirm or override the column type. TableCrafter flattens each Notion property type to a sensible value, title and rich text become plain text, select and status become badges, multi-select becomes multiple badges, and dates respect your configured format.
- Set column width, sort order, and whether the column is filterable.
Notion property types behave differently from spreadsheet columns. For a complete breakdown of how each type (title, rich text, select, multi-select, date, relation, people, files, and more) is rendered, see How to Map Notion Properties to TableCrafter Columns.
Step 6: How Do I Configure Display and Behavior Settings?
With columns mapped, configure the table behavior before publishing.
- Rows per page: Set how many records appear per page. Default is 25.
- Search: Enable the live search bar to let visitors search across all text columns.
- Filter bar: Enable column-level dropdown filters for select, status, and multi-select properties.
- Sort: Enable clickable column headers for sorting.
- Export: Enable a CSV export button if visitors should be able to download data.
- Refresh: TableCrafter caches the Notion response for a configurable interval to avoid hitting the API on every page load.
Save the table configuration. TableCrafter assigns it a numeric ID, visible in the admin list.
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.
Step 7: How Do I Place the Shortcode?
TableCrafter uses a simple shortcode to embed the table anywhere on your WordPress site: a page, post, or widget area.
[tablecrafter id="1"]
Replace 1 with the actual table ID assigned by TableCrafter. For a table with search, filters, and export enabled at the shortcode level:
[tablecrafter id="1" filter="true" search="true" export="true"]
Paste the shortcode into the WordPress block editor using a Shortcode block, or directly into a Classic Editor page. The table renders on page load and fetches data from Notion through the cache layer.
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.
How Does Troubleshooting Common Connection Issues Work?
401 Unauthorized from the Notion API
The token is wrong, expired, or was regenerated. Re-copy the Internal Integration Secret from notion.so/my-integrations and paste it into the Notion API Token field again.
No Rows Returned (but the connection "succeeds")
This almost always means the database was never shared with the integration. Go back to Step 2: open the database, use the ••• menu → Connections, and add your integration. Without this, Notion treats the database as invisible to the token.
object_not_found Error
The database ID is incorrect, or you copied a page ID or view ID instead of the database ID. Re-check Step 3 and copy the 32-character string immediately before ?v=.
Stale Data After Editing in Notion
TableCrafter caches Notion responses briefly to reduce API calls. Force a fresh fetch by reloading after the cache interval, or shorten the refresh TTL in the data source settings. See How to Display a Notion Database as a Live WordPress Table for the full caching and refresh behavior.
Tip: If you manage several Notion databases, create a separate TableCrafter table for each, each with its own token and database ID, and embed them on different WordPress pages using their respective shortcode IDs.
What Are the Next Steps?
Once your Notion data is live on your WordPress site, explore the rest of the TableCrafter Notion documentation:
- How to Map Notion Properties to TableCrafter Columns, detailed property type behavior
- How to Display a Notion Database as a Live WordPress Table, read-only display, filtering, and refresh
- How to Connect Airtable to TableCrafter, the same workflow for an Airtable base
Frequently Asked Questions
How Do I Create a Notion Internal Integration?
Notion uses integrations rather than a single account-wide API key. An internal integration is scoped to your own workspace and is the right choice for connecting TableCrafter.
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 including Notion.