---
title: "Conector de Notion"
description: "Guía completa de integración con Notion para sincronizar bases de datos, páginas y contenido de workspace con Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/custom/notion/
markdown: https://tajo.io/es/docs/connectors/custom/notion.md
lang: es-ES
robots: noindex
---

Solicita acceso anticipado

Escribe tu nombre y dirección de correo de trabajo. Te enviaremos un enlace para confirmar tu solicitud de acceso a Tajo.

# Conector de Notion

Estado del conector: Planificado Aún no está construido. Tajo no ejecuta este conector hoy.

| Campo de origen | Campo de destino | Valor de ejemplo |
| --- | --- | --- |
| `record.id` | `source_id` | `record_1042` |
| `record.updated_at` | `updated_at` | `2026-10-18T08:00:00Z` |
| `record.value` | `value` | `sample_value` |

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:

1. Un workspace de Notion con acceso de administrador
2. Una integración interna de Notion o una app OAuth
3. Páginas de bases de datos compartidas con la integración
4. Una cuenta de Brevo con acceso a la API
5. 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)

1. Ve a [notion.so/my-integrations](https://www.notion.so/my-integrations)
2. Haz clic en **New integration**
3. Ponle el nombre “Tajo Integration”
4. Selecciona tu workspace
5. Define las capacidades:

```
Content Capabilities:
  Read content: ✓
  Update content: ✓
  Insert content: ✓

User Capabilities:
  Read user information: ✓
```

6. 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:

1. Registra tu integración como integración pública
2. Redirige a los usuarios a: `https://api.notion.com/v1/oauth/authorize?client_id=...`
3. Intercambia el código por un access token en `/v1/oauth/token`

### Conectar con Tajo

```bash
tajo connectors install notion \
  --token $NOTION_TOKEN
```

## Configuración

### Configuración básica

```yaml
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
```

### Asignación de campos

Asocia las propiedades de bases de datos de Notion con los atributos de contacto de Brevo:

```yaml
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
```

## Endpoints 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

```javascript
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

```javascript
// 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
// }
```

### Consultar y filtrar

```javascript
// 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' }
  ]
});
```

### Crear una página desde un evento de Brevo

```javascript
// 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() } }
      }
    });
  }
});
```

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

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

### Probar la conexión

```bash
tajo connectors test notion
# ✓ API authentication successful
# ✓ Database access verified
# ✓ User list accessible
# ✓ Search operational
# ✓ Page creation available
```

## Buenas prácticas

1. **Comparte las bases de datos explícitamente** - Las integraciones internas solo ven contenido compartido
2. **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
3. **Asigna los tipos de propiedad con cuidado** - Notion tiene muchos tipos de propiedad; haz coincidirlos con los tipos de atributo de Brevo
4. **Gestiona la paginación** - Itera siempre por todas las páginas del cursor para obtener los datos completos
5. **Sincroniza de forma incremental** - Usa filtros `last_edited_time` para sincronizar solo las entradas modificadas
6. **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

## Recursos relacionados

- [Conector de Airtable](https://tajo.io/es/docs/connectors/custom/airtable)
- [Conector de GitHub](https://tajo.io/es/docs/connectors/custom/github)
- [Conector de Linear](https://tajo.io/es/docs/connectors/custom/linear)
- [API de contactos de Brevo](https://tajo.io/es/docs/contact-management)
