O Typeform é ótimo para coletar endereços de e-mail e discretamente ruim para dizer quais deles são reais. Seu campo de e-mail verifica se o que a pessoa digitou parece um endereço — mas não consegue confirmar que a caixa de correio existe, que não é descartável ou que não vai gerar um hard bounce logo no seu primeiro follow-up. Este guia mostra duas maneiras práticas de verificar e-mails do Typeform com a Qualisend: em tempo real, com um webhook que dispara no momento em que uma resposta chega, e em massa, exportando as respostas para um CSV. Nenhuma delas precisa de um plugin nativo — ainda não existe um — apenas os webhooks integrados do Typeform ou o botão de exportação.
A resposta curta#
Escolha o caminho que corresponde a quando você precisa da resposta:
- Tempo real — aponte um webhook do Typeform para uma pequena função serverless. A cada envio, o Typeform faz um POST da resposta para o seu endpoint; a função extrai o e-mail, chama a API da Qualisend e age conforme o veredito — marca o contato, encaminha para a lista certa ou segura o e-mail de boas-vindas para um endereço ruim.
- Em massa — exporte suas respostas existentes para CSV, passe-as pela verificação em massa da Qualisend e suprima os endereços não entregáveis antes do próximo envio.
Por que o campo de e-mail do Typeform não basta#
O tipo de pergunta email do Typeform faz uma verificação de formato no
navegador — garante que exista um @, um domínio e nenhum lixo óbvio. É a mesma
classe de verificação que um regex faz, e falha pelos mesmos motivos:
formato não é entregabilidade. jane@gmial.com
passa na verificação de formato. throwaway@mailinator.com também, assim como um
endereço de aparência real em um domínio que fechou no ano passado.
Nenhum deles é detectado até você enviar — e aí um endereço morto vira um hard bounce que corrói sua taxa de bounce e sua reputação de remetente. A verificação de verdade adiciona as camadas que o Typeform não tem: uma consulta de DNS/MX e uma sondagem SMTP da caixa de correio, além de sinalizadores para endereços descartáveis, de função (role) e catch-all. Se esse fluxo é novo para você, o que a verificação de e-mail realmente checa é a introdução.
Duas formas de verificar e-mails do Typeform#
A restrição importante primeiro: o Typeform não consegue bloquear um e-mail ruim no meio do formulário. Não há uma maneira suportada de chamar uma API externa entre as perguntas e impedir que um respondente termine, então a verificação em tempo real acontece logo após o envio, em um webhook — não como uma barreira inline. Isso molda os dois caminhos.
| Caminho | Quando executa | Melhor para |
|---|---|---|
| Webhook em tempo real | Instantaneamente, a cada envio | Funis ao vivo — marcar, encaminhar ou segurar o follow-up antes de enviá-lo |
| CSV em massa | Sob demanda, em lotes | Acúmulos de respostas existentes e higienização periódica da lista |
Caminho 1: tempo real com um webhook do Typeform#
O Typeform pode enviar cada resposta para uma URL que você controla. No painel
Connect do formulário, adicione um webhook e aponte-o para o seu endpoint. Os
webhooks são um recurso de plano pago no Typeform, então confira seu plano antes
de construir. Quando uma resposta é enviada, o Typeform faz um POST de um payload
JSON cujo array form_response.answers contém cada resposta — o endereço de
e-mail fica na resposta do tipo email.
Seu endpoint é uma função serverless que guarda a chave da API e transforma o veredito em uma ação. O padrão é o mesmo do guia de verificação no cadastro: a chave fica no servidor, e você age com base no resultado. Aqui está ele como um Route Handler do Next.js (consulte a documentação para desenvolvedores para o caminho exato do endpoint e o formato da requisição):
// app/api/typeform-webhook/route.ts
import { NextResponse } from "next/server";
// Placeholder — confirm the real path in /developers.
const QUALISEND_ENDPOINT = "https://api.qualisend.com/v1/verify";
export async function POST(req: Request) {
const payload = await req.json();
// The email lives in the answer whose type is "email".
const answers = payload.form_response?.answers ?? [];
const email = answers.find((a) => a.type === "email")?.email;
if (!email) return NextResponse.json({ ok: true }); // nothing to verify
const res = await fetch(QUALISEND_ENDPOINT, {
method: "POST",
headers: {
// Store YOUR_API_KEY server-side, never in the browser.
Authorization: `Bearer ${process.env.QUALISEND_API_KEY!}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ email }),
signal: AbortSignal.timeout(4000),
});
if (!res.ok) return NextResponse.json({ ok: true, degraded: true }); // fail open
const { result } = await res.json();
// The submit already happened — route on the verdict instead of blocking.
if (result.status === "undeliverable" || result.sub_flags?.disposable) {
// Skip the welcome email, tag the contact for review, keep it off the main list.
}
return NextResponse.json({ ok: true, status: result.status });
}
Três coisas tornam isso robusto. Responda rápido: o Typeform espera um 2xx
rapidamente, então mantenha o handler enxuto e retorne sem demora. Fail open:
se a API der timeout ou erro, não perca o lead — aceite-o e recheque depois, e é
por isso que o ramo !res.ok ainda retorna ok: true. E verifique a
assinatura que o Typeform envia, para que um estranho não consiga fazer POST de
respostas falsas no seu endpoint — o painel Connect fornece um segredo para isso.
Uma pegadinha no payload: se o seu formulário tem mais de uma pergunta de e-mail,
ou você quer ser robusto a reordenações, faça a correspondência pelo field.ref
da resposta em vez de pegar a primeira resposta com type === "email". Defina um
ref estável na pergunta de e-mail no construtor do Typeform e leia
a.field?.ref === "your_ref", para que o endereço certo seja sempre o que você
verifica.
Depois disso, o veredito é apenas uma ramificação. Um resultado deliverable flui
direto para o seu CRM ou ferramenta de e-mail; um undeliverable ou disposable
é marcado, retido da sequência de boas-vindas ou colocado em uma fila de revisão —
o que o seu processo exigir. O webhook é o encanamento; o roteamento é seu.
A lógica de verificação em si é agnóstica de linguagem; a mesma chamada funciona a partir de uma função em Python ou PHP, se essa for a sua stack. O código de endpoint no tutorial de Node.js ou no tutorial de Python se encaixa direto em um handler de webhook — apenas a análise do payload acima é específica do Typeform.
Caminho 2: verificação em massa de uma exportação CSV#
Se você já tem uma pilha de respostas, ou prefere limpar em uma agenda em vez de montar um webhook, vá em lotes. No Typeform, abra Results → Responses e baixe os dados como CSV (ou XLSX). Você vai obter uma linha por envio, com o e-mail em sua própria coluna.
Então:
- Faça o upload do CSV para a verificação em massa da Qualisend e deixe-a rodar o pipeline completo — MX, SMTP e os sinalizadores de descartável/função/catch-all — em cada linha.
- Baixe o arquivo anotado. Cada endereço volta com um status, um código de motivo e uma pontuação de 0 a 100.
- Suprima os não entregáveis na ferramenta de onde você realmente envia, e trate as linhas arriscadas com cuidado. A rotina de ponta a ponta, incluindo onde cada status se encaixa, está em como limpar uma lista de e-mails.
O modo em massa é a ferramenta certa para um acúmulo, mas é limpeza, não prevenção: um endereço que você captura aqui geralmente já está parado na sua lista há algum tempo. Combine uma passagem em massa periódica com o webhook em tempo real, para que novos endereços ruins sejam sinalizados no momento em que chegam.
Agindo com base no veredito#
Seja qual for o caminho que entrega o resultado, o formato é o mesmo — um
status, um reason, um score e os sub-flags. Mapeie cada um para uma ação:
| Resultado | O que fazer |
|---|---|
deliverable | Aceite — adicione à sua lista e envie normalmente. |
undeliverable | Suprima. Não envie; verifique o reason para ver se é
um domínio ruim ou uma caixa de correio morta. |
sinalizador disposable | Rejeite ou marque, dependendo de quão rigoroso é o seu funil — veja endereços de função, descartáveis & gratuitos. |
risky / catch-all | Aceite, mas segmente. Um domínio catch-all não consegue confirmar a caixa de correio individual, então envie com cautela. |
unknown | Aceite e recheque depois — a infraestrutura não respondeu, então nunca descarte um lead real por causa disso. |
Perguntas frequentes#
O Typeform consegue verificar endereços de e-mail sozinho?#
Apenas o formato. O tipo de pergunta email do Typeform confirma que um endereço
está bem formado — tem um @ e um domínio —, mas não resolve registros MX nem
sonda a caixa de correio, então um endereço com erro de digitação ou descartável
que parece válido ainda passa. A verificação de verdade precisa das camadas de DNS
e SMTP que um serviço como a Qualisend adiciona por cima.
Preciso de um plano pago do Typeform para verificar e-mails em tempo real?#
Para o caminho do webhook, sim — os webhooks de saída ficam no painel Connect do Typeform, disponível nos planos pagos, então confira seu plano antes de construir o endpoint. Se você está em um plano sem webhooks, use o caminho em massa: exporte as respostas para CSV e verifique em lotes, o que funciona em qualquer plano que permita baixar os resultados.
Consigo bloquear um e-mail ruim antes de o respondente terminar o formulário?#
Não de forma confiável. O Typeform não tem uma maneira suportada de chamar uma API externa no meio do formulário e impedir que alguém envie, então a verificação em tempo real acontece logo após o envio, no webhook. Na prática, isso não é problema: você verifica em segundos e age antes que o endereço receba qualquer mensagem — você segura o e-mail de boas-vindas, marca o contato ou o encaminha para revisão, em vez de bloquear o formulário em si.
Devo usar o webhook em tempo real ou a exportação em massa via CSV?#
Use o webhook quando o momento importa — você quer receber, encaminhar ou suprimir a cada resposta conforme elas chegam. Use o modo em massa quando estiver limpando um acúmulo ou fazendo higienização periódica. A maioria das equipes faz os dois: o webhook mantém os novos cadastros limpos, e uma passagem em massa ocasional captura tudo o que escapou ou envelheceu.
Pronto para configurar? Pegue uma chave com escopo e o formato exato da requisição em a documentação para desenvolvedores, teste um único endereço em o verificador de e-mail gratuito, ou comece com os 100 créditos gratuitos em todos os planos para testar o fluxo de ponta a ponta.