# Airtable

Envía respuestas a una base de Airtable con mapeo de campos tipados.

## Airtable

Envía cada respuesta a una tabla de Airtable como un nuevo registro. Mapea campos a columnas tipadas, compone un cuerpo de texto enriquecido y rellena respuestas anteriores.

<h2 id="what-you-get">Qué obtienes</h2>

<ul>
  <li>Un registro por respuesta</li>
  <li>Mapeo a nivel de campo con comprobaciones de compatibilidad de tipos</li>
  <li>Mapeo de metadatos, incluido un enlace al PDF de la respuesta generado</li>
  <li>Campo de cuerpo de texto enriquecido opcional con encabezados, negrita, listas y respuestas conectadas</li>
  <li>Relleno de respuestas existentes al conectar (lotes de 10)</li>
  <li>Recuperación automática cuando se renombran columnas</li>
  <li>Registro de prueba para verificar la conexión antes de que lleguen respuestas reales</li>
</ul>

<h2 id="connect">Conectar Airtable</h2>

<h2 id="column-types">Tipos de columna</h2>

<p>Formstep crea automáticamente opciones de selección cuando el valor enviado no coincide con ninguna opción existente.</p>

<p>
  Las columnas de fórmula, resumen, recuento, búsqueda, registro vinculado, colaborador, hora de creación/modificación, creado/modificado
  por, numeración automática, botón y origen sincronizado son de solo lectura y no se pueden mapear.
</p>

<h2 id="repeating-groups">Grupos repetibles</h2>

<p>
  Un <a href="/es/building-forms/repeating-groups">grupo repetible</a> permite que los encuestados añadan tantas entradas como necesiten —
  como una lista de invitados, cada uno con un nombre y una edad. En el selector de campos eliges cómo mapearlo:
</p>

<ul>
  <li>
    <strong>Todo el grupo</strong> se mapea a un solo campo. Cada entrada aparece como filas numeradas y etiquetadas, como "1. Nombre
    completo: Jane Appleseed, Edad: 34, 2. Nombre completo: Marcus Lee, Edad: 29".
  </li>
  <li>
    <strong>Cada campo miembro</strong> se mapea a su propio campo. Los valores de cada entrada se unen con <code> · </code>, de modo que el
    campo Nombre completo queda "Jane Appleseed · Marcus Lee".
  </li>
</ul>

<p>
  Elige uno, el otro o ambos. Si más adelante eliminas un campo miembro de tu formulario, sigue apareciendo en el selector para que los
  registros anteriores conserven su campo — tu mapeo nunca se rompe.
</p>

<h2 id="rich-text-body">Cuerpo de texto enriquecido</h2>

<p>
  Si tu tabla tiene una columna de Texto enriquecido, Texto largo o Texto de una línea, puedes componer su contenido con el editor de
  plantillas. Escribe <strong>@</strong> para insertar el valor de cualquier campo del formulario — el editor los muestra como chips de
  mención que se resuelven con las respuestas enviadas en el momento de la sincronización. Las columnas de texto enriquecido conservan el
  formato; los demás tipos de columna reciben Markdown simple.
</p>

<p>
  Formato admitido: encabezados (H1-H4), <strong>negrita</strong>, <em>cursiva</em>, ~~tachado~~, <code>código en línea</code>, enlaces y
  listas ordenadas/no ordenadas. Las imágenes y los contenidos incrustados no son compatibles.
</p>

<h2 id="backfill">Rellenar respuestas existentes</h2>

<p>
  Tras conectar, puedes rellenar respuestas anteriores. Los registros se escriben en lotes de 10 con un breve intervalo entre lotes para
  respetar los límites de velocidad de Airtable. El progreso se muestra en el panel de integración.
</p>

<h2 id="test-event">Evento de prueba</h2>

<p>
  El paso de finalización y el panel de detalle de integración tienen un botón <strong>Enviar prueba</strong> que escribe un registro de
  marcador de posición. Las columnas de texto reciben cadenas <code>[Question Title]</code>, los números reciben <code>0</code>, los correos
  reciben <code>test@example.com</code>, las fechas reciben la marca de tiempo actual y las selecciones usan la primera opción de las
  respuestas de la pregunta (para evitar crear opciones huérfanas). Elimina el registro de prueba después de verificar.
</p>

<h2 id="abandoned-responses">Eventos de respuesta abandonada</h2>

