---
title: "Conector de Airtable"
description: "Guía completa de integración con Airtable para sincronizar bases, tablas y registros con contactos y listas de Brevo a través de Tajo."
url: https://tajo.io/es/docs/connectors/custom/airtable/
markdown: https://tajo.io/es/docs/connectors/custom/airtable.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 Airtable

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 tus bases de Airtable con Brevo para sincronizar datos del CRM, gestionar catálogos de productos y automatizar flujos de marketing impulsados por datos estructurados a través de Tajo.

## Resumen

| Propiedad | Valor |
| --- | --- |
| **Plataforma** | Airtable |
| **Categoría** | Personalizada |
| **Complejidad de configuración** | Fácil |
| **Integración oficial** | No |
| **Datos sincronizados** | Registros, Tablas, Usuarios |
| **Tipo de API** | REST API |
| **Autenticación** | Personal Access Token / OAuth 2.0 |
| **URL base** | `https://api.airtable.com/v0/` |

## Funcionalidades

- **Sincronización tabla a lista** - Sincroniza los registros de una tabla de Airtable directamente con listas de contactos de Brevo
- **Puente con catálogos de productos** - Usa tablas de Airtable como catálogos de productos para recomendaciones por email
- **Sincronización con CRM** - Sincronización bidireccional entre el CRM de Airtable y los contactos de Brevo
- **Eventos de envío de formularios** - Reenvía los envíos de formularios de Airtable como eventos de Brevo
- **Filtrado por vista** - Sincroniza vistas específicas de Airtable con listas concretas de Brevo
- **Automatización con webhooks** - Activa campañas de Brevo cuando cambien los registros de Airtable

## Requisitos previos

Antes de empezar, asegúrate de tener:

1. Una cuenta de Airtable (plan Free o superior)
2. Un Personal Access Token o una app OAuth configurada
3. Acceso a las bases y tablas que quieres sincronizar
4. Una cuenta de Brevo con acceso a la API
5. Una cuenta de Tajo con suscripción activa

## Autenticación

Airtable admite Personal Access Tokens y OAuth 2.0.

### Opción 1: Personal Access Token (recomendado)

1. Ve a [airtable.com/create/tokens](https://airtable.com/create/tokens)
2. Haz clic en **Create new token**
3. Ponle el nombre “Tajo Integration”
4. Añade los scopes:

```
data.records:read
data.records:write
data.recordComments:read
schema.bases:read
webhook:manage
```

5. Añade acceso a bases específicas o a todas las bases
6. Haz clic en **Create token**

### Opción 2: OAuth 2.0

Para integraciones multiusuario, usa el flujo OAuth 2.0:

1. Registra tu integración en [airtable.com/create/oauth](https://airtable.com/create/oauth)
2. Configura la URI de redirección: `https://app.tajo.io/callbacks/airtable`
3. Solicita los mismos scopes que arriba

Alcance del token

Los Personal Access Tokens se pueden limitar a bases específicas. Por seguridad, concede acceso solo a las bases que necesita tu integración en lugar de seleccionar “All current and future bases”.

### Conectar con Tajo

```bash
tajo connectors install airtable \
  --token $AIRTABLE_TOKEN
```

## Configuración

### Configuración básica

```yaml
connectors:
  airtable:
    enabled: true

    sync:
      records: true
      comments: false

    tables:
      - base_id: "appXXXXXXXXXXXXXX"
        table_name: "Customers"
        view: "Active Customers"
        sync_to_list: 28
      - base_id: "appXXXXXXXXXXXXXX"
        table_name: "Products"
        sync_as: "catalog"
```

### Asignación de campos

Asocia los campos de Airtable con los atributos de contacto de Brevo:

```yaml
field_mapping:
  # Airtable field -> Brevo attribute
  Name: FIRSTNAME
  Email: email
  Phone: SMS
  Company: COMPANY
  Status: LEAD_STATUS
  Revenue: TOTAL_REVENUE
  "Last Contact": LAST_CONTACT_DATE
  Tags: TAGS
  Notes: NOTES
  "Created Time": SIGNUP_DATE
```

### Sincronización basada en vistas

```yaml
views:
  - base_id: "appXXXXXXXXXXXXXX"
    table_name: "Customers"
    view: "High Value"
    sync_to_list: 29
    filter_by_view: true

  - base_id: "appXXXXXXXXXXXXXX"
    table_name: "Customers"
    view: "Churned"
    sync_to_list: 30
    filter_by_view: true
```

## Endpoints de la API

Tajo se integra con los siguientes endpoints de la Web API de Airtable:

| Endpoint | Método | Propósito |
| --- | --- | --- |
| `/v0/{baseId}/{tableIdOrName}` | GET | Listar registros de una tabla |
| `/v0/{baseId}/{tableIdOrName}` | POST | Crear registros |
| `/v0/{baseId}/{tableIdOrName}` | PATCH | Actualizar registros |
| `/v0/{baseId}/{tableIdOrName}` | DELETE | Eliminar registros |
| `/v0/{baseId}/{tableIdOrName}/{recordId}` | GET | Obtener un registro concreto |
| `/v0/meta/bases` | GET | Listar las bases accesibles |
| `/v0/meta/bases/{baseId}/tables` | GET | Listar tablas de una base |
| `/v0/{baseId}/{tableIdOrName}/listRecordComments` | GET | Listar comentarios de registros |
| `/v0/bases/{baseId}/webhooks` | POST | Crear un webhook |
| `/v0/bases/{baseId}/webhooks` | GET | Listar webhooks |

## 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('airtable', {
  token: process.env.AIRTABLE_TOKEN
});
```

### Sincronizar una tabla con Brevo

```javascript
// Sync an Airtable table to a Brevo list
await tajo.connectors.sync('airtable', {
  type: 'full',
  resources: ['records'],
  baseId: 'appXXXXXXXXXXXXXX',
  tableName: 'Customers',
  view: 'Active Customers',
  targetList: 28
});

