---
title: "Notion-connector"
description: "Volledige Notion-integratiegids voor het synchroniseren van databases, pagina's en workspace-content met Brevo via Tajo."
url: https://tajo.io/nl/docs/connectors/custom/notion/
markdown: https://tajo.io/nl/docs/connectors/custom/notion.md
lang: nl-NL
robots: noindex
---

Vraag vroegtijdige toegang aan

Vul je voornaam en je zakelijke e-mailadres in. We sturen je een link om je aanvraag voor toegang tot Tajo te bevestigen.

# Notion-connector

Connectorstatus: Gepland Nog niet gebouwd. Tajo draait deze connector vandaag niet.

| Bronveld | Doelveld | Voorbeeldwaarde |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

Verbind je Notion-workspace met Brevo voor contentgedreven marketingworkflows, CRM-databasesynchronisatie en geautomatiseerde notificaties via Tajo.

## Overzicht

| Eigenschap | Waarde |
| --- | --- |
| **Platform** | Notion |
| **Categorie** | Custom |
| **Setupcomplexiteit** | Eenvoudig |
| **Officiële integratie** | Nee |
| **Gesynchroniseerde data** | Databases, Pagina’s, Gebruikers |
| **API-type** | REST API |
| **Authenticatie** | Internal Integration Token / OAuth 2.0 |
| **Base URL** | `https://api.notion.com` |
| **API-versie** | `2022-06-28` (via `Notion-Version`-header) |

## Functies

- **Databasesynchronisatie** - Synchroniseer Notion database-entries naar Brevo-contacten en lijsten
- **CRM-bridge** - Gebruik Notion-databases als lichtgewicht CRM, gesynchroniseerd met Brevo
- **Contentnotificaties** - Trigger Brevo-campagnes wanneer Notion-pagina’s worden gepubliceerd
- **Property-mapping** - Map Notion database-properties naar Brevo-contactattributen
- **Pagina-monitoring** - Volg pagina-updates en stuur deze door als Brevo-events
- **Synchronisatie van gebruikerslijsten** - Synchroniseer Notion-workspace-leden naar Brevo-contacten

## Vereisten

Voordat je begint, zorg dat je beschikt over:

1. Een Notion-workspace met admin-toegang
2. Een Notion internal integration of OAuth-app
3. Database-pagina’s gedeeld met de integratie
4. Een Brevo-account met API-toegang
5. Een Tajo-account met een actief abonnement

## Authenticatie

Notion ondersteunt twee authenticatiemethoden.

### Optie 1: Internal Integration (aanbevolen voor één workspace)

1. Ga naar [notion.so/my-integrations](https://www.notion.so/my-integrations)
2. Klik op **New integration**
3. Geef de naam “Tajo Integration”
4. Selecteer je workspace
5. Stel de capabilities in:

```
Content Capabilities:
  Read content: ✓
  Update content: ✓
  Insert content: ✓

User Capabilities:
  Read user information: ✓
```

6. Kopieer het **Internal Integration Secret** (begint met `ntn_`)

Pagina delen vereist

Internal integrations hebben alleen toegang tot pagina’s en databases die expliciet met hen gedeeld zijn. Deel elke doeldatabase met je integratie via het ”…”-menu > “Connections” > selecteer je integratie.

### Optie 2: OAuth 2.0 (publieke integraties)

Voor integraties die meerdere workspaces bedienen, gebruik je de OAuth 2.0-flow:

1. Registreer je integratie als publieke integratie
2. Verwijs gebruikers door naar: `https://api.notion.com/v1/oauth/authorize?client_id=...`
3. Wissel de code in voor een access token op `/v1/oauth/token`

### Verbinden met Tajo

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

## Configuratie

### Basisinstelling

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

### Veldmapping

Map Notion database-properties naar Brevo-contactattributen:

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

Tajo integreert met de volgende Notion API-endpoints:

| Endpoint | Method | Doel |
| --- | --- | --- |
| `/v1/databases/{id}/query` | POST | Database-entries queryen |
| `/v1/databases/{id}` | GET | Database-schema ophalen |
| `/v1/pages` | POST | Een nieuwe pagina aanmaken |
| `/v1/pages/{id}` | GET | Pagina-properties ophalen |
| `/v1/pages/{id}` | PATCH | Pagina-properties bijwerken |
| `/v1/blocks/{id}/children` | GET | Block-children ophalen |
| `/v1/users` | GET | Alle workspace-gebruikers opvragen |
| `/v1/users/{id}` | GET | Eén gebruiker ophalen |
| `/v1/search` | POST | Zoeken binnen workspace |

## Codevoorbeelden

### Connector initialiseren

```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
});
```

### Database synchroniseren naar Brevo

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

### Queryen en filteren

```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' }
  ]
});
```

### Pagina aanmaken vanuit Brevo-event

```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() } }
      }
    });
  }
});
```

## Rate limits

Notion hanteert rate limits per integratie:

| Limiettype | Waarde |
| --- | --- |
| **Rate limit** | 3 requests per seconde per integratie |
| **Burst limit** | Korte bursts toegestaan, daarna throttling |
| **Page size** | Max 100 items per gepagineerd request |

Cursor-gebaseerde paginering

Notion gebruikt cursor-gebaseerde paginering. Tajo regelt dit automatisch en doorloopt alle pagina’s via de `next_cursor`-parameter totdat `has_more` `false` retourneert.

Notion retourneert `429 Too Many Requests` wanneer rate limits worden overschreden, met een `Retry-After`-header.

## Probleemoplossing

### Veelvoorkomende problemen

| Probleem | Oorzaak | Oplossing |
| --- | --- | --- |
| 401 Unauthorized | Ongeldig of verlopen token | Regenereer het integration token |
| 403 Forbidden | Pagina niet gedeeld met integratie | Deel pagina/database met integratie via Connections |
| 404 Object not found | Database-ID onjuist of niet gedeeld | Verifieer database-ID en deelinstellingen |
| Properties ontbreken | Schema-mismatch | Synchroniseer database-schema opnieuw en update veldmapping |
| Rate limit overschreden | Te veel snelle requests | Verlaag synchronisatiefrequentie of batchgrootte |

### Debugmodus

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

### Verbinding testen

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

## Best practices

1. **Deel databases expliciet** - Internal integrations zien alleen gedeelde content
2. **Gebruik database-queries boven search** - Queries zijn sneller en betrouwbaarder voor bekende databases
3. **Map property-types zorgvuldig** - Notion heeft veel property-types; match ze met Brevo-attribuuttypes
4. **Behandel paginering** - Doorloop altijd alle cursor-pagina’s voor volledige data
5. **Synchroniseer incrementeel** - Gebruik `last_edited_time`-filters om alleen gewijzigde entries te synchroniseren
6. **Stel een polling-schema in** - Notion ondersteunt webhooks niet native; poll op regelmatige intervallen

## Beveiliging

- **Bearer Token-authenticatie** - Integration secrets en OAuth-tokens
- **Alleen HTTPS** - Alle API-communicatie versleuteld via TLS 1.2+
- **Gescoopte toegang** - Integraties hebben alleen toegang tot expliciet gedeelde content
- **OAuth 2.0** - Veilige autorisatieflow voor publieke integraties
- **Versleutelde opslag** - Tokens versleuteld in rust binnen Tajo
- **Workspace-isolatie** - Elke integratie is gescoped op één workspace

## Gerelateerde bronnen

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