¿Qué caso es el tuyo?
Caso A – rápido y para cualquiera: un gráfico con tus respuestas que se actualiza en cuanto llega una nueva respuesta.
Caso B – para equipos que comparan grupos: una tabla dinámica que puedes filtrar por canal, idioma o cualquier otra columna.
Cada vez que tu encuesta recopila una respuesta, esta llega como una nueva fila en una hoja de Google, al instante. Haz el gráfico o la tabla dinámica una sola vez y tendrás tu informe siempre actualizado, sin exportaciones, ni copias, ni esperar a que alguien prepare los datos.
Este es el informe que obtienes en el Caso A: un gráfico que se actualiza solo con cada respuesta nueva:
Y esta es la tabla dinámica en el Caso B, filtrada por canal usando un segmentador:
¿Cómo funciona esto? Survio envía cada respuesta completada a una URL de Webhook. Una herramienta de automatización (usamos n8n en esta guía) la recibe y escribe una fila en tu hoja. Survio hace el envío, n8n escribe y la hoja muestra el informe.
¿Eres nuevo en los webhooks de Survio? Empieza con Webhooks: envía respuestas a tus otras herramientas en tiempo real, luego regresa aquí.
Lo que vas a construir
Ambos informes se alimentan con la misma configuración: cada respuesta completada se convierte en una fila en una pestaña llamada responses.
De un vistazo | Caso A: un gráfico | Caso B: informe por segmento |
Resultado | Un gráfico de cómo se distribuyen las respuestas, actualizado con cada respuesta nueva | Una tabla dinámica que puedes filtrar por canal, idioma u otra columna |
Herramientas | Survio, n8n, Google Sheets | Survio, n8n, Google Sheets (tabla dinámica y segmentador) |
Ideal para | Un negocio pequeño que quiere un gráfico simple y siempre actualizado | Un equipo que compara grupos, por ejemplo clientes online y en tienda |
Antes de empezar
Una encuesta de Survio en un plan de pago. Los webhooks no están disponibles en el plan Free y cada plan permite un número determinado de webhooks por encuesta (consulta el artículo de webhooks).
Una cuenta de n8n, en n8n Cloud o autohospedada.
Una cuenta de Google para Google Sheets.
En esta guía usamos una encuesta de satisfacción del cliente: una clasificación por estrellas, una pregunta de elección simple "En general, ¿qué tan satisfecho estás?", una pregunta de elección simple "¿Cómo compraste esta vez?", un campo abierto de comentario y una pregunta opcional de e-mail. Tu encuesta puede ser distinta; tendrás que mapear tus propias preguntas en el paso 5.
Paso 1 — Prepara la hoja
Crea una nueva hoja de Google y renombra su primera pestaña a
responses.En la fila 1, escribe los encabezados de columna. Usamos
Response ID,Submitted,Rating (1-5),Satisfaction,Channel,What could we do better,E-mail,Order ID,LanguageySource.
Mantén Response ID como la primera columna. Es el identificador único de Survio para cada respuesta. n8n lo usa para actualizar la fila existente en vez de añadir duplicados cuando se repite una entrega.
Paso 2 — Crea el webhook en n8n
En n8n, crea un nuevo flujo de trabajo y añade un nodo Webhook como disparador.
Configura HTTP Method en POST.
Ve a la pestaña Production URL y copia la dirección.
Haz clic en Publish. La Production URL solo acepta entregas cuando el flujo está publicado.
Usa la Production URL, no la Test URL. La Test URL solo escucha mientras el editor espera un evento de prueba, así que los envíos de Survio fallan en cuanto cierras el editor. Survio reintenta un fallo durante aproximadamente un día, y después de 5 días desactiva el webhook.
Paso 3 — Conecta la encuesta en Survio
Abre tu encuesta y ve a Recopilar respuestas.
En la barra lateral izquierda, bajo Automations & Integrations, selecciona Webhooks y haz clic en + Añadir un webhook.
Pega la Production URL de n8n en Webhook URL y haz clic en Guardar webhook. El webhook queda activado enseguida.
Paso 4 — Envía una respuesta de prueba y encuentra los ids de tus preguntas
Abre tu encuesta con el enlace habitual y envía una respuesta completa. Survio solo envía respuestas completas, así que haz clic hasta el final.
En n8n, abre la pestaña Executions. La entrega llegará en pocos segundos.
Abre la ejecución y haz clic en el nodo Webhook. Expande
body, luegodatay despuésanswers. Cada respuesta muestra suquestion.id, ellabelde la pregunta y laanswer.Apunta el id de cada pregunta que quieras como columna. También puedes hacer clic en Pin para seguir construyendo con esta respuesta sin tener que volver a enviar la encuesta.
Elige siempre las respuestas por id de pregunta. Las respuestas llegan en una lista. Si luego agregas una pregunta a la encuesta, las posiciones cambian y las columnas se llenarían con respuestas erróneas. Los ids de pregunta nunca cambian.
¿Buscas el e-mail del encuestado? No uses data.email: se queda vacío si el e-mail viene de una pregunta de e-mail o de un parámetro de URL. Léelo de la respuesta a tu pregunta de e-mail o de data.parameters.
Paso 5 — Convierte cada respuesta en una fila
Esto lleva dos nodos: Prepare row recoge las respuestas, y Save response to sheet las escribe en tu hoja.
Prepare row
Agrega un nodo Edit Fields (Set) después del nodo Webhook y renómbralo como
Prepare row.En Fields to Set, añade un campo por cada columna de tu hoja y deja el tipo como String. El nombre debe coincidir exactamente con el encabezado de columna; el valor es la expresión que viene debajo.
Reemplaza los ids de pregunta (90403153, etc.) por tus propios ids del paso 4 y Europe/Prague por tu zona horaria.
Nombre del campo | Valor |
Response ID |
|
Submitted |
|
Rating (1-5) |
|
Satisfaction |
|
Channel |
|
What could we do better |
|
| |
Order ID |
|
Language |
|
Source |
|
Save response to sheet
Añade un nodo Google Sheets después de Prepare row, renómbralo como
Save response to sheety elige la operación Append or Update Row.Conecta tu cuenta de Google y elige tu hoja en Document (desde la lista o pega el ID con By ID) y la pestaña
responsesen Sheet.Configura Mapping Column Mode en Map Automatically y Column to match on en Response ID.
¿Por qué un paso aparte para Prepare row? Cuando eliges otra hoja o pestaña en el nodo de Google Sheets, n8n borra el mapeo de columnas ahí. Con las expresiones en Prepare row nunca pierdes nada: el nodo de Google Sheets solo compara nombres de campo con encabezados de columna.
Haz clic otra vez en Publish. Los cambios se aplican solo cuando vuelvas a publicar.
Algunos detalles sobre estas expresiones:
Las preguntas de elección llegan como
{ ids, labels, value }.labels[0]es el texto de la opción elegida. Para una pregunta de elección múltiple, usalabels.join(', ')para poner todas las opciones seleccionadas en una celda.valuemuestra el texto tipeado en "Otra" opción.Las horas están en UTC. La expresión de Submitted las convierte a tu zona horaria y Google Sheets trata la columna como fecha/hora para que puedas ordenar y agrupar.
Los parámetros de URL con guion en el nombre, como
order-id, se usan con la forma de corchetesparameters['order-id']. Survio no acepta guión bajo en los parámetros.El título de la encuesta no va en los datos que Survio envía. Si varias encuestas escriben en una hoja, añade una columna Survey y un campo Survey en Prepare row con el nombre de tu encuesta.
Envía otra respuesta. En segundos verás una fila nueva en la hoja.
Caso A — Gráfico de respuestas
Añade una pestaña llamada
report.Escribe
Satisfactionen A1 yResponsesen B1. En A2 a A6, pon las opciones de respuesta tal como aparecen en tu encuesta.En B2, escribe
=COUNTIF(responses!D:D,A2)y arrástralo hasta B6.Selecciona A1:B6 y elige Insertar → Gráfico. Google Sheets sugiere un gráfico de columnas. Para cambiar el título, ve a Personalizar → Títulos de gráfico y ejes.
Cada respuesta nueva añade una fila en responses y los recuentos y el gráfico se actualizan solos, como el del principio de este artículo.
Caso B — Compara grupos con una tabla dinámica
En la pestaña
responses, selecciona la tabla y elige Insertar → Tabla dinámica, luego Hoja nueva.En Filas, añade Satisfaction. En Valores, añade Response ID y cambia Resumir por de SUM a COUNTA.
Elige Datos → Añadir un segmentador y escoge la columna Channel. Selecciona los valores que quieras ver y confirma con OK. El resultado será como la tabla dinámica al principio de este artículo.
Puedes segmentar por cualquier columna: Channel (tu propia pregunta), Language (el idioma de la encuesta que respondió el encuestado), Source (cómo llegó la respuesta, por ejemplo un enlace directo o una invitación de e-mail) u Order ID.
Una selección de segmentador no se guarda para la próxima vez. Cuando abras el archivo de nuevo, el segmentador tendrá todos los valores. Para dejar guardada una selección, guárdala como predeterminada en el menú del segmentador.
Descarga el flujo de trabajo listo
En vez de montar a mano los pasos 2 y 5, arranca desde nuestro flujo. Descarga el archivo survio-responses-to-google-sheets.json de los adjuntos al final de este artículo y luego:
En n8n, crea un flujo vacío. Abre el menú (los tres puntos) junto al nombre del flujo y selecciona Import, después From file. Elige el archivo que descargaste.
Abre Prepare row y reemplaza los ids de pregunta y Europe/Prague por los tuyos y tu zona horaria.
Abre Save response to sheet. Verás un icono de advertencia rojo hasta que lo configures. Conecta tu cuenta de Google y elige la hoja y su pestaña
responses. En n8n estará Mapping Column Mode como Map Each Column Manually: ponlo como Map Automatically y configura Column to match on como Response ID.Abre Survio Webhook, copia la Production URL en Survio (paso 3) y haz clic en Publish.
Prueba que funcione de principio a fin
Envía una respuesta usando el enlace de la encuesta. Aparecerá una fila en la pestaña
responsesen segundos.Verifica que Response ID esté completo. Es lo que evita duplicados.
Revisa la pestaña Executions en n8n. Todas las entregas y sus datos aparecerán ahí.
¿Problemas? Soluciónalos aquí
Síntoma | Causa | Solución |
Nada llega a n8n | Pusiste la Test URL en Survio o el flujo no está publicado | Copia la Production URL en Survio y dale a Publish |
Survio no acepta la URL del webhook de tu n8n autohospedado | n8n muestra una dirección interna en vez de la pública | Configura |
"Listen for test event" no muestra nada aunque enviaste la encuesta | Survio envía a la Production URL; la escucha está en la Test URL | Revisa la pestaña Executions mejor |
Tu último cambio no tiene efecto | El flujo está publicado, pero el cambio no (el botón Publish tiene un punto) | Haz clic en Publish otra vez |
La misma respuesta aparece dos veces | La acción es Append Row, o no usas columna de comparación | Usa Append or Update Row y compara con Response ID |
Una columna queda vacía y aparece una nueva al final | El campo en Prepare row no coincide exactamente con el encabezado | Renombra el campo en Prepare row para que coincida, y borra la columna extra |
Ves [object Object] en una celda | Mapeaste una respuesta de elección sin | Usa |
Las columnas se desordenan tras editar la encuesta | Elegiste las respuestas por posición en la lista | Elige siempre por |
La columna de e-mail queda vacía | Mapeaste desde | Léelo desde la pregunta de e-mail o parámetro de URL |
Faltan respuestas anteriores a la configuración | Los webhooks solo envían respuestas después de crearse | Exporta las anteriores desde Survio y pégalas tú |
Survio desactivó el webhook | La URL falló durante 5 días seguidos | Corrige y luego vuelve a activar el webhook en Survio |
Cosas que conviene saber
Survio solo envía respuestas completadas, un mensaje por respuesta, en segundos.
Nada se envía de forma retroactiva: ni respuestas de antes de crear el webhook, ni respuestas de cuando estuvo en pausa.
Un fallo se reintenta hasta 8 veces a lo largo de unas 27 horas, y cada intento espera hasta 30 segundos. Gracias a que comparas por Response ID, los reintentos nunca duplican filas.
Si las entregas fallan durante 5 días, Survio apaga el webhook y tendrás que reactivarlo.
Pausar un webhook mantiene su lugar; borrarlo es definitivo.
Survio no guarda el historial de entregas en la app. Tu log está en la pestaña Executions de n8n.
Enviar respuestas a webhooks no consume más respuestas de tu plan.
¿Prefieres que te lo montemos nosotros? En la página Webhooks de Survio, haz clic en Get expert setup, cuéntanos qué quieres que pase y el equipo te lo crea, prueba y deja funcionando el webhook.
