---
title: "Notion Connector"
description: "Vollständiger Leitfaden zur Notion-Integration für die Synchronisierung von Datenbanken, Seiten und Workspace-Inhalten mit Brevo über Tajo."
url: https://tajo.io/de/docs/connectors/custom/notion/
markdown: https://tajo.io/de/docs/connectors/custom/notion.md
lang: de-DE
robots: noindex
---

Beantrage frühzeitigen Zugang

Gib deinen Vornamen und deine geschäftliche E-Mail-Adresse ein. Wir senden dir einen Link, mit dem du deine Anfrage für den Tajo-Zugang bestätigst.

# Notion Connector

Connector-Status: Geplant Noch nicht gebaut. Tajo betreibt diesen Connector heute nicht.

| Quellfeld | Zielfeld | Beispielwert |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

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](https://www.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: ✓
```

6. 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

```bash
tajo connectors install notion \
  --token $NOTION_TOKEN
```

## Konfiguration

### Grundeinrichtung

```yaml
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:

```yaml
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:

| 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

```javascript
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

```javascript
// 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

```javascript
// 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

```javascript
// 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-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

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

### Verbindung testen

```bash
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

- [Airtable Connector](https://tajo.io/de/docs/connectors/custom/airtable)
- [GitHub Connector](https://tajo.io/de/docs/connectors/custom/github)
- [Linear Connector](https://tajo.io/de/docs/connectors/custom/linear)
- [Brevo Contacts API](https://tajo.io/de/docs/contact-management)