<p>
  Si un encuestado comienza tu formulario pero no lo termina, Formstep puede sincronizar igualmente los datos parciales. En el paso{' '}
  <strong>Envíos abandonados</strong>, ajusta <strong>Enviar evento abandonado después de</strong> a 12 horas, 1 día, 3 días o 1 semana. Una
  revisión cada hora escribe entonces un registro con el mismo mapeo de campos que una respuesta completada. Mapea el campo de metadatos
  "Estado de la respuesta" a una columna de selección única o texto para distinguir los registros "Parcial" de los "Completado" y
  "Actualizado".
</p>

<p>
  Solo se revisan los borradores creados desde un enlace de compartir, y <strong>Campos requeridos</strong> lo acota más: el registro solo
  se escribe cuando se ha rellenado al menos uno de los campos que elijas.
</p>

> ℹ️ **Función Pro**
> <p>
>     La entrega de respuestas abandonadas requiere un plan Pro o Business. La integración principal de Airtable está disponible en todos los
>     planes. Consulta <a href="/es/subscription-billing/plans-pricing">planes y precios</a>.
>   </p>

<h2 id="schema-drift">Cambios de esquema y recuperación automática</h2>

<p>
  Si renombras una columna en Airtable, Formstep detecta el cambio en la siguiente respuesta y actualiza su mapeo automáticamente. Las
  columnas se identifican por su ID interno estable, por lo que los cambios de nombre son transparentes.
</p>

<p>
  Si eliminas una columna, Formstep la elimina del mapeo y continúa sincronizando el resto de campos. Si el tipo de una columna cambia a
  algo incompatible, el valor no se sincroniza — vuelve a abrir la integración y vuelve a mapear ese campo.
</p>

<h2 id="troubleshooting">Solución de problemas</h2>

<ul>
  <li>
    <strong>Autorización caducada</strong> — Los tokens de acceso de Airtable duran alrededor de una hora y se renuevan automáticamente,
    tanto mediante un trabajo diario como antes de cada entrega. Si la propia renovación falla — se revocó la concesión, o el token de
    actualización caducó — la conexión se marca como caducada y se detienen todas las integraciones que dependen de ella. Pulsa Reconectar.
  </li>
  <li>
    <strong>Columna no visible</strong> — Confirma que la concesión OAuth incluye la base y que el tipo de columna es escribible (consulta
    la tabla anterior).
  </li>
  <li>
    <strong>Límite de velocidad</strong> — Airtable aplica 5 solicitudes por segundo por base. Los rellenos se limitan automáticamente; las
    sincronizaciones en directo reintentan con retroceso exponencial.
  </li>
</ul>

<h2 id="faq">Preguntas frecuentes</h2>

  <p>
    Cuatro permisos de Airtable: leer/escribir datos de registros, leer esquemas de bases y leer tu correo electrónico (para identificar la
    cuenta). Usa OAuth con PKCE — sin claves de API que gestionar.
  </p>

  <p>
    Sí. Las conexiones de Airtable tienen alcance de espacio de trabajo. Cualquier miembro puede usar cualquier cuenta conectada al
    configurar una integración.
  </p>

  <p>Sí. Autoriza cuentas adicionales durante la configuración de nuevas integraciones. Cada formulario elige qué cuenta usar.</p>

  <p>
    La siguiente respuesta falla con un error de "no encontrado" y la integración se detiene. La base y la tabla quedan fijadas al crear la
    integración, así que elimina esta integración y crea una nueva apuntando a la nueva tabla.
  </p>

  <p>
    No. Estas son de solo lectura en la API de Airtable. Consulta la lista completa de tipos de columna excluidos en la sección de{' '}
    <a href="#column-types">tipos de columna</a> .
  </p>

  <p>
    Ve a Configuración del formulario → Integraciones → Airtable y elimina la integración. Para revocar también el acceso de Formstep, ve a
    la configuración de tu cuenta de Airtable y elimina la aplicación OAuth de Formstep.
  </p>

<h2 id="next-steps">Próximos pasos</h2>
<div class="not-prose grid gap-3 sm:grid-cols-2">
  - [Linear](/es/integrations/linear) — Convierte respuestas en incidencias de Linear
  - [GitHub Issues](/es/integrations/github) — Convierte respuestas en incidencias de GitHub
  - [Grupos repetibles](/es/building-forms/repeating-groups) — Permite a los encuestados añadir varias entradas
</div>
