Como enviar OTP pelo WhatsApp no n8n com fallback para SMS
phone e code ao webhook. O fluxo verifica se o telefone possui WhatsApp, entrega o OTP pela Wafly e, quando necessário, segue para o seu provedor de SMS.Responsabilidade da sua aplicação
O workflow entrega o código; ele não decide se o código é válido. Gere um valor imprevisível, armazene somente o necessário, defina expiração, limite tentativas por usuário e telefone e invalide o código após o uso. Isso mantém seu backend como fonte de verdade.
Como configurar
- Instale o node Wafly no n8n self-hosted e importe o JSON.
- Selecione a credencial Wafly nos nodes de verificação e envio.
- Troque o placeholder SMS fallback pelo node do provedor que sua aplicação utiliza.
- Ative o workflow e copie a Production URL do webhook.
- Faça um POST com telefone em formato internacional e o código já gerado pelo seu backend.
POST https://SEU-N8N/webhook/otp
Content-Type: application/json
{"phone":"5511999999999","code":"123456"}
Quando o envio no WhatsApp funciona, a resposta inclui canal, telefone e identificador da mensagem. Se o número não estiver disponível no WhatsApp, o fluxo segue para SMS. Se o envio falhar após as tentativas, sua aplicação recebe uma resposta de erro e pode decidir a contingência.
Teste a entrega antes de trocar sua rota atual
Rode o workflow em paralelo com seu ambiente de teste durante os três dias gratuitos.
Perguntas frequentes
Posso usar esse fluxo em login e checkout?
Sim, desde que a geração, expiração, limitação de tentativas e validação sejam feitas pelo seu sistema.
O SMS já vem configurado?
Não. O template possui um ponto explícito de fallback para você conectar o provedor de SMS de sua preferência.
O usuário precisa iniciar a conversa?
O comportamento depende da sessão e das regras aplicáveis ao número conectado. Use consentimento e valide o fluxo no seu cenário antes de colocá-lo em produção.
A Wafly é uma API não oficial conectada por QR Code. Para autenticação crítica, avalie requisitos de compliance, redundância e tolerância a indisponibilidade.