Connettore Notion

Collega il tuo workspace Notion a Brevo per flussi di marketing content-driven, sincronizzazione di database CRM e notifiche automatizzate tramite Tajo.

Panoramica

ProprietàValore
PiattaformaNotion
CategoriaCustom
Complessità di setupFacile
Integrazione ufficialeNo
Dati sincronizzatiDatabase, Pagine, Utenti
Tipo di APIREST API
AutenticazioneInternal Integration Token / OAuth 2.0
Base URLhttps://api.notion.com
Versione API2022-06-28 (via header Notion-Version)

Funzionalità

  • Sync database - Sincronizza le voci dei database Notion su contatti e liste Brevo
  • Ponte CRM - Usa i database Notion come CRM leggero, sincronizzato con Brevo
  • Notifiche sui contenuti - Attiva campagne Brevo quando vengono pubblicate pagine Notion
  • Mapping proprietà - Mappa le proprietà dei database Notion sugli attributi dei contatti Brevo
  • Monitoraggio pagine - Traccia gli aggiornamenti delle pagine e inoltrali come eventi Brevo
  • Sync directory utenti - Sincronizza i membri del workspace Notion come contatti Brevo

Prerequisiti

Prima di iniziare, assicurati di avere:

  1. Un workspace Notion con accesso admin
  2. Un’integrazione interna Notion o un’app OAuth
  3. Pagine database condivise con l’integrazione
  4. Un account Brevo con accesso API
  5. Un account Tajo con abbonamento attivo

Autenticazione

Notion supporta due metodi di autenticazione.

Opzione 1: Integrazione interna (consigliata per singolo workspace)

  1. Vai su notion.so/my-integrations
  2. Clicca su New integration
  3. Nominala “Tajo Integration”
  4. Seleziona il tuo workspace
  5. Imposta le capabilities:
Content Capabilities:
Read content: ✓
Update content: ✓
Insert content: ✓
User Capabilities:
Read user information: ✓
  1. Copia l’Internal Integration Secret (inizia con ntn_)

Condivisione pagina richiesta

Le integrazioni interne possono accedere solo alle pagine e ai database esplicitamente condivisi con loro. Condividi ogni database target con la tua integrazione tramite il menu ”…” > “Connections” > seleziona la tua integrazione.

Opzione 2: OAuth 2.0 (integrazioni pubbliche)

Per integrazioni che servono più workspace, usa il flusso OAuth 2.0:

  1. Registra la tua integrazione come pubblica
  2. Reindirizza gli utenti a: https://api.notion.com/v1/oauth/authorize?client_id=...
  3. Scambia il code per un access token su /v1/oauth/token

Connessione a Tajo

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

Configurazione

Setup di base

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

Mapping dei campi

Mappa le proprietà del database Notion sugli attributi dei contatti Brevo:

field_mapping:
# Proprietà Notion -> attributo Brevo
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

Endpoint API

Tajo si integra con i seguenti endpoint dell’API Notion:

EndpointMetodoScopo
/v1/databases/{id}/queryPOSTInterroga le voci del database
/v1/databases/{id}GETRecupera lo schema del database
/v1/pagesPOSTCrea una nuova pagina
/v1/pages/{id}GETRecupera le proprietà della pagina
/v1/pages/{id}PATCHAggiorna le proprietà della pagina
/v1/blocks/{id}/childrenGETRecupera i figli di un block
/v1/usersGETElenca tutti gli utenti del workspace
/v1/users/{id}GETRecupera un utente
/v1/searchPOSTCerca nel workspace

Esempi di codice

Inizializzare il connettore

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

Sincronizzare un database su Brevo

// Sincronizza un database Notion su una lista Brevo
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
// }

Query e filtri

// Interroga un database Notion con filtri
const results = await tajo.connectors.query('notion', {
databaseId: 'abc123def456',
filter: {
property: 'Status',
select: { equals: 'Active' }
},
sorts: [
{ property: 'Last Contact', direction: 'descending' }
]
});

Creare una pagina da un evento Brevo

// Crea una pagina Notion quando un contatto Brevo raggiunge una 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() } }
}
});
}
});

Limiti di rate

Notion applica limiti di rate per integrazione:

Tipo di limiteValore
Rate limit3 richieste al secondo per integrazione
Burst limitBrevi burst consentiti, poi throttling
Dimensione paginaMax 100 elementi per richiesta paginata

Paginazione basata su cursor

Notion usa la paginazione basata su cursor. Tajo la gestisce automaticamente, iterando su tutte le pagine usando il parametro next_cursor finché has_more restituisce false.

Notion restituisce 429 Too Many Requests quando vengono superati i limiti di rate, con un header Retry-After.

Risoluzione dei problemi

Problemi comuni

ProblemaCausaSoluzione
401 UnauthorizedToken non valido o scadutoRigenera il token dell’integrazione
403 ForbiddenPagina non condivisa con l’integrazioneCondividi pagina/database con l’integrazione tramite Connections
404 Object not foundID database errato o non condivisoVerifica ID del database e impostazioni di condivisione
Proprietà mancantiMismatch di schemaRisincronizza lo schema del database e aggiorna il mapping
Rate limit superatoTroppe richieste ravvicinateRiduci la frequenza di sync o la dimensione del batch

Modalità debug

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

Testare la connessione

Terminal window
tajo connectors test notion
# ✓ Autenticazione API riuscita
# ✓ Accesso al database verificato
# ✓ Elenco utenti accessibile
# ✓ Ricerca operativa
# ✓ Creazione pagina disponibile

Best practice

  1. Condividi i database esplicitamente - Le integrazioni interne vedono solo i contenuti condivisi
  2. Usa query sul database anziché ricerca - Le query sono più veloci e affidabili per database conosciuti
  3. Mappa i tipi di proprietà con attenzione - Notion ha molti tipi di proprietà; fai corrispondere i tipi agli attributi Brevo
  4. Gestisci la paginazione - Itera sempre su tutte le pagine con cursor per dati completi
  5. Sincronizza in modo incrementale - Usa filtri su last_edited_time per sincronizzare solo le voci modificate
  6. Imposta uno schedule di polling - Notion non supporta webhook nativamente; effettua polling a intervalli regolari

Sicurezza

  • Autenticazione Bearer Token - Secret delle integrazioni e token OAuth
  • Solo HTTPS - Tutte le comunicazioni API cifrate tramite TLS 1.2+
  • Accesso con scope - Le integrazioni accedono solo ai contenuti esplicitamente condivisi
  • OAuth 2.0 - Flusso di autorizzazione sicuro per integrazioni pubbliche
  • Archiviazione cifrata - Token cifrati a riposo in Tajo
  • Isolamento del workspace - Ogni integrazione è limitata a un singolo workspace

Risorse correlate

Subscribe to updates

developer-docs

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

auto-detect
Assistente AI

Ciao! Chiedimi qualsiasi cosa sulla documentazione.