Notion-koppling
Anslut din Notion-arbetsyta till Brevo för innehållsdrivna marknadsföringsarbetsflöden, CRM-databassynkronisering och automatiserade notifieringar via Tajo.
Översikt
| Egenskap | Värde |
|---|---|
| Plattform | Notion |
| Kategori | Anpassad |
| Installationskomplexitet | Enkel |
| Officiell integration | Nej |
| Data som synkas | Databaser, sidor, användare |
| API-typ | REST API |
| Autentisering | Intern integrationstoken / OAuth 2.0 |
| Bas-URL | https://api.notion.com |
| API-version | 2022-06-28 (via Notion-Version-header) |
Funktioner
- Databassynkronisering - Synka Notion-databasposter till Brevo-kontakter och listor
- CRM-brygga - Använd Notion-databaser som ett enkelt CRM, synkat till Brevo
- Innehållsnotifieringar - Utlös Brevo-kampanjer när Notion-sidor publiceras
- Egenskapsmappning - Mappa Notion-databasegenskaper till Brevo-kontaktattribut
- Sidövervakning - Spåra siduppdateringar och vidarebefordra som Brevo-händelser
- Synk av användarkatalog - Synka medlemmar i Notion-arbetsytan till Brevo-kontakter
Förutsättningar
Innan du börjar, se till att du har:
- En Notion-arbetsyta med adminåtkomst
- En intern Notion-integration eller OAuth-app
- Databassidor delade med integrationen
- Ett Brevo-konto med API-åtkomst
- Ett Tajo-konto med en aktiv prenumeration
Autentisering
Notion stöder två autentiseringsmetoder.
Alternativ 1: Intern integration (rekommenderas för enskild arbetsyta)
- Gå till notion.so/my-integrations
- Klicka på New integration
- Namnge den “Tajo Integration”
- Välj din arbetsyta
- Sätt funktioner:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Kopiera Internal Integration Secret (börjar med
ntn_)
Siddelning krävs
Interna integrationer kan endast komma åt sidor och databaser som uttryckligen har delats med dem. Dela varje måldatabas med din integration via ”…”-menyn > “Connections” > välj din integration.
Alternativ 2: OAuth 2.0 (publika integrationer)
För integrationer som betjänar flera arbetsytor, använd OAuth 2.0-flödet:
- Registrera din integration som en publik integration
- Omdirigera användare till:
https://api.notion.com/v1/oauth/authorize?client_id=... - Byt ut koden mot en åtkomsttoken på
/v1/oauth/token
Anslutning till Tajo
tajo connectors install notion \ --token $NOTION_TOKENKonfiguration
Grundinställning
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: 26Fältmappning
Mappa Notion-databasegenskaper till Brevo-kontaktattribut:
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 integrerar med följande Notion API-endpoints:
| Endpoint | Metod | Syfte |
|---|---|---|
/v1/databases/{id}/query | POST | Fråga databasposter |
/v1/databases/{id} | GET | Hämta databasschema |
/v1/pages | POST | Skapa en ny sida |
/v1/pages/{id} | GET | Hämta sidegenskaper |
/v1/pages/{id} | PATCH | Uppdatera sidegenskaper |
/v1/blocks/{id}/children | GET | Hämta blockunderordnade |
/v1/users | GET | Lista alla användare i arbetsytan |
/v1/users/{id} | GET | Hämta en användare |
/v1/search | POST | Sök i hela arbetsytan |
Kodexempel
Initiera kopplingen
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});Synka databas till 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// }Fråga och filtrera
// 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' } ]});Skapa sida från 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() } } } }); }});Hastighetsbegränsningar
Notion tillämpar hastighetsbegränsningar per integration:
| Gränstyp | Värde |
|---|---|
| Hastighetsbegränsning | 3 förfrågningar per sekund per integration |
| Burst-gräns | Korta toppar tillåtna, sedan strypning |
| Sidstorlek | Max 100 objekt per sidindelad förfrågan |
Markörbaserad sidindelning
Notion använder markörbaserad sidindelning. Tajo hanterar detta automatiskt och itererar genom alla sidor med parametern next_cursor tills has_more returnerar false.
Notion returnerar 429 Too Many Requests när hastighetsbegränsningar överskrids, med en Retry-After-header.
Felsökning
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
| 401 Unauthorized | Ogiltig eller utgången token | Återgenerera integrationstoken |
| 403 Forbidden | Sida inte delad med integrationen | Dela sida/databas med integration via Connections |
| 404 Object not found | Databas-ID felaktigt eller ej delat | Verifiera databas-ID och delningsinställningar |
| Egenskaper saknas | Schema-mismatch | Synka databasschema igen och uppdatera fältmappning |
| Hastighetsbegränsning överskriden | För många snabba förfrågningar | Minska synkfrekvens eller batchstorlek |
Felsökningsläge
connectors: notion: debug: true log_level: verbose log_api_calls: trueTesta anslutning
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableBästa praxis
- Dela databaser uttryckligen - Interna integrationer ser endast delat innehåll
- Använd databasfrågor framför sökning - Frågor är snabbare och mer pålitliga för kända databaser
- Mappa egenskapstyper noggrant - Notion har många egenskapstyper; matcha dem till Brevo-attributtyper
- Hantera sidindelning - Iterera alltid genom alla markörsidor för komplett data
- Synka inkrementellt - Använd
last_edited_time-filter för att endast synka ändrade poster - Sätt upp ett pollningschema - Notion stöder inte webhooks nativt; polla med jämna intervall
Säkerhet
- Bearer-tokenautentisering - Integrationshemligheter och OAuth-tokens
- Endast HTTPS - All API-kommunikation krypterad via TLS 1.2+
- Scoped åtkomst - Integrationer har endast åtkomst till uttryckligen delat innehåll
- OAuth 2.0 - Säkert auktoriseringsflöde för publika integrationer
- Krypterad lagring - Tokens krypterade i vila i Tajo
- Arbetsyteisolering - Varje integration är scopad till en enskild arbetsyta