Google Forms aceptará encantado jane@gmial.com, un correo de usar y tirar de un
dominio desechable o una dirección de una empresa que cerró hace dos años. La
opción integrada de "correo válido" solo comprueba que el texto parezca una
dirección: nunca se pregunta si hay un buzón real detrás. Para verificar de
verdad los correos de Google Forms necesitas un segundo paso: una comprobación
real contra el sistema de correo, ya sea en el momento en que llega una respuesta
o en un lote posterior. Esta guía muestra ambas, usando Google Apps Script como
pegamento.
La respuesta corta#
Dos vías, según necesites el veredicto en vivo o puedas limpiar por lotes:
- Tiempo real: añade un activador
onFormSubmiten Apps Script que lea la dirección enviada, llame a la API de Qualisend conUrlFetchAppy escriba el veredicto de vuelta en la hoja de Google vinculada. Cada respuesta nueva se puntúa a medida que llega. - Masiva: las respuestas ya viven en una hoja, así que descárgalas en CSV y ejecuta una única verificación masiva. Ideal para un formulario que lleva recopilando un tiempo o cuando no quieres tocar código.
Ambas se apoyan en el mismo veredicto —deliverable, risky, undeliverable o
unknown, más los subindicadores de desechable, de rol y gratuito—. Lo que
cambia es el momento.
Vía 1: verificar correos de Google Forms en tiempo real con Apps Script#
Google Forms no puede llamar por sí solo a una API externa, pero la hoja a la que fluyen sus respuestas sí puede, a través de Apps Script. El plan es sencillo: dispararse en cada envío, coger el correo, preguntarle a Qualisend por él y sellar la respuesta junto a la fila.
Configura el script. Abre la hoja de Google que recopila tus respuestas (en el
editor del formulario, Respuestas → Vincular a Hojas de cálculo si aún no lo
has hecho). Desde la hoja, ve a Extensiones → Apps Script. Antes que nada,
guarda tu clave para que nunca quede en el código: en el editor de scripts, abre
Configuración del proyecto → Propiedades del script y añade QUALISEND_API_KEY
con tu valor. El script la lee en tiempo de ejecución con PropertiesService.
Luego pega un controlador como este. Consulta la referencia de la API para conocer la ruta exacta del endpoint y la forma de la petición; la URL de abajo es un marcador de posición:
// Bound to the responses spreadsheet.
// Runs on each new Form submission (see trigger setup below).
const QUALISEND_URL = 'https://api.qualisend.com/v1/verify'; // confirm at /developers
const EMAIL_QUESTION = 'Email address'; // your exact question title
const STATUS_COL = 8; // an empty column to write the verdict into
function onFormSubmit(e) {
const email = (e.namedValues[EMAIL_QUESTION] || [])[0];
if (!email) return;
const apiKey = PropertiesService.getScriptProperties().getProperty('QUALISEND_API_KEY');
const res = UrlFetchApp.fetch(QUALISEND_URL, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + apiKey },
payload: JSON.stringify({ email }),
muteHttpExceptions: true, // handle errors ourselves instead of throwing
});
// Fail open: if the check errors, keep the response — never lose a real lead.
if (res.getResponseCode() !== 200) return;
const { result } = JSON.parse(res.getContentText());
const row = e.range.getRow();
const sheet = e.range.getSheet();
sheet.getRange(row, STATUS_COL).setValue(result.status); // deliverable | risky | undeliverable | unknown
sheet.getRange(row, STATUS_COL + 1).setValue(result.score); // 0-100
}
El objeto e que te entrega un envío de formulario es la parte útil: e.namedValues
asocia cada título de pregunta con su respuesta, y e.range es la fila que se acaba
de escribir, así que e.range.getRow() te dice exactamente qué línea sellar. Haz
coincidir EMAIL_QUESTION con el título de tu pregunta con precisión y apunta
STATUS_COL a una columna vacía.
Añade el activador. Un activador simple (una función onFormSubmit a secas)
no puede llamar a UrlFetchApp, porque llegar a un servicio externo requiere una
autorización que los activadores simples no tienen. En su lugar necesitas un
activador instalable. En el editor de scripts, abre Activadores (el icono del
reloj) → Añadir activador y elige:
- Función:
onFormSubmit - Fuente del evento: Desde una hoja de cálculo
- Tipo de evento: Al enviarse el formulario
Guarda, aprueba una vez el aviso de autorización y ya está en marcha. Envía una respuesta de prueba y observa cómo aparecen el estado y la puntuación en las columnas que elegiste.
Una nota sobre los tiempos. Qualisend devuelve de inmediato las comprobaciones
locales rápidas (sintaxis, dominio, desechable, rol, error tipográfico), y el sondeo
SMTP más profundo del buzón termina poco después. Para un sello en tiempo real en la
hoja, el result inmediato es lo que quieres: obtienes un veredicto accionable sin
hacer esperar a quien envía. Si más tarde quieres la respuesta confirmada por SMTP
para una fila limítrofe, vuelve a pasarla por la vía masiva, donde unos segundos de
latencia no importan. Cómo funciona la verificación de
correo explica por qué la fase SMTP es la lenta.
Vía 2: verificar de forma masiva la hoja de respuestas#
Si tu formulario lleva meses recopilando, o prefieres no mantener un script, sáltate el activador por completo. Tus respuestas ya son una hoja de cálculo: verifícalas de una pasada.
- Abre la hoja de Google vinculada (o la pestaña Respuestas del formulario → Vincular a Hojas de cálculo).
- Archivo → Descargar → Valores separados por comas (.csv).
- Sube ese CSV a la verificación masiva de Qualisend, asigna la columna del correo y ejecuta el trabajo.
- Descarga los resultados y emparéjalos con tus filas por el correo, o pega la columna de estado de vuelta en la hoja.
La verificación masiva ejecuta la canalización completa, incluido el sondeo SMTP, en cada fila, así que detecta buzones muertos que una comprobación de sintaxis nunca detectaría. Es la misma rutina que usarías para cualquier lista exportada; nuestra guía sobre cómo limpiar una lista de correo cubre la eliminación de duplicados, el manejo de direcciones de rol y qué hacer con el grupo de riesgo. Para una comprobación puntual de una sola dirección, el comprobador de direcciones individuales gratuito no necesita CSV alguno.
Actuar según los veredictos#
Un veredicto solo es útil si cambia lo que haces a continuación. Sea como sea que lo hayas obtenido, trata los cuatro estados así:
| Veredicto | Qué hacer con la respuesta |
|---|---|
deliverable | Consérvala. Un buzón real aceptó el sondeo: seguro para enviar. |
undeliverable | Suprímela. Enviarle un correo significa un rebote duro, y los rebotes son lo que perjudica tu reputación de remitente. |
risky | Segméntala. A menudo es un dominio catch-all: envía con cuidado y vigila la interacción antes de fiarte. |
unknown | Reinténtala más tarde. El servidor de correo no dio una respuesta clara; no descartes por ello un lead posiblemente real. |
Los subindicadores afinan el cuadro. Un indicador disposable en una participación
de sorteo suele ser un correo de usar y tirar que puedes descartar; un indicador
role (info@, support@) puede importar según el propósito del formulario.
Direcciones de rol, desechables y
gratuitas explica cuándo merece la pena
filtrar cada una. En el script en tiempo real puedes actuar sobre ellos de
inmediato; por ejemplo, escribiendo una nota de "revisar" en una columna cuando
result.sub_flags.disposable es verdadero.
¿Qué vía deberías usar?#
Recurre al activador de Apps Script en tiempo real cuando las respuestas sean leads que sigues con rapidez —solicitudes de demo, listas de espera, contenido con acceso restringido— y quieras el veredicto junto a cada fila en el momento en que llega. Cuesta un crédito por envío y un poco de mantenimiento del script.
Recurre a la masiva cuando tengas un atasco que limpiar, cuando prefieras evitar
el código o cuando un formulario ajetreado se pasara de la cuota de consumo de
UrlFetchApp. Nada te impide hacer ambas: ejecuta el activador en las respuestas
nuevas y una pasada masiva mensual para volver a comprobar direcciones que puedan
haber quedado obsoletas.
Sea como sea, se aplica el mismo principio de nuestra guía de verificación en el registro: verifica antes de que una dirección llegue a tu herramienta de envío, para que un error tipográfico se convierta en un lead corregido en lugar de un rebote que pagas más tarde. Si tus formularios viven repartidos entre varias herramientas, el patrón se generaliza: un paso sin código en Zapier o un webhook de Typeform hacen el mismo trabajo para esas plataformas.
Preguntas frecuentes#
¿Puede Google Forms verificar direcciones de correo por sí solo?#
No. Google Forms tiene una opción de "Validación de respuestas" que comprueba que
una respuesta parezca un correo —la forma correcta, una @, un dominio—, pero nunca
contacta con el servidor de correo, así que no sabe distinguir un buzón real de un
error tipográfico o un dominio desechable. Esa comprobación de forma es solo un
primer filtro: da por bueno jane@gmial.com sin pestañear. La verificación real
necesita el paso de API o masivo descrito arriba.
¿Tengo que escribir código para verificar las respuestas de Google Forms?#
Solo para la vía en tiempo real. El activador de Apps Script exige pegar un script breve y configurar un activador, pero el código es pequeño y reutilizable. Si prefieres evitarlo por completo, la vía masiva es de puro apuntar y hacer clic: descarga las respuestas en CSV, súbelas para la verificación masiva y vuelve a combinar los resultados. Sin script, sin activador.
¿Verificar ralentizará a la persona que rellena mi formulario?#
No. Con el activador de Apps Script, la comprobación se ejecuta después del envío: la persona ya ha visto la pantalla de confirmación mientras tu hoja se sella discretamente en segundo plano. Nada bloquea el formulario. Si quieres que la verificación condicione el propio envío, eso corresponde a un formulario personalizado con un endpoint sin servidor, no a Google Forms nativo.
¿Cómo mantengo mi clave de la API de Qualisend fuera del script?#
Guárdala en Propiedades del script, no en el código. En el editor de Apps
Script, abre Configuración del proyecto → Propiedades del script, añade
QUALISEND_API_KEY y léela en tiempo de ejecución con
PropertiesService.getScriptProperties().getProperty(...), como hace el fragmento de
arriba. Usa una clave con permisos acotados desde tu panel de
Qualisend para que solo tenga acceso a la verificación y rótala si
alguna vez queda expuesta.
¿Listo para limpiar las respuestas de tu Google Forms? El plan gratuito
incluye 100 créditos para probar cualquiera de las dos vías, el comprobador de
direcciones individuales gratuito no necesita configuración
alguna y la referencia de la API tiene el endpoint /verify con
ejemplos para copiar y pegar en siete lenguajes.