O Google Forms vai aceitar de bom grado jane@gmial.com, um endereço temporário
de um domínio descartável ou um endereço de uma empresa que fechou as portas há
dois anos. A configuração nativa de "e-mail válido" só confere se o texto se
parece com um endereço — ela nunca pergunta se há uma caixa de correio real por
trás dele. Para realmente verificar e-mails do Google Forms, você precisa de uma
segunda etapa: uma checagem de verdade contra o sistema de e-mail, seja no momento
em que uma resposta chega, seja em lote depois. Este guia mostra as duas formas,
usando o Google Apps Script como cola.
A resposta curta#
Dois caminhos, dependendo de você precisar do veredito ao vivo ou poder limpar em lotes:
- Tempo real — adicione um gatilho
onFormSubmitno Apps Script que lê o endereço enviado, chama a API da Qualisend com oUrlFetchAppe grava o veredito de volta na Planilha Google vinculada. Cada nova resposta é pontuada assim que chega. - Em lote — as respostas já vivem em uma Planilha, então baixe-as em CSV e rode uma única verificação em lote. Melhor para um formulário que já vem coletando respostas há um tempo, ou quando você não quer mexer em código.
Ambos se apoiam no mesmo veredito — deliverable, risky, undeliverable ou
unknown, mais subindicadores para endereços descartáveis, de função (role) e
gratuitos. O que muda é o timing.
Caminho 1: verificar e-mails do Google Forms em tempo real com o Apps Script#
O Google Forms não consegue chamar uma API externa sozinho, mas a Planilha para onde as respostas fluem consegue — por meio do Apps Script. O plano é simples: disparar a cada envio, pegar o e-mail, perguntar à Qualisend sobre ele e carimbar a resposta ao lado da linha.
Configure o script. Abra a Planilha Google que coleta suas respostas (no editor do Formulário,
Respostas → Vincular às Planilhas se você ainda não fez isso). A partir da
Planilha, vá em Extensões → Apps Script. Antes de qualquer coisa, guarde sua
chave para que ela nunca fique no código: no editor de scripts, abra
Configurações do projeto → Propriedades do script e adicione
QUALISEND_API_KEY com o seu valor. O script a lê em tempo de execução com o
PropertiesService.
Depois cole um handler como este. Consulte a referência da API para o caminho exato do endpoint e o formato da requisição — a URL abaixo é um placeholder:
// 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
}
O objeto e que um envio de Formulário te entrega é a parte útil: e.namedValues
mapeia cada título de pergunta para a sua resposta, e e.range é a linha que
acabou de ser gravada — então e.range.getRow() te diz exatamente qual linha
carimbar. Faça EMAIL_QUESTION corresponder ao título da sua pergunta com
precisão e aponte STATUS_COL para uma coluna vazia.
Adicione o gatilho. Um gatilho simples (uma função onFormSubmit isolada) não consegue chamar o
UrlFetchApp, porque alcançar um serviço externo exige uma autorização que os
gatilhos simples não têm. Você precisa de um gatilho instalável. No editor de
scripts, abra Gatilhos (o ícone de relógio) → Adicionar gatilho e escolha:
- Função:
onFormSubmit - Origem do evento: Da planilha
- Tipo de evento: Ao enviar formulário
Salve, aprove o aviso de autorização uma vez e está no ar. Envie uma resposta de teste e veja o status e a pontuação aparecerem nas colunas que você escolheu.
Uma observação sobre timing. A Qualisend retorna as checagens locais rápidas (sintaxe, domínio, descartável,
função, erro de digitação) imediatamente, com a sondagem SMTP mais profunda da
caixa de correio terminando logo em seguida. Para um carimbo em tempo real na
Planilha, o result imediato é o que você quer — você obtém um veredito acionável
sem fazer quem enviou esperar. Se depois você quiser a resposta confirmada por
SMTP para uma linha limítrofe, rode-a novamente pelo caminho em lote, onde alguns
segundos de latência não fazem diferença. Como funciona a verificação de
e-mails explica por que a etapa SMTP é a mais
lenta.
Caminho 2: verificar em lote a planilha de respostas#
Se o seu formulário vem coletando respostas há meses, ou se você prefere não manter um script, pule o gatilho por completo. Suas respostas já são uma planilha — verifique-as em uma única passada.
- Abra a Planilha Google vinculada (ou a aba Respostas do Formulário → Vincular às Planilhas).
- Arquivo → Fazer download → Valores separados por vírgula (.csv).
- Envie esse CSV para a verificação em lote da Qualisend, mapeie a coluna de e-mail e rode o job.
- Baixe os resultados e combine-os de volta com suas linhas pelo e-mail, ou cole a coluna de status de volta na Planilha.
O modo em lote roda o pipeline completo, incluindo a sondagem SMTP, em cada linha — então ele pega caixas de correio mortas que uma checagem de sintaxe nunca pegaria. Essa é a mesma rotina que você usaria para qualquer lista exportada; nosso guia sobre como limpar uma lista de e-mails cobre a remoção de duplicatas, o tratamento de endereços de função e o que fazer com o grupo arriscado. Para uma checagem pontual de sanidade em um único endereço, o verificador de endereço único gratuito não precisa de CSV nenhum.
Agindo sobre os vereditos#
Um veredito só é útil se ele muda o que você faz em seguida. Independentemente de como você o coletou, trate os quatro status assim:
| Veredito | O que fazer com a resposta |
|---|---|
deliverable | Mantenha. Uma caixa de correio real aceitou a sondagem — seguro para enviar e-mail. |
undeliverable | Suprima. Enviar para ele significa um hard bounce, e os bounces são o que prejudica sua reputação de remetente. |
risky | Segmente. Muitas vezes é um domínio catch-all — envie com cuidado e observe o engajamento antes de confiar nele. |
unknown | Tente novamente depois. O servidor de e-mail não deu uma resposta clara; não descarte um lead possivelmente real por causa disso. |
Os subindicadores refinam o quadro. Um indicador disposable em uma inscrição de
sorteio geralmente é um descartável que você pode largar; um indicador role
(info@, support@) pode importar dependendo do propósito do formulário.
Endereços de função, descartáveis e
gratuitos explica quando vale a pena filtrar
cada um. No script em tempo real você pode agir sobre eles na hora — por exemplo,
gravando uma nota de "revisar" em uma coluna quando result.sub_flags.disposable
for verdadeiro.
Qual caminho você deve usar?#
Recorra ao gatilho do Apps Script em tempo real quando as respostas forem leads sobre os quais você faz follow-up rápido — pedidos de demonstração, listas de espera, conteúdo restrito — e você quiser o veredito ao lado de cada linha no momento em que ela chega. Custa um crédito por envio e um pouco de manutenção de script.
Recorra ao modo em lote quando você tiver um acúmulo para limpar, quando
preferir evitar código, ou quando um formulário movimentado ultrapassaria a cota
de consumidor do UrlFetchApp. Nada impede você de fazer as duas coisas: rode o
gatilho nas novas respostas e uma passada mensal em lote para reverificar
endereços que possam ter ficado desatualizados.
De qualquer forma, o mesmo princípio do nosso guia de verificação no cadastro se aplica — verifique antes que um endereço chegue à sua ferramenta de envio, para que um erro de digitação vire um lead corrigido em vez de um bounce que você paga mais tarde. Se seus formulários estão espalhados por várias ferramentas, o padrão se generaliza: uma etapa no Zapier sem código ou um webhook do Typeform faz o mesmo trabalho para essas plataformas.
Perguntas frequentes#
O Google Forms consegue verificar endereços de e-mail sozinho?#
Não. O Google Forms tem uma opção de "Validação de resposta" que confere se uma
resposta se parece com um e-mail — o formato certo, um @, um domínio — mas ela
nunca entra em contato com o servidor de e-mail, então não consegue distinguir uma
caixa de correio real de um erro de digitação ou de um domínio descartável. Essa
checagem de formato é só um primeiro filtro — ela deixa passar jane@gmial.com sem
pestanejar. A verificação de verdade precisa da etapa de API ou de lote descrita
acima.
Preciso escrever código para verificar as respostas do Google Forms?#
Só no caminho em tempo real. O gatilho do Apps Script exige colar um script curto e configurar um gatilho, mas o código é pequeno e reutilizável. Se você preferir evitar isso por completo, o caminho em lote é puramente de apontar e clicar: baixe as respostas em CSV, envie para verificação em lote e mescle os resultados de volta. Sem script, sem gatilho.
Verificar vai deixar mais lento quem está preenchendo meu formulário?#
Não. Com o gatilho do Apps Script, a checagem roda após o envio — quem respondeu já viu a tela de confirmação enquanto sua Planilha é carimbada silenciosamente em segundo plano. Nada bloqueia o formulário. Se você quiser que a verificação barre o próprio envio, isso pertence a um formulário personalizado com um endpoint serverless, não ao Google Forms nativo.
Como mantenho minha chave de API da Qualisend fora do script?#
Guarde-a nas Propriedades do script, não no código. No editor do Apps Script,
abra Configurações do projeto → Propriedades do script, adicione
QUALISEND_API_KEY e leia-a em tempo de execução com
PropertiesService.getScriptProperties().getProperty(...), como o trecho acima
faz. Use uma chave com escopo do seu painel da Qualisend para que
ela tenha apenas permissões de verificação, e rotacione-a caso ela seja exposta.
Pronto para limpar as respostas do seu Google Forms? O plano
gratuito inclui 100 créditos para testar qualquer um dos caminhos, o
verificador de endereço único gratuito não precisa de
configuração nenhuma, e a referência da API tem o endpoint /verify
com exemplos de copiar e colar em sete linguagens.