Notion-connector

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

Overzicht

EigenschapWaarde
PlatformNotion
CategorieCustom
SetupcomplexiteitEenvoudig
Officiële integratieNee
Gesynchroniseerde dataDatabases, Pagina’s, Gebruikers
API-typeREST API
AuthenticatieInternal Integration Token / OAuth 2.0
Base URLhttps://api.notion.com
API-versie2022-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
  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: ✓
  1. 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

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

Configuratie

Basisinstelling

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:

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:

EndpointMethodDoel
/v1/databases/{id}/queryPOSTDatabase-entries queryen
/v1/databases/{id}GETDatabase-schema ophalen
/v1/pagesPOSTEen nieuwe pagina aanmaken
/v1/pages/{id}GETPagina-properties ophalen
/v1/pages/{id}PATCHPagina-properties bijwerken
/v1/blocks/{id}/childrenGETBlock-children ophalen
/v1/usersGETAlle workspace-gebruikers opvragen
/v1/users/{id}GETEén gebruiker ophalen
/v1/searchPOSTZoeken binnen workspace

Codevoorbeelden

Connector initialiseren

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

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

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

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

LimiettypeWaarde
Rate limit3 requests per seconde per integratie
Burst limitKorte bursts toegestaan, daarna throttling
Page sizeMax 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

ProbleemOorzaakOplossing
401 UnauthorizedOngeldig of verlopen tokenRegenereer het integration token
403 ForbiddenPagina niet gedeeld met integratieDeel pagina/database met integratie via Connections
404 Object not foundDatabase-ID onjuist of niet gedeeldVerifieer database-ID en deelinstellingen
Properties ontbrekenSchema-mismatchSynchroniseer database-schema opnieuw en update veldmapping
Rate limit overschredenTe veel snelle requestsVerlaag synchronisatiefrequentie of batchgrootte

Debugmodus

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

Verbinding testen

Terminal window
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

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hallo! Stel me vragen over de documentatie.