Back to Blog
n8nNotionautomationtutorialdatabase

How to Sync Notion Databases with n8n: Complete Tutorial

n8nautomation TeamApril 22, 2026
TL;DR: You can automatically sync Notion databases with n8n by connecting the Notion node to triggers and other apps. This tutorial walks you through authentication, creating database entries, updating records, and building real-world sync workflows between Notion and your favorite tools.

If you're using Notion as your central workspace, keeping your databases in sync with other tools can save hours of manual data entry every week. With n8n, you can automatically create, update, and query Notion database entries based on triggers from Google Sheets, Airtable, forms, CRMs, or any of 400+ integrations.

This tutorial shows you exactly how to sync Notion databases with n8n workflows, from initial setup to advanced filtering and two-way sync patterns. Whether you're managing a project tracker, CRM, content calendar, or knowledge base, you'll learn how to keep Notion updated automatically.

Why Sync Notion Databases with n8n

Notion databases are powerful, but they don't natively connect to most external tools. Manual copying between systems wastes time and introduces errors. Here's what n8n automation unlocks:

  • Bidirectional sync: Keep Notion in sync with Airtable, Google Sheets, or your CRM without manual updates.
  • Automated data entry: Create Notion database entries from form submissions, emails, or webhook events.
  • Status updates: Automatically update Notion task status when something changes in Jira, Asana, or Linear.
  • Aggregation: Pull data from multiple sources into a single Notion database for reporting.
  • Notifications: Query Notion databases and send alerts to Slack or email when records match specific criteria.

Unlike Zapier's limited Notion actions, n8n gives you full access to the Notion API with conditional logic, loops, and custom filtering built in. You can run these workflows on n8nautomation.cloud starting at $15/month with automatic backups and zero server management.

How to Connect Notion to n8n

Before you can sync databases, you need to authenticate n8n with your Notion workspace. Notion uses OAuth2 or internal integrations for API access.

Step 1: Create a Notion Integration

  1. Go to https://www.notion.so/my-integrations and click New integration.
  2. Give it a name (e.g., "n8n Automation") and select your workspace.
  3. Set capabilities:
    • Read content: Enable to query databases
    • Update content: Enable to modify entries
    • Insert content: Enable to create new entries
  4. Copy the Internal Integration Token that appears after creation.

Step 2: Share Your Database with the Integration

  1. Open the Notion database you want to automate.
  2. Click the ••• menu in the top right and select Connections.
  3. Search for your integration name and click to connect it.
  4. The integration now has access to read and write this database.

Step 3: Add Notion Credentials in n8n

  1. In your n8n workflow, add a Notion node.
  2. Click Create New Credential under the Credential dropdown.
  3. Select Notion API as the credential type.
  4. Paste your Internal Integration Token from Step 1.
  5. Click Save and test the connection by fetching a database.

Tip: You can reuse the same Notion credential across all workflows in your n8n instance. If you're managing multiple client workspaces, create separate credentials for each Notion workspace.

Create Database Entries Automatically

The most common use case is creating new Notion database entries when something happens in another app. Here's how to set it up:

Basic Workflow Structure

  1. Add a trigger node (Webhook, Schedule, or another app trigger).
  2. Add a Notion node and set:
    • Resource: Database Page
    • Operation: Create
  3. Select your database from the Database ID dropdown (it will auto-populate with connected databases).
  4. Map fields from your trigger data to Notion properties.

Field Mapping Example

Let's say you're creating a task database entry from a form submission:

  • Title property: Use {{ $json.taskName }} from form data
  • Status (Select): Set to "To Do" or map dynamically
  • Assignee (Person): Use email from form data
  • Due Date: Map {{ $json.dueDate }} with Date format
  • Priority (Multi-select): Add tags like "High", "Urgent"

