Conector de Notion
Conecta tu workspace de Notion con Brevo para habilitar flujos de marketing impulsados por contenido, sincronizar bases de datos de CRM y automatizar notificaciones a través de Tajo.
Resumen
| Propiedad | Valor |
|---|---|
| Plataforma | Notion |
| Categoría | Personalizada |
| Complejidad de configuración | Fácil |
| Integración oficial | No |
| Datos sincronizados | Bases de datos, Páginas, Usuarios |
| Tipo de API | REST API |
| Autenticación | Internal Integration Token / OAuth 2.0 |
| URL base | https://api.notion.com |
| Versión de la API | 2022-06-28 (mediante la cabecera Notion-Version) |
Funcionalidades
- Sincronización de bases de datos - Sincroniza entradas de bases de datos de Notion con contactos y listas de Brevo
- Puente con CRM - Usa bases de datos de Notion como un CRM ligero sincronizado con Brevo
- Notificaciones de contenido - Activa campañas de Brevo al publicar páginas de Notion
- Asignación de propiedades - Asocia propiedades de bases de datos de Notion con atributos de contacto de Brevo
- Monitorización de páginas - Rastrea actualizaciones de páginas y reenvíalas como eventos de Brevo
- Sincronización del directorio de usuarios - Sincroniza los miembros del workspace de Notion con contactos de Brevo
Requisitos previos
Antes de empezar, asegúrate de tener:
- Un workspace de Notion con acceso de administrador
- Una integración interna de Notion o una app OAuth
- Páginas de bases de datos compartidas con la integración
- Una cuenta de Brevo con acceso a la API
- Una cuenta de Tajo con suscripción activa
Autenticación
Notion admite dos métodos de autenticación.
Opción 1: Integración interna (recomendada para un solo workspace)
- Ve a notion.so/my-integrations
- Haz clic en New integration
- Ponle el nombre “Tajo Integration”
- Selecciona tu workspace
- Define las capacidades:
Content Capabilities: Read content: ✓ Update content: ✓ Insert content: ✓
User Capabilities: Read user information: ✓- Copia el Internal Integration Secret (empieza por
ntn_)
Es necesario compartir páginas
Las integraciones internas solo pueden acceder a páginas y bases de datos que se hayan compartido explícitamente con ellas. Comparte cada base de datos objetivo con tu integración desde el menú ”…” > “Connections” > selecciona tu integración.
Opción 2: OAuth 2.0 (integraciones públicas)
Para integraciones que sirven a varios workspaces, usa el flujo OAuth 2.0:
- Registra tu integración como integración pública
- Redirige a los usuarios a:
https://api.notion.com/v1/oauth/authorize?client_id=... - Intercambia el código por un access token en
/v1/oauth/token
Conectar con Tajo
tajo connectors install notion \ --token $NOTION_TOKENConfiguración
Configuración básica
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: 26Asignación de campos
Asocia las propiedades de bases de datos de Notion con los atributos de contacto de Brevo:
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: TAGSEndpoints de la API
Tajo se integra con los siguientes endpoints de la API de Notion:
| Endpoint | Método | Propósito |
|---|---|---|
/v1/databases/{id}/query | POST | Consultar entradas de una base de datos |
/v1/databases/{id} | GET | Obtener el esquema de una base de datos |
/v1/pages | POST | Crear una página nueva |
/v1/pages/{id} | GET | Obtener propiedades de una página |
/v1/pages/{id} | PATCH | Actualizar propiedades de una página |
/v1/blocks/{id}/children | GET | Obtener los bloques hijos |
/v1/users | GET | Listar todos los usuarios del workspace |
/v1/users/{id} | GET | Obtener un usuario |
/v1/search | POST | Buscar en todo el workspace |
Ejemplos de código
Inicializar el conector
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});Sincronizar una base de datos con 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// }Consultar y filtrar
// 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' } ]});Crear una página desde un evento de Brevo
// 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() } } } }); }});Límites de velocidad
Notion aplica límites de velocidad por integración:
| Tipo de límite | Valor |
|---|---|
| Límite de velocidad | 3 peticiones por segundo por integración |
| Límite por ráfagas | Se permiten ráfagas cortas; después se aplica throttling |
| Tamaño de página | 100 elementos máx. por petición paginada |
Paginación basada en cursor
Notion usa paginación basada en cursor. Tajo lo gestiona automáticamente, iterando por todas las páginas con el parámetro next_cursor hasta que has_more devuelve false.
Notion devuelve 429 Too Many Requests cuando se superan los límites de velocidad, acompañado de una cabecera Retry-After.
Resolución de problemas
Problemas habituales
| Problema | Causa | Solución |
|---|---|---|
| 401 Unauthorized | Token no válido o expirado | Regenera el token de la integración |
| 403 Forbidden | Página no compartida con la integración | Comparte la página/base de datos con la integración desde Connections |
| 404 Object not found | ID de base de datos incorrecto o no compartido | Verifica el ID y la configuración de uso compartido |
| Propiedades que faltan | Desajuste de esquema | Vuelve a sincronizar el esquema y actualiza la asignación de campos |
| Límite de velocidad superado | Demasiadas peticiones rápidas | Reduce la frecuencia o el tamaño del lote |
Modo depuración
connectors: notion: debug: true log_level: verbose log_api_calls: trueProbar la conexión
tajo connectors test notion# ✓ API authentication successful# ✓ Database access verified# ✓ User list accessible# ✓ Search operational# ✓ Page creation availableBuenas prácticas
- Comparte las bases de datos explícitamente - Las integraciones internas solo ven contenido compartido
- Usa consultas de bases de datos en lugar de búsquedas - Las consultas son más rápidas y fiables para bases de datos conocidas
- Asigna los tipos de propiedad con cuidado - Notion tiene muchos tipos de propiedad; haz coincidirlos con los tipos de atributo de Brevo
- Gestiona la paginación - Itera siempre por todas las páginas del cursor para obtener los datos completos
- Sincroniza de forma incremental - Usa filtros
last_edited_timepara sincronizar solo las entradas modificadas - Configura una programación de polling - Notion no admite webhooks de forma nativa; realiza polling a intervalos regulares
Seguridad
- Autenticación por Bearer Token - Secretos de integración y tokens OAuth
- Solo HTTPS - Toda la comunicación con la API se cifra vía TLS 1.2+
- Acceso limitado - Las integraciones solo acceden al contenido compartido explícitamente
- OAuth 2.0 - Flujo de autorización seguro para integraciones públicas
- Almacenamiento cifrado - Tokens cifrados en reposo en Tajo
- Aislamiento del workspace - Cada integración se limita a un único workspace