Notion Connector

Verbinde deinen Notion-Workspace über Tajo mit Brevo für inhaltsbasierte Marketing-Workflows, CRM-Datenbank-Synchronisierung und automatisierte Benachrichtigungen.

Überblick

EigenschaftWert
PlattformNotion
KategorieCustom
EinrichtungsaufwandEinfach
Offizielle IntegrationNein
Synchronisierte DatenDatenbanken, Seiten, Nutzer:innen
API-TypREST API
AuthentifizierungInternes Integrationstoken / OAuth 2.0
Basis-URLhttps://api.notion.com
API-Version2022-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:

  1. Einen Notion-Workspace mit Admin-Zugriff
  2. Eine interne Notion-Integration oder OAuth-App
  3. Datenbankseiten, die mit der Integration geteilt sind
  4. Ein Brevo-Konto mit API-Zugriff
  5. Ein Tajo-Konto mit aktivem Abonnement

Authentifizierung

Notion unterstützt zwei Authentifizierungsmethoden.

Option 1: Interne Integration (Empfohlen für einzelne Workspaces)

  1. Gehe zu notion.so/my-integrations
  2. Klicke auf New integration
  3. Benenne sie mit “Tajo Integration”
  4. Wähle deinen Workspace aus
  5. Setze Fähigkeiten:
Content Capabilities:
Read content: ✓
Update content: ✓
Insert content: ✓
User Capabilities:
Read user information: ✓
  1. 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:

  1. Registriere deine Integration als öffentliche Integration
  2. Leite Nutzer:innen weiter zu: https://api.notion.com/v1/oauth/authorize?client_id=...
  3. Tausche den Code gegen ein Zugriffstoken unter /v1/oauth/token ein

Verbindung zu Tajo herstellen

Terminal window
tajo connectors install notion \
--token $NOTION_TOKEN

Konfiguration

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: 26

Feldzuordnung

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: TAGS

API-Endpunkte

Tajo integriert die folgenden Notion-API-Endpunkte:

EndpunktMethodeZweck
/v1/databases/{id}/queryPOSTDatenbankeinträge abfragen
/v1/databases/{id}GETDatenbank-Schema abrufen
/v1/pagesPOSTNeue Seite erstellen
/v1/pages/{id}GETSeiten-Eigenschaften abrufen
/v1/pages/{id}PATCHSeiten-Eigenschaften aktualisieren
/v1/blocks/{id}/childrenGETBlock-Children abrufen
/v1/usersGETAlle Workspace-Nutzer:innen auflisten
/v1/users/{id}GETEine:n Nutzer:in abrufen
/v1/searchPOSTIm 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 list
await 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 filters
const 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 milestone
tajo.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-TypWert
Rate-Limit3 Anfragen pro Sekunde pro Integration
Burst-LimitKurze Bursts erlaubt, danach gedrosselt
SeitengrößeMax. 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

ProblemUrsacheLösung
401 UnauthorizedUngültiges oder abgelaufenes TokenIntegrationstoken neu generieren
403 ForbiddenSeite nicht mit Integration geteiltSeite/Datenbank über Verbindungen mit der Integration teilen
404 Object not foundDatenbank-ID falsch oder nicht geteiltDatenbank-ID und Freigabeeinstellungen prüfen
Eigenschaften fehlenSchema passt nichtDatenbank-Schema neu synchronisieren und Feldzuordnung aktualisieren
Rate-Limit überschrittenZu viele schnelle AnfragenSynchronisierungsfrequenz oder Batch-Größe reduzieren

Debug-Modus

connectors:
notion:
debug: true
log_level: verbose
log_api_calls: true

Verbindung testen

Terminal window
tajo connectors test notion
# ✓ API authentication successful
# ✓ Database access verified
# ✓ User list accessible
# ✓ Search operational
# ✓ Page creation available

Best Practices

  1. Datenbanken explizit teilen - Interne Integrationen sehen nur geteilte Inhalte
  2. Datenbank-Abfragen gegenüber Suche bevorzugen - Queries sind bei bekannten Datenbanken schneller und zuverlässiger
  3. Eigenschaftstypen sorgfältig zuordnen - Notion hat viele Eigenschaftstypen; passe sie an Brevo-Attributtypen an
  4. Paginierung handhaben - Iteriere stets durch alle Cursor-Seiten für vollständige Daten
  5. Inkrementell synchronisieren - Nutze last_edited_time-Filter, um nur geänderte Einträge zu synchronisieren
  6. 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

Verwandte Ressourcen

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI-Assistent

Hallo! Fragen Sie mich alles über die Dokumentation.