Notion supports these property types in n8n:

  • Title, Rich Text, Number, Checkbox
  • Select, Multi-select
  • Date, Person, Email, Phone, URL
  • Relation (link to other databases)
  • Formula, Rollup (read-only, can't be set via API)

Example: Create Notion Entry from Google Form

  1. Google Forms Trigger: Configure to fire on new response.
  2. Notion Node: Map form fields to database properties:
    • Title: {{ $json.name }}
    • Email: {{ $json.email }}
    • Status: "New Lead"
    • Source: "Google Form"
  3. Activate the workflow. Every form submission creates a Notion entry.

Update Existing Notion Database Records

Updating records is essential for keeping status, assignees, or other fields in sync as things change in external systems.

How to Update by Page ID

  1. Add a Notion node with:
    • Resource: Database Page
    • Operation: Update
  2. Provide the Page ID (the unique ID of the database entry).
  3. Set Properties to Update by selecting fields and mapping new values.
Note: You must have the Notion page ID to update a record. If you don't have it, query the database first (see next section) to find the matching entry, then pass its ID to the update node.

Example: Update Notion Task When Jira Issue Changes

  1. Jira Trigger: Fire on issue updated webhook.
  2. Notion Query: Search your task database for the entry where Jira ID equals {{ $json.issue.id }}.
  3. Notion Update: Use the page ID from query results and update:
    • Status: {{ $json.issue.fields.status.name }}
    • Assignee: {{ $json.issue.fields.assignee.emailAddress }}

This pattern works for any two-way sync: find the Notion entry by a unique identifier (email, external ID, etc.), then update its properties based on changes in the other system.

Query and Filter Notion Databases

Querying Notion databases lets you find specific entries, check for duplicates, or pull data for reports and notifications.

Basic Query Setup

  1. Add a Notion node with:
    • Resource: Database Page
    • Operation: Get All
  2. Select your Database ID.
  3. Add filters under Options → Filter.

Filter Examples

Notion supports complex filtering with AND/OR logic:

  • Find incomplete tasks: Status (Select) does not equal "Done"
  • Find overdue items: Due Date (Date) is before today
  • Find entries by email: Email (Email) equals "user@example.com"
  • Multi-condition: Status = "In Progress" AND Assignee contains "John"

Example: Daily Slack Digest of Overdue Tasks

  1. Schedule Trigger: Run every day at 9 AM.
  2. Notion Query: Get all entries where:
    • Due Date is before {{ $now }}
    • Status is not "Done" or "Archived"
  3. Code Node: Format results into a message:
    • Loop through entries and build a list
    • Include task name, assignee, and days overdue
  4. Slack Node: Send the formatted message to a channel.

This workflow ensures your team never misses overdue tasks tracked in Notion.

5 Real Notion Database Sync Workflows

Here are production-ready workflows you can build today to sync Notion databases with other tools.

1. Sync Airtable to Notion (One-Way)

  • Trigger: Airtable Trigger (new or updated record)
  • Notion Query: Check if entry already exists by unique ID
  • IF Node: If exists → update, else → create
  • Notion Create/Update: Sync all mapped fields

Perfect for teams that use Airtable for input but want Notion as the final database of record.

2. Google Sheets to Notion Database Sync

  • Schedule Trigger: Run every 15 minutes
  • Google Sheets Node: Read all rows from sheet
  • Loop Over Items: For each row:
    • Query Notion by unique identifier (e.g., Order ID)
    • If not found → create entry
    • If found → update entry with latest data

This keeps Notion automatically synced with a Google Sheet used by non-technical team members.

3. CRM to Notion: Auto-Create Deals

  • HubSpot/Pipedrive Trigger: New deal created
  • Notion Create: Add deal to Notion database with:
    • Company name, deal value, stage
    • Assigned sales rep (Person property)
    • Link back to CRM (URL property)
  • Slack Node: Notify team channel

Sales teams can track deals in Notion while keeping the source of truth in their CRM.

4. Email to Notion Task Database

  • Email Trigger (IMAP): Monitor inbox for emails with specific label
  • Code Node: Parse email subject/body for task details
  • Notion Create: Create task entry with:
    • Title from subject line
    • Description from email body
    • Sender as assignee
    • Due date extracted via regex or AI

Turn emails into actionable Notion tasks without manual copying.

5. Two-Way Sync: Notion ↔ Asana

  • Workflow A: Asana Trigger → Query Notion → Update or Create
    • When Asana task changes, sync to Notion
  • Workflow B: Schedule (check Notion every 5 min) → Query Notion for recently modified → Update Asana
    • When Notion entry changes, sync back to Asana

Bidirectional sync requires careful conflict handling. Use timestamps to determine the latest change and add a "Last Synced" property to avoid infinite loops.

Tip: All these workflows run reliably on n8nautomation.cloud with automatic backups and 24/7 uptime monitoring. No server management required.

Common Issues and Solutions

Here are the most common problems when syncing Notion databases with n8n and how to fix them:

"Database not found" Error

  • Cause: The Notion integration doesn't have access to the database.
  • Fix: Go to Notion → Database → ••• → Connections → Add your integration.

"Property does not exist" Error

  • Cause: You're trying to set a property that doesn't exist in the Notion database.
  • Fix: Check property names in Notion (case-sensitive) and ensure they match exactly in n8n.

Duplicate Entries Being Created

  • Cause: No duplicate check before creating entries.
  • Fix: Always query Notion first by a unique identifier (email, external ID, etc.), then use an IF node to decide whether to create or update.

Date/Time Format Errors

  • Cause: Notion expects ISO 8601 date format.
  • Fix: Use n8n's {{ $now.toISO() }} or convert your date with the Date & Time node before passing to Notion.

Relation Properties Not Working

  • Cause: Relation properties require the page ID of the related entry, not a title or name.
  • Fix: Query the related database first to get the page ID, then pass it to the relation property.

Rate Limiting (429 Errors)

  • Cause: Notion API has rate limits (3 requests per second).
  • Fix: Add a Wait node between batch operations, or use the Split In Batches node with a 350ms delay between batches.

Workflow Runs But Nothing Updates

  • Cause: The integration has "Read content" permission but not "Update content" or "Insert content".
  • Fix: Go to your Notion integration settings and enable all necessary capabilities, then reconnect in n8n.

Start Syncing Notion Databases Today

With n8n, you can automatically sync Notion databases with hundreds of tools without writing code. Whether you need one-way data imports, two-way sync, or scheduled updates, n8n gives you the flexibility to build exactly what you need.

The workflows in this guide work with n8n Community Edition, which includes full Notion API access and all 400+ integrations. You can run them on n8nautomation.cloud starting at $15/month with automatic backups, zero server management, and instant setup.

Start with a simple create or update workflow, then expand to multi-step sync patterns as your automation needs grow. Your Notion databases will stay perfectly in sync with the rest of your tech stack—no manual copying required.

Ready to automate with n8n?

Get affordable managed n8n hosting with 24/7 support.