Ir al contenido principal

Crecimiento: cada lead entra directo a tu CRM al instante: manda solicitudes de demo de Survio a una hoja o a HubSpot

Convierte tu formulario de Survio en una máquina de captación: cada solicitud de demo se convierte en una fila nueva en Google Sheets y llega a tu correo, o se crea como contacto en HubSpot. Apóyate en n8n y los flujos de trabajo preparados.

Escrito por Success Team Survio

¿Qué caso va contigo?

Caso A – fácil, para cualquiera: cada solicitud de demo aparece en una hoja de Google que usas como tu CRM, y recibes un correo electrónico para seguirla.

Caso B – pensado para equipos con CRM: cada solicitud de demo es un nuevo lead en HubSpot, listo para que el equipo de ventas lo tome en el momento.

Un visitante llena tu formulario de demo y, segundos después, el lead está ya en tu CRM. Una pyme ve cómo se suma la fila en su hoja de leads (y puede responder al correo electrónico directo), mientras que un equipo de ventas ve el nuevo contacto ya en HubSpot. En todos los casos, hablas con tu lead cuando aún sigue en tu sitio web.
​

Así es el correo electrónico que recibes por cada solicitud de demo nueva en el caso A:
​

New demo request e-mail in Gmail


​

Y este es el contacto nuevo en HubSpot en el caso B:
​

HubSpot contact created from a demo request: lifecycle stage Lead and the request in Message

¿Cómo pasa esto? Survio envía cada Respuesta al webhook que tú indiques. Tu herramienta de automatización (en el ejemplo usamos n8n) la recibe y coloca el lead justo donde trabajas. Survio solo envía, n8n hace el resto.

¿Nunca usaste webhooks en Survio? Empieza por Webhooks: manda Respuestas a tus otras apps en tiempo real y después vuelve aquí.
​

Qué vas a montar

En ambos casos se arranca igual: un formulario sencillo de demo en tu sitio web, que Survio envía a n8n por webhook.

De un vistazo

Caso A: hoja como CRM

Caso B: HubSpot

Resultado

Cada solicitud agrega una fila en Google Sheets con una columna Estado y recibes un correo electrónico

Cada solicitud crea un nuevo contacto en HubSpot CRM, listo para el equipo de ventas

Herramientas

Survio, n8n, Google Sheets, Gmail

Survio, n8n, HubSpot

Ideal para

Negocios pequeños que gestionan sus propios leads

Equipos de ventas que ya usan HubSpot

Antes de empezar

  • Una Encuesta de Survio en un plan de pago. Los webhooks no están en el plan Free y cada plan tiene un número limitado de webhooks por Encuesta (ver el artículo de webhooks).

  • Cuenta de n8n, sea Cloud o autohospedada.

  • Caso A: una cuenta de Google para Sheets y Gmail. Caso B: una cuenta de HubSpot.

En la guía vamos a usar un formulario sencillo para demo: nombre, correo de trabajo (una Pregunta tipo correo electrónico), empresa, tamaño de equipo (una Pregunta tipo opción) y un opcional "¿Qué quieres ver en la demo?". Puedes poner las Preguntas que quieras; vas a mapearlas según tus IDs en el paso A o B.
​

Paso 1 — Pon el formulario en tu sitio web

  1. Abre tu Encuesta, entra en Recopilar respuestas y elige En la web.

  2. Selecciona Ventana emergente y decide cuándo aparecerá. Si tu formulario es corto, activa Ocultar página de inicio y el visitante empieza directo con la primera Pregunta.

  3. Haz clic en Insertar en el sitio web y pega el código en tu sitio web.

Pop-up window settings for the survey in Survio
Embed code for the pop-up window

Hay más formas de insertarlo, como Botón o widget lateral, en Insertar una Encuesta en tu sitio web.
​

Paso 2 — Solo caso A: prepara tu hoja de leads

  1. Crea una hoja de Google nueva y renombra la primera pestaña como leads.

  2. En la fila 1, pon los títulos de columna: Response ID, Received, Name, E-mail, Company, Team size, What they want to see, Status y Language.

  3. Selecciona debajo de Status, elige Insertar → Lista desplegable, añade las opciones New, Contacted y Done (pulsa Añadir otro elemento) y dale a Hecho.

Tu hoja es tu CRM simple. Todo lead entra como New. Cuando lo contactes, pásalo a Contacted, y cuando cierres trato o lo pierdas, marca Done. Filtra por Estado para ver a quién falta responder.

