Notion Connector
Forbind dit Notion-workspace med Brevo til indholdsdrevne marketing-workflows, CRM-databasesynkronisering og automatiserede notifikationer via Tajo.
Oversigt
| Egenskab | Værdi |
|---|---|
| Platform | Notion |
| Kategori | Brugerdefineret |
| Opsætningskompleksitet | Let |
| Officiel integration | Nej |
| Synkroniserede data | Databaser, sider, brugere |
| API-type | REST API |
| Autentifikation | Internal Integration Token / OAuth 2.0 |
| Base-URL | https://api.notion.com |
| API-version | 2022-06-28 (via Notion-Version-header) |
Funktioner
- Databasesynkronisering - Synkronisér Notion-databaseposter til Brevo-kontakter og -lister
- CRM-bro - Brug Notion-databaser som et let CRM, synkroniseret med Brevo
- Indholdsnotifikationer - Udløs Brevo-kampagner, når Notion-sider offentliggøres
- Property-mapping - Kortlæg Notion-databaseegenskaber til Brevo-kontaktattributter
- Sideovervågning - Spor sideopdateringer, og videresend dem som Brevo-hændelser
- Synkronisering af brugerkatalog - Synkronisér medlemmer af Notion-workspace til Brevo-kontakter
Forudsætninger
Før du begynder, skal du sikre dig, at du har:
- Et Notion-workspace med admin-adgang
- En intern Notion-integration eller en OAuth-app
- Databasesider delt med integrationen
- En Brevo-konto med API-adgang
- En Tajo-konto med aktivt abonnement
Autentifikation
Notion understøtter to autentifikationsmetoder.
Mulighed 1: Intern integration (anbefalet til et enkelt workspace)
- Gå til notion.so/my-integrations
- Klik på New integration
- Navngiv den “Tajo Integration”
- Vælg dit workspace
- Indstil capabilities:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Kopiér Internal Integration Secret (starter med
ntn_)
Sidedeling påkrævet
Interne integrationer kan kun tilgå sider og databaser, der er eksplicit delt med dem. Del hver måldatabase med din integration via menuen ”…” > “Connections” > vælg din integration.
Mulighed 2: OAuth 2.0 (offentlige integrationer)
Til integrationer, der betjener flere workspaces, skal du bruge OAuth 2.0-flowet:
- Registrér din integration som en offentlig integration
- Omdirigér brugere til:
https://api.notion.com/v1/oauth/authorize?client_id=... - Byt koden til et access token på
/v1/oauth/token
Forbind til Tajo
tajo connectors install notion \ --token $NOTION_TOKENKonfiguration
Grundlæggende opsætning
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: 26Feltmapping
Kortlæg Notion-databaseegenskaber til Brevo-kontaktattributter:
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-endpoints
Tajo integrerer med følgende Notion API-endpoints:
| Endpoint | Metode | Formål |
|---|---|---|
/v1/databases/{id}/query | POST | Forespørg databaseposter |
/v1/databases/{id} | GET | Hent databaseskema |
/v1/pages | POST | Opret en ny side |
/v1/pages/{id} | GET | Hent sideegenskaber |
/v1/pages/{id} | PATCH | Opdatér sideegenskaber |
/v1/blocks/{id}/children | GET | Hent blok-children |
/v1/users | GET | Vis alle workspace-brugere |
/v1/users/{id} | GET | Hent en bruger |
/v1/search | POST | Søg på tværs af workspace |
Kodeeksempler
Initialisér connector
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});Synkronisér database til Brevo
// 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// }Forespørg og filtrér
// 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' } ]});Opret side fra Brevo-hændelse
// 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() } } } }); }});Rate limits
Notion håndhæver rate limits pr. integration:
| Grænsetype | Værdi |
|---|---|
| Rate limit | 3 anmodninger pr. sekund pr. integration |
| Burst-grænse | Korte bursts tilladt, derefter throttles |
| Sidestørrelse | Maks. 100 elementer pr. pagineret anmodning |
Cursor-baseret paginering
Notion bruger cursor-baseret paginering. Tajo håndterer dette automatisk ved at itérere gennem alle sider med parameteren next_cursor, indtil has_more returnerer false.
Notion returnerer 429 Too Many Requests, når rate limits overskrides, med en Retry-After-header.
Fejlfinding
Almindelige problemer
| Problem | Årsag | Løsning |
|---|---|---|
| 401 Unauthorized | Ugyldigt eller udløbet token | Regenerér integrations-token |
| 403 Forbidden | Side ikke delt med integration | Del side/database med integration via Connections |
| 404 Object not found | Database-ID forkert eller ikke delt | Verificér database-ID og delingsindstillinger |
| Manglende egenskaber | Skemamismatch | Genssynkronisér databaseskema og opdatér feltmapping |
| Rate limit overskredet | For mange hurtige anmodninger | Reducér synkroniseringsfrekvens eller batch-størrelse |
Debug-tilstand
connectors: notion: debug: true log_level: verbose log_api_calls: trueTestforbindelse
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableBedste praksis
- Del databaser eksplicit - Interne integrationer ser kun delt indhold
- Brug databaseforespørgsler frem for søgning - Forespørgsler er hurtigere og mere pålidelige for kendte databaser
- Kortlæg egenskabstyper omhyggeligt - Notion har mange egenskabstyper; match dem til Brevo-attributtyper
- Håndtér paginering - Itérér altid gennem alle cursor-sider for at få komplette data
- Synkronisér inkrementelt - Brug
last_edited_time-filtre for kun at synkronisere ændrede poster - Opsæt en poll-tidsplan - Notion understøtter ikke webhooks nativt; poll med jævne mellemrum
Sikkerhed
- Bearer-token-autentifikation - Integrationshemmeligheder og OAuth-tokens
- Kun HTTPS - Al API-kommunikation krypteres via TLS 1.2+
- Scoped adgang - Integrationer tilgår kun eksplicit delt indhold
- OAuth 2.0 - Sikkert autorisationsflow til offentlige integrationer
- Krypteret opbevaring - Tokens krypteres i hvile i Tajo
- Workspace-isolation - Hver integration er scoped til et enkelt workspace