How to Map Notion Properties to TableCrafter Columns

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

Notion supports more than a dozen property types, and each one is structured differently in the Notion API response. TableCrafter normalizes, "flattens", every property to a clean table value: titles become text, selects become badges, multi-selects become multiple badges, dates respect your format, and complex nested values are reduced to readable strings. This guide covers exactly how each Notion property type maps to a TableCrafter column. 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. 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. Auto-refresh tables reduce page reload frequency by 89% in live-data dashboard deployments (Kinsta performance benchmarks, 2024).

How Does Property Mapping Work?

When TableCrafter queries your Notion database, the API returns each row as a set of properties, where every property is a typed object, not a plain value. A Notion select, for example, comes back as a nested object containing the option's name and color, not just the text. TableCrafter's payload normalizer walks each property, reads its type, and reduces it to a single scalar (or a comma-joined string for multi-value types) that a table cell can display.

Each property name in your database becomes a column key. You can then toggle columns on or off, relabel them, set their display type, width, and sort/filter behavior in the Columns configuration panel.

The normalizer never silently drops data. Any property type it does not have a dedicated rule for is JSON-encoded into the cell rather than discarded, so you always see something and can adjust the column. 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.

How Does Three Columns TableCrafter Adds Automatically Work?

Alongside your database properties, TableCrafter exposes three metadata values from every Notion row. You can surface or hide each like any other column:

How Does Property Type Reference Work?

Title

Notion type: title

Every Notion database has exactly one title property. TableCrafter concatenates the title's rich-text segments into a single plain-text string. This is your primary column, names, page titles, item labels.

Rich Text

Notion type: rich_text

TableCrafter concatenates all rich-text segments into plain text. Inline formatting (bold, italics, links, colors) is flattened away, the cell shows the readable text only. For long notes, set a column width or truncation so the table stays scannable.

Number

Notion type: number

The numeric value is passed through as a number, so sorting is numeric (not lexicographic). You can add a currency or unit prefix/suffix in the column settings.

Select

Notion type: select

TableCrafter reads the selected option's name and renders it as a badge-style label. For filtering, it builds a dropdown of all distinct values in the column.

Status

Notion type: status

Notion's Status property is distinct from Select but maps the same way: TableCrafter reads the status option's name and renders a badge. Status columns are ideal for roadmaps and task lists where visitors want to filter by stage.

Multi-Select

Notion type: multi_select

A multi-select returns an array of options. TableCrafter joins the option names into a comma-separated value, which renders as multiple badges in the cell. The filter is a multi-select dropdown, a row matches if it contains any of the chosen values (OR logic).

Date

Notion type: date

Notion returns dates in ISO 8601. TableCrafter formats them using your configured date format (for example MM/DD/YYYY). Sorting is chronological and the filter is a date range picker. If the Notion property is a date range (it has both a start and an end), TableCrafter renders it as start → end in a single cell.

Checkbox

Notion type: checkbox

A checkbox maps to a boolean and renders as a checkmark (true) or a dash (false).

Email, URL, and Phone

Notion types: email, url, phone_number

Each passes through as a string. Set the column type so they render as actionable links: email as a mailto: link, phone as a tel: link for click-to-call on mobile, and URL as a clickable hyperlink (you can override the link text with a static label).

People

Notion type: people

A People property returns an array of Notion users. TableCrafter resolves each to the user's display name and joins them with commas. If a user object has no name available (some integrations return only IDs), it falls back to the user ID for that entry.

Files & Media

Notion type: files

Notion file properties return an array of attachment objects. TableCrafter joins the file names into a comma-separated string. It surfaces the filenames for reference rather than rendering inline image thumbnails.

If you need clickable thumbnails or downloads, store a public file URL in a separate URL property and map that column as a link instead, the files property surfaces names, not URLs.

Relation

Notion type: relation

A relation property links to rows in another Notion database and returns an array of related page IDs. TableCrafter joins those IDs with commas. Unlike a spreadsheet lookup, it does not automatically resolve each related page to its title.

💡

Tip: To display human-readable related values instead of raw IDs, add a Rollup in Notion that pulls the related row's title or a key field into the current database, then map that property as a normal text column.

Created Time and Last Edited Time

Notion types: created_time, last_edited_time

These system timestamp properties pass through as ISO 8601 strings. Map them as Date columns to apply your configured date format and enable chronological sorting. (These are the property-level versions; the row-level notion_created_time / notion_last_edited_time values described earlier are always available too.)

Formula, Rollup, and Other Computed Types

Notion types: formula, rollup, and any newer or less common type

For property types without a dedicated rule, TableCrafter falls back to a JSON encoding of the property object so the data is never lost. The cell will show the raw structured value rather than a clean scalar.

If you plan to display a Formula or Rollup column, the cleanest approach today is to mirror its result into a simple property type. For example, point a Notion formula at a number or text result and surface that, or use a Rollup configured to show a single value, then map the column normally. This avoids the raw JSON fallback.

How Does Overriding the Auto-Detected Column Type Work?

TableCrafter pre-configures a sensible column type for each property, but you can override it in the Columns panel. Common overrides:

What Are the Next Steps?

Frequently Asked Questions

How Does Property Mapping Work?

When TableCrafter queries your Notion database, the API returns each row as a set of properties, where every property is a typed object, not a plain value. A Notion select, for example, comes back as a nested object containing the option's name and color, not just the text. TableCrafter's payload normalizer walks each property, reads its type, and reduces it to a single scalar (or a comma-joined

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.