Paso 3 — Crea el webhook en n8n

  1. En n8n, haz un flujo nuevo y añade un nodo Webhook como disparador.

  2. Pon Método HTTP en POST.

  3. Abre la pestaña Production URL y copia tu dirección.

  4. Haz clic en Publicar. Solo la Production URL recibe envíos si el flujo está publicado.

n8n Webhook node with HTTP Method POST and the Production URL tab
Published button in the n8n editor

Usa la Production URL, no la Test URL. La Test URL solo funciona mientras el editor espera el test, y luego deja de escuchar. Si Survio manda y falla, reintenta unas horas pero a los 5 días apaga el webhook.

Paso 4 — Conecta la Encuesta en Survio

  1. Abre la Encuesta y entra en Recopilar respuestas.

  2. En el menú lateral izquierdo, bajo Automatizaciones e integraciones, ve a Webhooks y haz clic en + Añadir un webhook.

  3. Pega la Production URL de n8n en Webhook URL y pulsa Guardar webhook. El webhook se activa en el momento.

Add a webhook dialog in Survio with the n8n Production URL filled in
Saved webhook in Survio, switched on


​

Paso 5 — Haz una prueba y detecta los IDs de tus Preguntas

  1. Llena tu formulario desde su enlace y mándalo. Survio solo envía si completas el formulario, así que ve hasta el final.

  2. En n8n, abre la pestaña Executions. Llega en segundos.

  3. Abre la ejecución y haz clic en el nodo Webhook. Despliega body, luego data y después answers. Allí verás question.id, la label y la answer de cada Pregunta.

  4. Apunta el id de cada Pregunta. O bien haz clic en Pin para trabajar con esa Respuesta mientras sigues construyendo, sin tener que reenviar el formulario.

Webhook node output in n8n with a demo request

Siempre mapea por id, nunca por posición. Las Respuestas se reciben en lista: si cambias el formulario, se desordenan. El id no se mueve.

El correo electrónico del lead está en las Respuestas. No uses data.email: si el correo electrónico viene de una Pregunta tipo correo electrónico, ese campo va vacío. Toma el valor de la Respuesta a esa Pregunta.

Caso A — Una hoja como CRM + un correo electrónico

El flujo va así después del webhook: Preparar lead saca los datos, Guardar lead en la hoja añade la fila y Correo electrónico nuevo lead te avisa.
​

Preparar lead

  1. Añade un nodo Editar campos (Set) tras el Webhook y llámalo Preparar lead.

  2. En Campos a modificar, crea un campo por cada columna de tu hoja (tipo String). El nombre debe coincidir exactamente con el encabezado; el valor es la expresión de aquí abajo.

  3. Pon tus IDs del paso 5 (90403243, etc.) y tu huso horario en vez de Europe/Praga.

Nombre de campo

Valor

Response ID

{{ $json.body.data.responseId }}

Received

{{ DateTime.fromISO($json.body.data.submitted).setZone('Europe/Prague').toFormat('yyyy-MM-dd HH:mm') }}

Name

{{ $json.body.data.answers.find(a => a.question.id === 90403243)?.answer ?? "" }}

E-mail

{{ $json.body.data.answers.find(a => a.question.id === 90403263)?.answer ?? "" }}

Company

{{ $json.body.data.answers.find(a => a.question.id === 90403245)?.answer ?? "" }}

Team size

{{ $json.body.data.answers.find(a => a.question.id === 90403247)?.answer?.labels?.[0] ?? "" }}

What they want to see

{{ $json.body.data.answers.find(a => a.question.id === 90403244)?.answer ?? "" }}

Status

New (texto plano, sin expresión)

Language

{{ $json.body.data.langCode }}

Prepare lead node in n8n with Fields to Set

Guardar lead en la hoja

  1. Añade un nodo Google Sheets tras Preparar lead, nómbralo Guardar lead en la hoja y selecciona Añadir o actualizar fila.

  2. Enlaza tu cuenta de Google y elige tu hoja en Documento, y la pestaña leads en Hoja.

  3. Pon Modo de mapeo de columnas en Mapear automáticamente y Columna para comparar en Response ID.

  4. En Opciones, agrega Formato de celda y selecciona Que n8n dé formato. Si no, Sheets convertirá respuestas tipo 2-10 en fechas.

