Skip to main content
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.

Tips and troubleshooting

To see the exact API requests and responses from each sync run, use the live debugger. To get notified by Slack, PagerDuty, SMS, or email when a sync fails, set up sync alerts. If you run into an issue this page doesn’t cover, .

Common errors

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.
Last modified on June 21, 2023