Notion/Airtable/Google Sheets Integration
Ch11 Notion / Airtable / Google Sheets Integration
Notion, Airtable, and Google Sheets are the backbone of knowledge management, no-code databases, and collaborative reporting in modern teams. n8n provides native nodes for all three, enabling page creation, record CRUD, view filtering, and bulk writes. This chapter covers each node's core features and builds two complete projects: auto-capturing CRM leads into Notion and syncing form submissions to Google Sheets with Feishu notifications.
Notion Node: Pages and Database Operations
Authenticate with a Notion Internal Integration Token: create an integration at notion.so/my-integrations, grant it content permissions, then connect it to the target database from the "..." menu. In n8n, create a "Notion API" credential with this token.
Key Operations
- Create Database Page: Map upstream data to Notion property types (Title, Rich Text, Select, Date, Number, Checkbox, URL)
- Get Many: Query database records with Filter (and/or logic) and Sort configurations
- Update Page: Update specific properties by page ID — combine with Loop Over Items to batch-update multiple records
Finding the Database ID: Open the database in your browser — the 32-character hex string in the URL is the Database ID. Or click "Search" in the n8n node's Database field to auto-discover databases shared with your integration.
Airtable Node: Flexible Low-Code Database
Authenticate with a Personal Access Token (PAT) from airtable.com/create/tokens. Configure the Base ID (from the Base URL, e.g. appXXXXXXXX) and Table Name.
Operations:
- List Records: Supports view filter, formula filter (Airtable formula language), sorting, and pagination
- Create Record: Pass a field-value object; returns the complete record with Airtable-generated ID
- Update Record: PATCH (update specified fields) or PUT (replace entire record) by record ID
- Delete Record: Delete by record ID
// Filter this month's leads with status "Following Up"
AND(
IS_SAME({Created Date}, TODAY(), 'month'),
{Status} = "Following Up"
)
Google Sheets Node: Universal Online Spreadsheet
Uses Google OAuth2 — create credentials in Google Cloud Console and complete the OAuth flow in n8n.
Key operations:
- Read Rows: Read a cell range like
Sheet1!A2:F100; first row becomes field names - Append Row: Add a new row at the end with field-value mapping
- Update Row: Update a specific row by row index or unique key lookup
- Lookup: Find a value in a column and return the entire row (VLOOKUP equivalent)
// Append Row node parameters
{
"operation": "appendOrUpdate",
"sheetName": "Leads",
"columns": {
"mappingMode": "defineBelow",
"value": {
"Name": "={{ $json.name }}",
"Company": "={{ $json.company }}",
"Timestamp": "={{ $now.toISO() }}"
}
}
}
Bidirectional Sync Architecture
Key principles for keeping multiple platforms in sync:
- Unique ID anchor: Store the same record's unique identifier across all platforms (e.g., CRM ID) — avoid name-based matching which causes duplicates
- Prevent circular triggers: Use a
sync_source: n8nmarker field when writing; the trigger skips processing when this field is present - Upsert semantics: Insert if not exists, update if exists — supported by Sheets Append or Update, Notion Update Page, and Airtable Update
- Conflict resolution: Last Write Wins — compare
updatedAttimestamps in a Code node and keep the newer value
Project: Auto-Capture CRM Leads to Notion
Webhook (form submission) → Code node (data cleaning: trim whitespace, normalize phone numbers, map source channel names) → Notion Create Page (create lead record with name, company, contact, budget) → Notion Get Page (find next available salesperson via round-robin from a "Sales Team" database) → Notion Update Page (assign owner to lead) → HTTP Request (Feishu notification to salesperson with Notion page link).
Project: Form → Google Sheets → Feishu Notification
A lightweight data collection pipeline suitable for non-technical teams:
- Webhook Trigger: Receive Google Forms / Tally submission
- Google Sheets Append Row: Append submission to the master sheet
- Google Sheets Read Rows: Read today's total submission count
- HTTP Request: Push Feishu group message with new submission alert and today's stats
Why self-hosted n8n wins over Zapier/Make here: No task count limits, customer data never leaves your server, and at high volumes (tens of thousands of records per month) the cost difference is dramatic.