Módulo 5: Airtable y Notion

Airtable: Records y Tablas

Descripción de la cápsula

Airtable es la herramienta más fácil de adoptar de este módulo, porque se parece a una hoja de cálculo — filas, columnas, una cuadrícula. Pero esa familiaridad esconde la diferencia que importa: en Airtable, cada columna tiene un tipo, y la herramienta te impide meter datos que no respeten ese tipo.

Eso cambia todo para un workflow. En Sheets (Módulo 1) tenías que ser disciplinado a mano — recordar formatear el teléfono como texto, vigilar que las fechas no se rompieran. En Airtable, la estructura te protege: si una columna es "fecha", no le entra basura; si es "selección", solo entran las opciones válidas. El workflow puede confiar en la forma de los datos.

Esta cápsula cubre el vocabulario de Airtable (bases, tablas, records, fields), las operaciones core (leer, crear, actualizar registros) y — lo central — cómo trabajar con los tipos de campo desde un workflow.


Lo que vas a aprender

Al terminar esta cápsula serás capaz de:

  • Entender el vocabulario de Airtable: base, tabla, record, field
  • Leer y buscar records con filtros
  • Crear y actualizar records desde un workflow
  • Trabajar con los tipos de campo y por qué importan
  • Usar el Record ID para apuntar a un registro concreto
  • Aplicar "buscar antes de actuar" en Airtable

El vocabulario de Airtable

TérminoQué esEquivale en Sheets a...
BaseUn contenedor de tablas relacionadasUn documento de Sheets
TablaUna colección de registros del mismo tipoUna pestaña/hoja
RecordUna fila — un registro individualUna fila
FieldUna columna con un tipo definidoUna columna (pero sin tipo)
Record IDEl identificador único de cada record(Sheets no tenía esto)

Las dos diferencias que importan frente a Sheets: los fields tienen tipo, y cada record tiene un ID propio — no dependes de "la fila 7", tienes un identificador estable (como aprendiste en Calendar con el Event ID).


Las operaciones core

El nodo Airtable, con Resource: Record, ofrece:

OperaciónQué hace
Search / ListLeer records (con o sin filtro)
GetTraer un record por su ID
CreateCrear un record nuevo
UpdateModificar un record existente
Upsert (Create or Update)Crear o actualizar según una columna clave
DeleteEliminar un record

Si hiciste el Módulo 1, esto te suena: son las mismas operaciones de Google Sheets. La lógica es idéntica — lo que cambia es que aquí los datos tienen estructura.


Leer y buscar records

Leer con filtro

  • Operation: Search
  • Base y Table: las tuyas
  • Filter By Formula: la condición de búsqueda

Airtable filtra con fórmulas — su propio mini-lenguaje. Ejemplos:

{status} = "pending"
{city} = "CDMX"
AND({status} = "pending", {city} = "CDMX")

Los nombres de campo van entre llaves {}. Es más expresivo que el filtro de Sheets (puedes combinar condiciones, comparar, etc.), pero tiene su sintaxis — consulta la referencia de fórmulas de Airtable cuando necesites algo más complejo.

Como siempre: filtra, no traigas todo. Y como con Sheets, el valor del filtro puede ser dinámico — construye la fórmula con expressions de n8n para buscar el dato que llegó por el trigger.

Qué te da cada record

Un record leído llega con:

  • Su id (rec...) — el Record ID
  • Sus fields — un objeto con cada columna y su valor

Mira el output real antes de construir. Los tipos de campo afectan cómo llega cada valor: un campo de "selección múltiple" llega como una lista, un campo "enlace a otra tabla" llega como una lista de Record IDs, no como texto. No adivines — míralos.


Crear y actualizar records

Crear

  • Operation: Create
  • Mapea cada field a su valor, igual que el mapeo del Módulo 1

La diferencia con Sheets: Airtable valida lo que escribes. Si un field es de tipo "número" y le mandas texto, o si un field de "selección única" recibe una opción que no existe, Airtable rechaza el record. Eso es bueno — el error aparece de inmediato, no semanas después con datos corruptos — pero significa que tu mapeo tiene que respetar los tipos.

Actualizar

  • Operation: Update
  • Record ID: {{ $json.id }} — el record a modificar
  • Mapea solo los fields que cambian

Como en Sheets y Calendar: Update es quirúrgico, solo toca lo que mapeas. Y necesita el Record ID para saber a cuál apunta — obtenlo de un Create previo, de un Search, o de donde lo guardaste.

Upsert

  • Operation: Upsert (Create or Update)
  • Defines una columna clave para hacer match

Igual que el "Update or Append" de Sheets: si encuentra un record con esa clave lo actualiza, si no, lo crea. La operación estrella para sincronizar.


Trabajar con los tipos de campo

Esta es la parte que distingue a Airtable. Los tipos más comunes y cómo tratarlos desde un workflow:

Tipo de fieldCómo mandarle valor
Single line text / Long textTexto normal
NumberUn número (no texto) — convierte con {{ Number($json.x) }} si hace falta
DateUna fecha en formato que Airtable acepte (ISO 8601 es lo seguro)
Single selectUna de las opciones que ya existen en el field
Multiple selectUna lista de opciones existentes
Checkboxtrue o false
Link to another recordUna lista de Record IDs de la otra tabla (no texto)

La regla: un mapeo de Airtable que funciona es uno que respeta los tipos. Antes de mapear un field, ten claro de qué tipo es. Los dos que más confunden: single/multiple select (el valor debe ser una opción que ya existe — Airtable no la crea sola por defecto) y link to another record (no le mandas un nombre, le mandas el Record ID del registro enlazado — más sobre relaciones en la cápsula 06).