Save lead to sheet node: Append or Update Row, Map Automatically, Column to match on Response ID

¿Por qué separar de Preparar lead? Si eliges otra hoja o pestaña en Google Sheets, n8n borra los mapeos del propio nodo. Así, Preparar lead tiene siempre las expresiones y no pierdes nada.

Correo electrónico nuevo lead

  1. Añade un nodo Gmail tras Guardar lead en la hoja, llámalo Correo electrónico nuevo lead y pon Mensaje y Enviar.

  2. Enlaza tu Gmail y pon tu correo electrónico en Para.

  3. Pon el Asunto como Solicitud de demo nueva: {{ $('Prepare lead').item.json.Name }} ({{ $('Prepare lead').item.json.Company }}).

  4. Pon Tipo de correo electrónico en HTML y redacta el Mensaje con los datos del lead, como {{ $('Prepare lead').item.json['E-mail'] }} para el correo electrónico.

  5. En Opciones, añade Enviar respuestas a con {{ $('Prepare lead').item.json['E-mail'] }} para que si contestas, llegue directo al lead. Desactiva Añadir atribución de n8n.

Gmail node E-mail the new lead with To, Subject, Message and Send Replies To

Haz clic de nuevo en Publicar. Si cambias algo tras publicar, solo contará cuando vuelvas a publicar.

n8n workflow: Survio Webhook, Prepare lead, Save lead to sheet, E-mail the new lead

Haz otra prueba. Aparecerá una fila con estado New en tu hoja y recibirás al instante el correo electrónico como en el ejemplo del inicio.

The leads tab in Google Sheets with a Status dropdown


​

Caso B — Manda cada demo a HubSpot

Aquí el lead va directo como contacto a tu HubSpot CRM y se marca con la etapa Lead, para que el equipo de ventas lo recoja en su entorno habitual. El flujo tiene dos pasos tras el webhook: Preparar lead y Crear/actualizar contacto.

Preparar lead

Añade un nodo Editar campos (Set) justo tras el Webhook, ponle nombre Preparar lead y agrega estos campos String. Usa tus propios IDs.

Nombre de campo

Valor

E-mail

{{ $json.body.data.answers.find(a => a.question.id === 90403263)?.answer ?? "" }}

First name

{{ ($json.body.data.answers.find(a => a.question.id === 90403243)?.answer ?? "").trim().split(" ")[0] }}

Last name

{{ ($json.body.data.answers.find(a => a.question.id === 90403243)?.answer ?? "").trim().split(" ").slice(1).join(" ") }}

Company

{{ $json.body.data.answers.find(a => a.question.id === 90403245)?.answer ?? "" }}

Mensaje

Solicitud de demo a través de Survio. Equipo: {{ $json.body.data.answers.find(a => a.question.id === 90403247)?.answer?.labels?.[0] }}. Quiere ver: {{ $json.body.data.answers.find(a => a.question.id === 90403244)?.answer }}

First name y Last name salen de una sola Pregunta "Tu nombre". Si pides nombre y apellidos por separado, usa los ids de cada Pregunta.
​

Crear/actualizar contacto

  1. Añade un nodo HubSpot tras Preparar lead, llámalo Crear o actualizar contacto y escoge recurso Contacto y operación Crear o actualizar.

  2. Conecta tu cuenta de HubSpot.

  3. Pon E-mail como {{ $json['E-mail'] }}. HubSpot revisa por correo electrónico, así que si un lead repite correo electrónico, solo se actualiza: no se duplica.

  4. En Propiedades de contacto, pulsa Añadir propiedad y añade First Name, Last Name, Company Name y Mensaje con los datos del nodo de Preparar lead, y pon Nombre o ID de etapa como Lead.

HubSpot node Create or update contact with Email, contact properties and Lifecycle Stage Lead

Haz clic otra vez en Publicar.

n8n workflow: Survio Webhook, Prepare lead, Create or update contact

El contacto se puede asociar a una empresa en automático. Si HubSpot encuentra una empresa con ese dominio de correo electrónico, la vincula y el contacto hereda el propietario de empresa. Es lo habitual, pero prueba una demo real para ver cómo queda.

Consigue el flujo ya listo

