> ## Documentation Index
> Fetch the complete documentation index at: https://formpaste.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Google Sheets

> Añade cada envío como una fila en una hoja de cálculo de Google que sea tuya - Pro.

<Info>**Pro** - conectar una hoja requiere Pro.</Info>

Formpaste puede añadir cada envío que no sea spam como una fila nueva en una hoja de cálculo
de Google que sea tuya. Sin Zapier de por medio, sin scripts, sin pantalla de OAuth: compartes
una hoja con una dirección que te damos, pegas el enlace de la hoja y las filas empiezan a
llegar.

## Conectar una hoja

1. Abre un formulario en el [panel](https://app.formpaste.com) → **Automatizaciones** →
   **Google Sheets**.
2. Copia la **dirección de la cuenta de servicio** que aparece en la tarjeta. Se ve así:
   `formpaste-sheets@…iam.gserviceaccount.com`.
3. En Google Sheets, abre tu hoja → **Compartir** → pega esa dirección → dale acceso de
   **Editor** → Compartir.
4. De vuelta en Formpaste, pega la URL de la hoja (o solo su ID), activa el interruptor y
   guarda.

<Warning>
  **Editor, no Lector.** Añadimos filas y creamos una columna cuando tu formulario gana un
  campo nuevo, así que el acceso de solo lectura no basta. Compartir con el permiso equivocado
  es la razón más común de que una hoja conectada siga vacía.
</Warning>

Puedes pegar la URL completa directamente desde la barra de direcciones de tu navegador -
`https://docs.google.com/spreadsheets/d/<ID>/edit#gid=0` - y nosotros extraemos el ID por ti.

## Cómo se ve una fila

El primer envío escribe la fila de encabezados: una columna `_submitted_at` y después una
columna por cada campo del formulario, usando los atributos `name` de tus campos.

| `_submitted_at`          | name       | email                                       | message |
| ------------------------ | ---------- | ------------------------------------------- | ------- |
| 2026-07-26T09:14:22.031Z | John Smith | [john@example.com](mailto:john@example.com) | Hello!  |

`_submitted_at` es el momento en que se recibió el **envío** (ISO 8601, UTC), no el momento en
que se escribió la fila, así que la marca de tiempo sigue significando lo que esperas aunque
una fila llegue tras un reintento.

## Cuando un formulario gana un campo nuevo

Supongamos que añades un campo `phone` a tu formulario cuando la hoja ya existe. Formpaste
**añade una columna `phone`** a la derecha de tus encabezados actuales y la rellena, en lugar
de descartar el valor en silencio.

Esto es deliberado y es la diferencia principal con otros backends de formularios: un envío
nunca debería perderse en silencio porque una columna todavía no existía. Es el mismo
principio por el que el spam va a una [carpeta de cuarentena](/docs/es/features/quarantine) en vez
de borrarse.

Algunas consecuencias que conviene conocer:

* **Las columnas nuevas se añaden al final**, nunca se insertan en medio, así que tu
  distribución de columnas nunca se desplaza.
* **Puedes reordenar o renombrar columnas.** Leemos la fila de encabezados antes de cada
  añadido y emparejamos los nombres de tus campos con los encabezados que haya en ese momento.
* **Un encabezado sin campo correspondiente** en un envío concreto recibe una celda vacía, de
  modo que las filas siguen alineadas.
* **Renombrar un encabezado a algo que tu formulario no envía** hace que la próxima vez lo
  tratemos como un campo nuevo y volvamos a crear la columna. Si quieres que la columna te
  siga, renombra el campo del formulario.

## Cuándo se activa

Se añade una fila por cada envío **entregado y que no sea spam**, los mismos que generan un
correo de notificación. Los envíos en cuarentena (spam) no llegan a tu hoja.

Añadir filas es de mejor esfuerzo e independiente del correo: un fallo de Sheets nunca
bloquea, retrasa ni reintenta tu notificación por correo.

## Los valores nunca son fórmulas

Los valores enviados se escriben como **texto literal**. Si alguien envía `=IMPORTRANGE(...)`
o `=HYPERLINK(...)`, la celda muestra ese texto; no se ejecuta dentro de tu hoja de cálculo.
Esto es deliberado: un formulario es una entrada no confiable, y que una fórmula se ejecute en
tu hoja por decisión de un desconocido sería un problema de seguridad real.

## Cuando algo sale mal

La tarjeta te dice qué corregir, en lenguaje claro:

| Lo que ves                                  | Qué pasó                                                                                       | Solución                                                   |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------- |
| Comparte la hoja con la dirección de arriba | La hoja no está compartida con nuestra cuenta de servicio, o está compartida como solo lectura | Compártela con la dirección de la tarjeta, como **Editor** |
| No se encontró esa hoja                     | ID incorrecto, o la hoja fue eliminada                                                         | Vuelve a pegar la URL de la hoja                           |
| Ese ID de hoja no es válido                 | El valor pegado no es un enlace ni un ID de Google Sheets                                      | Pega la URL completa desde tu navegador                    |

Estos tres son **problemas de configuración**, así que no los reintentamos: reintentar no puede
arreglar un permiso. Corrige la causa y vuelve a enviar; el aviso desaparece en cuanto guardas
una configuración nueva.

Los problemas temporales (Google limitando nuestra tasa, una caída de Sheets) se reintentan
automáticamente y nunca muestran un error, porque no hay nada que tengas que arreglar.

## Límites y comportamiento

* **Una hoja por formulario.** Varios formularios pueden apuntar a la misma hoja si quieres
  combinarlos, aunque una hoja por formulario suele ser más fácil de leer.
* **Los añadidos se serializan**, así que dos envíos que lleguen a la vez no pueden
  entremezclarse ni dañar la fila de encabezados.
* **Las filas suelen aparecer en segundos** después del correo de notificación.
* **Solo leemos la fila de encabezados** y añadimos filas. Nunca leemos el resto del contenido
  de tu hoja.
* Se aplica el límite propio de Google de **10 millones de celdas** por hoja de cálculo, unos
  dos millones de envíos con cinco columnas.

## Free vs. Pro

Los formularios Free no pueden conectar una hoja. Intentar activarlo en Free devuelve:

| Código             | HTTP | Significado                        |
| ------------------ | ---- | ---------------------------------- |
| `upgrade_required` | 403  | Esta función requiere un plan Pro. |

**Desactivar** la integración funciona siempre, en cualquier plan, así que bajar de plan nunca
te deja atrapado con una integración que no puedes apagar.

## Sin configuración

No se envía nada a ninguna hoja hasta que conectas una en un formulario Pro. Un formulario
nuevo no escribe en ningún sitio.

<Note>
  ¿Prefieres enviar los envíos a otro sitio: un CRM, una base de datos, Slack? Usa
  [webhooks](/docs/es/features/webhooks) con una plataforma de automatización. Sheets es el único
  destino que construimos de forma nativa, porque la pregunta "dónde van mis envíos" se
  responde con una hoja de cálculo más a menudo que con cualquier otra cosa.
</Note>