const status = await tajo.connectors.status('airtable');
console.log(status);
// {
//   connected: true,
//   lastSync: '2024-03-15T15:00:00Z',
//   recordsSynced: 2340,
//   tablesMonitored: 2,
//   basesConnected: 1
// }
```

### Gestionar webhooks

```javascript
// Airtable webhooks notify of changes; fetch details with cursor
app.post('/webhooks/airtable', async (req, res) => {
  const { base, webhook, timestamp } = req.body;

  // Fetch changed records using webhook cursor
  const changes = await tajo.connectors.getWebhookPayloads('airtable', {
    baseId: base.id,
    webhookId: webhook.id,
    cursor: timestamp
  });

  for (const change of changes) {
    await tajo.connectors.handleEvent('airtable', {
      type: change.actionType,
      payload: change
    });
  }

  res.status(200).send('OK');
});
```

### Crear un registro desde Brevo

```javascript
// Create an Airtable record when a Brevo contact converts
tajo.events.on('contact.attribute_updated', async (event) => {
  if (event.attribute === 'LIFECYCLE_STAGE' && event.value === 'customer') {
    await tajo.connectors.create('airtable', {
      baseId: 'appXXXXXXXXXXXXXX',
      tableName: 'Customers',
      fields: {
        Name: event.contact.name,
        Email: event.contact.email,
        Status: 'Customer',
        'Converted Date': new Date().toISOString().split('T')[0]
      }
    });
  }
});
```

## Límites de velocidad

Airtable aplica límites de velocidad por base:

| Tipo de límite | Valor |
| --- | --- |
| **Límite de velocidad de la API** | 5 peticiones por segundo por base |
| **Registros por petición** | 100 registros máx. (list), 10 registros máx. (create/update) |
| **Payloads de webhook** | 50 payloads por llamada a `listWebhookPayloads` |
| **Tamaño de la petición** | Payload máx. ~2 MB |

Operaciones en lote

Airtable permite crear o actualizar hasta 10 registros por petición. Tajo agrupa automáticamente las operaciones más grandes en varias peticiones respetando los límites de velocidad.

## Resolución de problemas

### Problemas habituales

| Problema | Causa | Solución |
| --- | --- | --- |
| 401 Unauthorized | Token no válido o expirado | Regenera el Personal Access Token |
| 403 Forbidden | El token no tiene acceso a la base | Añade la base al alcance del token |
| 404 Not Found | ID de base o tabla no válido | Verifica el ID de la base y el nombre de la tabla |
| 422 Invalid Request | Tipos de campo incompatibles | Comprueba que los tipos de campo de Airtable coinciden con tus datos |
| Límite de velocidad superado | Más de 5 req/s por base | Reduce la frecuencia de sincronización o espacia las sincronizaciones entre bases |

### Modo depuración

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

### Probar la conexión

```bash
tajo connectors test airtable
# ✓ API authentication successful
# ✓ Base access verified
# ✓ Table schema readable
# ✓ Record listing operational
# ✓ Webhook registration available
```

## Buenas prácticas

1. **Limita los tokens a bases específicas** - No concedas acceso a todas las bases salvo que sea necesario
2. **Usa vistas para sincronizaciones filtradas** - Sincroniza vistas concretas en lugar de tablas completas para reducir el volumen de datos
3. **Agrupa las operaciones en lotes** - Agrupa creaciones y actualizaciones en lotes de 10
4. **Gestiona la paginación** - Airtable devuelve 100 registros por página; itera con `offset`
5. **Usa webhooks para tiempo real** - Registra webhooks en lugar de consultar cambios por polling
6. **Asigna los tipos de campo con precisión** - Haz coincidir los tipos de campo de Airtable (select, number, date) con los tipos de atributo de Brevo

## Seguridad

- **Personal Access Tokens** - Limitados a bases y operaciones específicas
- **OAuth 2.0** - Flujo de autorización seguro con refresh tokens
- **Solo HTTPS** - Toda la comunicación con la API se cifra vía TLS 1.2+
- **Control de acceso por base** - Tokens limitados a bases individuales
- **Almacenamiento cifrado** - Tokens cifrados en reposo en Tajo
- **Verificación HMAC de webhooks** - Valida la autenticidad de las notificaciones de webhook

## Recursos relacionados

- [Conector de Notion](https://tajo.io/es/docs/connectors/custom/notion)
- [Conector de GitHub](https://tajo.io/es/docs/connectors/custom/github)
- [Skill de sincronización de clientes](https://tajo.io/es/docs/skills/data-sync/customer-sync)
- [API de contactos de Brevo](https://tajo.io/es/docs/contact-management)