Si prefieres no crear el paso 3 y todo tu caso a mano, usa nuestro flujo como base. Descarga el archivo que te corresponda al final del artículo: survio-demo-requests-to-sheet-and-gmail.json para el caso A, o survio-demo-requests-to-hubspot.json para el B. Luego:

  1. En n8n, crea un flujo vacío. Abre el menú (los tres puntitos) al lado del título y escoge Importar, luego Desde archivo. Selecciona el archivo que bajaste.

  2. Entra a Preparar lead y mete tus IDs, y en caso A también tu zona horaria.

  3. Caso A: entra a Guardar lead en la hoja. Hasta configurar todo, verás un símbolo rojo. Conecta Google y escoge tu hoja y la pestaña leads. n8n pondrá Modo de mapeo en Mapear cada columna manualmente: ponlo en Mapear automáticamente y define Columna para comparar como Response ID. Luego entra a Correo electrónico nuevo lead, enlaza tu Gmail y pon tu correo electrónico en Para.

  4. Caso B: entra a Crear o actualizar contacto y conecta tu HubSpot.

  5. Entra a Survio Webhook, copia la Production URL en Survio (paso 4) y dale a Publicar.

n8n workflow menu with Import and From file

Test de extremo a extremo

  1. Abre tu sitio web, llena el formulario integrado y mándalo.

  2. Caso A: confirma que ves la fila en la pestaña leads con estado New y recibes el correo electrónico. Contéstalo y verifica que llega al lead.

  3. Caso B: entra a HubSpot y asegúrate de que está el contacto con etapa Lead y tu solicitud está en Mensaje.

  4. Mira la pestaña Executions en n8n. Ahí puedes ver todos los envíos y sus datos.

Resolución de problemas

Síntoma

Causa

Solución

n8n no recibe nada

Survio tiene la Test URL o el flujo no está publicado

Pon la Production URL en Survio y pulsa Publicar

Survio no guarda el webhook de n8n autohospedado

n8n muestra dirección interna, no la pública

Configura WEBHOOK_URL de n8n con tu dominio público https y copia de nuevo la URL

"Listen for test event" no muestra nada tras enviar el formulario

Survio manda solo a Production URL y la escucha va a Test URL

Mejor revisa la pestaña Executions

Último cambio no se aplica

El flujo está publicado pero no el cambio (el botón Publicar tiene un punto)

Pulsa Publicar otra vez

Columna vacía y una nueva al final

Un campo en Preparar lead no coincide en nombre

Pon el nombre igual en Preparar lead y borra la columna sobrante

Leads duplicados

Operación solo Añadir fila o falta Columna para comparar

Usa Añadir o actualizar fila y compara por Response ID

Responder te llega a ti, no al lead

Falta opción Enviar respuestas a en Gmail

Añade Enviar respuestas a y pon el correo electrónico del lead

Tamaño de equipo sale como fecha

Google Sheets lee un rango tipo 2-10 como fecha

En Guardar lead en la hoja, pon Formato de celda en Que n8n dé formato

Falta el correo electrónico

Lees data.email

Tómalo de la Respuesta de tu Pregunta de correo electrónico

Fallo al crear/actualizar contacto

El correo electrónico está vacío o mal, o hay que volver a conectar HubSpot

Haz la Pregunta de correo electrónico obligatoria y reconecta HubSpot en el nodo

Survio apagó el webhook

La URL falló cinco días seguidos

Soluciona el fallo y vuelve a activar el webhook en Survio

Cosas a tener en cuenta

  • Survio solo manda Respuestas completas, una por envío, y es casi inmediato. Si el usuario cierra el formulario antes de acabar, no se envía nada.

  • No se envía nada retroactivamente: ni las Respuestas previas al webhook, ni cuando estuvo pausado.

  • Si falla, Survio lo reintenta hasta 8 veces en unas 27 horas, esperando hasta 30 segundos cada vez. Usar Response ID previene líneas duplicadas.

  • Si falla 5 días seguidos, Survio desactiva tu webhook y tienes que volver a activarlo.

  • Si pausas el webhook, lo puedes reactivar; si lo eliminas, es permanente.

  • Survio no guarda histórico de envíos en la app. Tu registro es la pestaña Executions en n8n.

  • Enviar Respuestas a webhooks no gasta más Respuestas de tu plan.

¿Quieres que te lo montemos? En la página de Webhooks de Survio, pulsa Solicitar configuración experta, cuéntanos lo que necesitas, y te lo dejamos funcionando, validado y listo.

¿Ha quedado contestada tu pregunta?