Search documentation...

ChangelogBook a demoSign up


Power up your Notion databases with data from your data warehouse

Sync TypeDescriptionSupported Sync Modes
Database rowsUpsert or update rows in a Notion databaseUpsert, Update

For more information about sync modes, refer to the sync modes docs.

Connect to Notion

Go to the Destinations overview page and click the Add destination button. Select Notion and click Continue. You can then authenticate Hightouch to Notion by logging into Notion.

Next, select which Notion pages you want to give Hightouch access to.

Be sure to give access to pages that include databases you want to sync to. If the page containing the database within Notion has restricted access, you won't be able to configure a sync to it.

Once successful, you will be redirected back to Hightouch to enter a descriptive name for your destination and complete setup.

Sync configuration

Once you've set up your Notion destination and have a model to pull data from, you can set up your sync configuration to begin syncing data. Go to the Syncs overview page and click the Add sync button to begin. Then, select the relevant model and the Notion destination you want to sync to.

Database selection

After selecting your desired sync mode, select the Notion database you want to sync data to.

Record matching

To match rows from your model to database rows in Notion, you need to select a model column and corresponding Notion field. It's best to select a unique identifier for record matching, otherwise the intended records may not be updated properly. Refer to the record matching docs for more information.

Record matching in the Hightouch UI

The Notion field you select for record matching must be a text field.

Field mapping

You can sync model columns to Notion's database properties. Hightouch automatically detects existing database properties from your Notion databases.

Field mapping in the Hightouch UI

Supported Notion properties

Hightouch supports the following Notion database properties when field mapping.

  • Checkbox
  • Date: Hightouch supports a single date, and not a date range
  • Email
  • Multi Select
  • Number: If a number field is passed an invalid number, Hightouch attempts to convert it to a number. If the conversion result is invalid, the sync errors.
  • Phone
  • Rich Text
  • Select
  • Title
  • URL

To learn more about Notion's available properties, please refer to Notion's docs.

Delete behavior

The delete behavior you select dictates what to do when a row no longer appears in your model's query results. You have the following options:

Delete is only available on Upsert mode and Clear is available for Upsert and Update mode.

Do nothingKeep the row in the database with all its synced fields
ClearClear all the mapped fields, but keep the row in the database
DeleteDelete the synced row in the database

Tips and troubleshooting

Common errors

If you encounter an error or question not listed below and need assistance, don't hesitate to . We're here to help.

Database not appearing in dropdown

If the page containing the database within Notion has restricted access, the database won't appear in the dropdown menu of the sync configuration, even if Hightouch is explicitly granted access during authentication. You may also receive a 404 - Could not find database with ID: {...} error in the record matching section of your sync configuration, or when attempting to sync to Notion.

To fix this, go to the Destinations overview page and select your Notion destination. Click Log in to Notion and add access to any required pages.

Notion OAuth in the Hightouch UI

Then, return to your sync configuration or create a new one from the Syncs overview page. You may need to click the refresh button to see the new database.

Refreshing Notion databses in the Hightouch UI

Column not appearing for record matching

Hightouch only supports record matching on text fields in Notion. Convert the field type to text in Notion, or create a new text field.

Text fields in Notion

400 - body failed validation {...} should be defined, instead was undefined

This error occurs if you try to sync null values to Select or Multi-select fields in Notion. To resolve this, check the Don't sync null values option in the template mapper or remove rows containing null values from your model's query results. You need to do this option for all field mappings to Select or Multi-select fields in Notion, if you believe the mapped model columns might contain null values.

400 - body failed validation {...} should be a string, instead was {...}

This error occurs if you try to sync non-text values to a Text field in Notion. To resolve this, cast the relevant column or columns from your model to a String type.

Live debugger

Hightouch provides complete visibility into the API calls made during each of your sync runs. We recommend reading our article on debugging tips and tricks to learn more.

Sync alerts

Hightouch can alert you of sync issues via Slack, PagerDuty, SMS, or email. For details, please visit our article on alerting.

Ready to get started?

Jump right in or a book a demo. Your first destination is always free.

Book a demoSign upBook a demo

Need help?

Our team is relentlessly focused on your success. Don't hesitate to reach out!

Feature requests?

We'd love to hear your suggestions for integrations and other features.

Last updated: Jun 21, 2023

On this page

Connect to NotionSync configurationDatabase selectionRecord matchingField mappingTips and troubleshootingCommon errorsLive debuggerSync alerts

Was this page helpful?