El patrón "buscar antes de actuar" en Airtable

El mismo patrón del Módulo 1, con una ventaja: aquí cada record tiene un ID estable.

Trigger
   │
   ▼
Airtable (Search, Filter By Formula: {email} = "...")
   │
   ▼
IF: ¿el search devolvió 0 records?
   │
   ┌──────────┴──────────┐
   ▼ SÍ (no existe)      ▼ NO (ya existe)
 Airtable (Create)       Airtable (Update, Record ID del search)

O, más simple para muchos casos: Upsert con la columna clave, que hace lo mismo en un nodo. Igual que en Sheets: usa el patrón explícito cuando "existe / no existe" dispara lógica distinta; usa Upsert cuando solo cambia el contenido.


Trampas comunes

Trampa 1: Mandar a un Single Select una opción que no existe

Qué pasa: Tu workflow intenta poner status = "in review" pero ese field solo tiene las opciones pending, approved, rejected. Airtable rechaza el record.

Cómo evitar: Para fields de selección, los valores deben ser opciones que ya existen. Crea las opciones en Airtable primero, o asegúrate de que tu workflow solo manda valores válidos.


Trampa 2: Tratar un Link field como texto

Qué pasa: Quieres enlazar un record a otro y mandas el nombre ("Cliente Acme"). El field es "Link to another record" y espera un Record ID, no un nombre.

Cómo evitar: Los campos de enlace reciben Record IDs de la tabla enlazada. Tienes que buscar el record destino primero, sacar su id, y mandarlo. (Cápsula 06 profundiza en relaciones.)


Trampa 3: Mandar números como texto

Qué pasa: Un field es "Number" y le mandas "100" (texto). Según el caso, Airtable lo rechaza o lo guarda raro.

Cómo evitar: Convierte explícitamente: {{ Number($json.amount) }}. Igual que aprendiste en Sheets (Módulo 1, cápsula 07), pero aquí Airtable es más estricto.


Trampa 4: Apuntar por posición en vez de Record ID

Qué pasa: Intentas actualizar "el primer record" o "el record de la fila 3". Airtable no funciona por posición.

Cómo evitar: Airtable trabaja con Record IDs. Para actualizar, consigue el id del record (de un Search) y úsalo.


Trampa 5: No mirar cómo llega cada tipo de campo

Qué pasa: Lees un record y {{ $json.fields.categories }} no es el texto que esperabas — es una lista, porque el field es "multiple select".

Cómo evitar: Ejecuta el Search, mira el output real, y observa cómo llega cada field según su tipo.


Ejercicio: el ciclo completo en Airtable

Objetivo: practicar leer, crear, actualizar respetando los tipos.

Preparación

En tu base CRM prueba, tabla Contactos, crea fields con tipos variados: name (texto), email (texto), priority (single select: high/medium/low), active (checkbox), signup_date (date).

Tu tarea

  1. Leer con filtro: Manual Trigger → Airtable (Search, Filter By Formula {priority} = "high"). ¿Cuántos trae?
  2. Crear respetando tipos: Manual Trigger → Set → Airtable (Create) — un contacto nuevo donde priority sea una opción válida, active sea true, signup_date en ISO
  3. Actualizar: usa el id del record creado para hacer un Update que cambie priority a otra opción válida
  4. Upsert: un Airtable (Upsert) con email como columna clave — ejecútalo dos veces con el mismo email y verifica que no duplica
Ver pistas
  • En el 2, priority debe ser exactamente high, medium o low (las opciones que creaste); active = true (booleano, no texto); signup_date = {{ $now.toFormat('yyyy-LL-dd') }}
  • En el 3, el Record ID viene del output del Create: {{ $json.id }}
  • En el 4, observa que la segunda ejecución actualiza el record existente en vez de crear uno nuevo

Resumen y siguiente paso

  • Airtable se parece a una hoja pero cada field tiene un tipo — y la herramienta te impide meter datos que no lo respeten
  • Vocabulario: base (documento) → tabla (pestaña) → record (fila) → field (columna con tipo); cada record tiene un Record ID estable
  • Operaciones core idénticas a Sheets: Search, Get, Create, Update, Upsert, Delete
  • Airtable valida lo que escribes — bueno (errores tempranos), pero tu mapeo debe respetar los tipos
  • Los tipos que más confunden: select (valor debe ser una opción existente) y link (recibe Record IDs, no nombres)
  • "Buscar antes de actuar" se aplica igual — con la ventaja del Record ID estable
  • 5 trampas: opción de select inexistente, link como texto, números como texto, apuntar por posición, no mirar cómo llega cada tipo

Antes de avanzar deberías poder:

  • Leer, crear y actualizar records respetando los tipos de field
  • Usar el Record ID para apuntar a un registro
  • Explicar por qué Airtable rechaza ciertos valores (y por qué eso es bueno)

Lo que sigue (cápsula 04):

Conoces Airtable. La cápsula 04 hace lo mismo con Notion: bases de datos, páginas y propiedades. Vas a ver que Notion comparte la idea de "estructura" con Airtable, pero la envuelve en algo distinto — sus registros son páginas que pueden tener contenido rico.


Recursos adicionales

  1. n8n Airtable node Docs - Todas las operaciones del nodo.
  2. Airtable: fórmulas de filtro - La sintaxis de Filter By Formula.
  3. Airtable: tipos de campo - Referencia de todos los tipos de field.

Creado: Mayo 14, 2026 Versión: 1.0