Notion Connector
Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.
Illustration · Beispieldaten
Sync-Beispiel
Quelle
Notion
Connector-Status: Geplant
Ziel
Ihr anderes Tool
Connector-Status: Eigenes Tool
Feldzuordnung
| Quellfeld | Zielfeld | Beispielwert |
|---|---|---|
record.id | source_id | record_1042 |
record.updated_at | updated_at | 2026-10-18T08:00:00Z |
record.value | value | sample_value |
- Entwerfen
- Einen Datensatz prüfen
- Diese Version freigeben
Der Status gilt für einzelne Connectoren und garantiert nicht, dass dieser Sync bereit ist. Felder zur Veranschaulichung. Prüfen Sie vor dem Sync das tatsächliche Schema und die Berechtigungen.
Verbinde deinen Notion-Workspace über Tajo mit Brevo für inhaltsbasierte Marketing-Workflows, CRM-Datenbank-Synchronisierung und automatisierte Benachrichtigungen.
Überblick
| Eigenschaft | Wert |
|---|---|
| Plattform | Notion |
| Kategorie | Custom |
| Einrichtungsaufwand | Einfach |
| Offizielle Integration | Nein |
| Synchronisierte Daten | Datenbanken, Seiten, Nutzer:innen |
| API-Typ | REST API |
| Authentifizierung | Internes Integrationstoken / OAuth 2.0 |
| Basis-URL | https://api.notion.com |
| API-Version | 2022-06-28 (über Notion-Version-Header) |
Funktionen
- Datenbank-Synchronisierung - Synchronisiere Notion-Datenbankeinträge mit Brevo-Kontakten und -Listen
- CRM-Bridge - Nutze Notion-Datenbanken als leichtgewichtiges CRM, synchronisiert mit Brevo
- Inhaltsbenachrichtigungen - Löse Brevo-Kampagnen aus, wenn Notion-Seiten veröffentlicht werden
- Eigenschaftszuordnung - Ordne Notion-Datenbank-Eigenschaften Brevo-Kontaktattributen zu
- Seitenüberwachung - Verfolge Seiten-Updates und leite sie als Brevo-Events weiter
- Synchronisierung des Nutzer:innen-Verzeichnisses - Synchronisiere Mitglieder des Notion-Workspace mit Brevo-Kontakten
Voraussetzungen
Bevor du beginnst, stelle sicher, dass du Folgendes hast:
- Einen Notion-Workspace mit Admin-Zugriff
- Eine interne Notion-Integration oder OAuth-App
- Datenbankseiten, die mit der Integration geteilt sind
- Ein Brevo-Konto mit API-Zugriff
- Ein Tajo-Konto mit aktivem Abonnement
Authentifizierung
Notion unterstützt zwei Authentifizierungsmethoden.
Option 1: Interne Integration (Empfohlen für einzelne Workspaces)
- Gehe zu notion.so/my-integrations
- Klicke auf New integration
- Benenne sie mit “Tajo Integration”
- Wähle deinen Workspace aus
- Setze Fähigkeiten:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Kopiere das Internal Integration Secret (beginnt mit
ntn_)
Seitenfreigabe erforderlich
Interne Integrationen können nur auf Seiten und Datenbanken zugreifen, die explizit mit ihnen geteilt wurden. Teile jede Ziel-Datenbank mit deiner Integration über das ”…”-Menü > “Verbindungen” > wähle deine Integration aus.
Option 2: OAuth 2.0 (öffentliche Integrationen)
Für Integrationen, die mehrere Workspaces bedienen, nutze den OAuth-2.0-Flow:
- Registriere deine Integration als öffentliche Integration
- Leite Nutzer:innen weiter zu:
https://api.notion.com/v1/oauth/authorize?client_id=... - Tausche den Code gegen ein Zugriffstoken unter
/v1/oauth/tokenein
Verbindung zu Tajo herstellen
tajo connectors install notion \ --token $NOTION_TOKENKonfiguration
Grundeinrichtung
connectors: notion: enabled: true api_version: "2022-06-28"
sync: databases: true pages: false users: true
databases: - id: "abc123def456" name: "Customers" sync_to_list: 25 - id: "ghi789jkl012" name: "Leads" sync_to_list: 26Feldzuordnung
Ordne Notion-Datenbank-Eigenschaften Brevo-Kontaktattributen zu:
field_mapping: # Notion property -> Brevo attribute Name: type: title target: FIRSTNAME Email: type: email target: email Phone: type: phone_number target: SMS Company: type: rich_text target: COMPANY Status: type: select target: LEAD_STATUS Deal Value: type: number target: DEAL_VALUE Last Contact: type: date target: LAST_CONTACT_DATE Tags: type: multi_select target: TAGSAPI-Endpunkte
Tajo integriert die folgenden Notion-API-Endpunkte:
| Endpunkt | Methode | Zweck |
|---|---|---|
/v1/databases/{id}/query | POST | Datenbankeinträge abfragen |
/v1/databases/{id} | GET | Datenbank-Schema abrufen |
/v1/pages | POST | Neue Seite erstellen |
/v1/pages/{id} | GET | Seiten-Eigenschaften abrufen |
/v1/pages/{id} | PATCH | Seiten-Eigenschaften aktualisieren |
/v1/blocks/{id}/children | GET | Block-Children abrufen |
/v1/users | GET | Alle Workspace-Nutzer:innen auflisten |
/v1/users/{id} | GET | Eine:n Nutzer:in abrufen |
/v1/search | POST | Im Workspace suchen |
Code-Beispiele
Connector initialisieren
import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({ apiKey: process.env.TAJO_API_KEY, brevoApiKey: process.env.BREVO_API_KEY});
await tajo.connectors.connect('notion', { token: process.env.NOTION_TOKEN});Datenbank mit Brevo synchronisieren
// Sync a Notion database to a Brevo listawait tajo.connectors.sync('notion', { type: 'full', resources: ['databases'], databaseId: 'abc123def456', targetList: 25});
const status = await tajo.connectors.status('notion');console.log(status);// {// connected: true,// lastSync: '2024-03-15T14:30:00Z',// databasesSynced: 2,// pagesTracked: 1450,// usersCount: 32// }Abfragen und Filtern
// Query Notion database with filtersconst results = await tajo.connectors.query('notion', { databaseId: 'abc123def456', filter: { property: 'Status', select: { equals: 'Active' } }, sorts: [ { property: 'Last Contact', direction: 'descending' } ]});Seite aus Brevo-Event erstellen
// Create a Notion page when a Brevo contact reaches a milestonetajo.events.on('contact.attribute_updated', async (event) => { if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') { await tajo.connectors.create('notion', { databaseId: 'ghi789jkl012', properties: { Name: { title: [{ text: { content: event.contact.name } }] }, Email: { email: event.contact.email }, 'Converted Date': { date: { start: new Date().toISOString() } } } }); }});Ratenbegrenzungen
Notion erzwingt Ratenbegrenzungen pro Integration:
| Limit-Typ | Wert |
|---|---|
| Rate-Limit | 3 Anfragen pro Sekunde pro Integration |
| Burst-Limit | Kurze Bursts erlaubt, danach gedrosselt |
| Seitengröße | Max. 100 Einträge pro paginierter Anfrage |
Cursor-basierte Paginierung
Notion verwendet cursorbasierte Paginierung. Tajo handhabt dies automatisch, indem alle Seiten über den next_cursor-Parameter iteriert werden, bis has_more false zurückgibt.
Notion liefert 429 Too Many Requests mit einem Retry-After-Header zurück, wenn Rate-Limits überschritten werden.
Fehlerbehebung
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
| 401 Unauthorized | Ungültiges oder abgelaufenes Token | Integrationstoken neu generieren |
| 403 Forbidden | Seite nicht mit Integration geteilt | Seite/Datenbank über Verbindungen mit der Integration teilen |
| 404 Object not found | Datenbank-ID falsch oder nicht geteilt | Datenbank-ID und Freigabeeinstellungen prüfen |
| Eigenschaften fehlen | Schema passt nicht | Datenbank-Schema neu synchronisieren und Feldzuordnung aktualisieren |
| Rate-Limit überschritten | Zu viele schnelle Anfragen | Synchronisierungsfrequenz oder Batch-Größe reduzieren |
Debug-Modus
connectors: notion: debug: true log_level: verbose log_api_calls: trueVerbindung testen
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableBest Practices
- Datenbanken explizit teilen - Interne Integrationen sehen nur geteilte Inhalte
- Datenbank-Abfragen gegenüber Suche bevorzugen - Queries sind bei bekannten Datenbanken schneller und zuverlässiger
- Eigenschaftstypen sorgfältig zuordnen - Notion hat viele Eigenschaftstypen; passe sie an Brevo-Attributtypen an
- Paginierung handhaben - Iteriere stets durch alle Cursor-Seiten für vollständige Daten
- Inkrementell synchronisieren - Nutze
last_edited_time-Filter, um nur geänderte Einträge zu synchronisieren - Polling-Zeitplan einrichten - Notion unterstützt keine nativen Webhooks; polle in regelmäßigen Abständen
Sicherheit
- Bearer-Token-Authentifizierung - Integrations-Secrets und OAuth-Tokens
- Nur HTTPS - Die gesamte API-Kommunikation ist per TLS 1.2+ verschlüsselt
- Scope-basierter Zugriff - Integrationen greifen nur auf explizit geteilte Inhalte zu
- OAuth 2.0 - Sicherer Autorisierungs-Flow für öffentliche Integrationen
- Verschlüsselte Speicherung - Tokens werden in Tajo verschlüsselt gespeichert
- Workspace-Isolation - Jede Integration ist auf einen einzelnen Workspace beschränkt