E-commerces que enviam notificações por WhatsApp têm taxas de abertura acima de 90% — contra 20-25% do e-mail. Neste tutorial, você aprende a automatizar todo o ciclo de notificações de pedido: confirmação, envio, entrega e solicitação de avaliação.
O que você vai construir
Um sistema de notificações automáticas que envia mensagens WhatsApp em 4 momentos:
- Pedido confirmado (pagamento aprovado)
- Pedido enviado (código de rastreio)
- Pedido entregue
- Solicitação de avaliação (2 dias após entrega)
Pré-requisitos
- Node.js 18+
- Conta na ZAP API com instância conectada
- Sistema de e-commerce com webhooks de pedido (Shopify, WooCommerce, ou próprio)
Configuração inicial
npm install axios
Crie um módulo whatsapp.js reutilizável:
const axios = require('axios');
const zap = axios.create({
baseURL: 'https://zap-api.tech/v1',
headers: { Authorization: 'Bearer ' + process.env.ZAP_TOKEN }
});
const INSTANCE = process.env.ZAP_INSTANCE;
async function enviarWhatsApp(phone, message) {
try {
const { data } = await zap.post('/instances/' + INSTANCE + '/send', {
phone,
type: 'text',
body: message
});
return data;
} catch (err) {
console.error('Erro ao enviar WhatsApp:', err.message);
return null; // Falha de notificacao nao derruba o fluxo principal
}
}
module.exports = { enviarWhatsApp };
Notificação 1: Pedido confirmado
const { enviarWhatsApp } = require('./whatsapp');
async function onPagamentoAprovado(pedido) {
const msg = [
'Ola, ' + pedido.cliente.nome + '!',
'',
'Seu pedido #' + pedido.numero + ' foi confirmado.',
'',
'Itens: ' + pedido.itens.map(function(i) { return i.nome; }).join(', '),
'Total: R$' + pedido.total.toFixed(2),
'',
'Em breve voce receberá o codigo de rastreio.',
'Qualquer duvida, responda esta mensagem.'
].join('\n');
await enviarWhatsApp(pedido.cliente.telefone, msg);
}
Notificação 2: Pedido enviado (com rastreio)
async function onPedidoEnviado(pedido, codigoRastreio, transportadora) {
const msg = [
'Boa noticia, ' + pedido.cliente.nome + '!',
'',
'Seu pedido #' + pedido.numero + ' foi enviado.',
'',
'Transportadora: ' + transportadora,
'Codigo de rastreio: ' + codigoRastreio,
'',
'Acompanhe em: https://rastreio.net/' + codigoRastreio,
'',
'Prazo estimado: ' + pedido.prazoEntrega + ' dias uteis.'
].join('\n');
await enviarWhatsApp(pedido.cliente.telefone, msg);
}
Notificação 3: Pedido entregue
async function onPedidoEntregue(pedido) {
const msg = [
pedido.cliente.nome + ', seu pedido chegou!',
'',
'Pedido #' + pedido.numero + ' entregue com sucesso.',
'',
'Em 2 dias te pediremos uma avaliacao rapida.',
'Qualquer problema, e so responder aqui!'
].join('\n');
await enviarWhatsApp(pedido.cliente.telefone, msg);
// Agendar solicitacao de avaliacao para 2 dias depois
const doisDias = 2 * 24 * 60 * 60 * 1000;
setTimeout(function() { solicitarAvaliacao(pedido); }, doisDias);
}
Notificação 4: Solicitação de avaliação
async function solicitarAvaliacao(pedido) {
const linkAvaliacao = 'https://sua-loja.com.br/avaliar/' + pedido.id;
const msg = [
'Oi, ' + pedido.cliente.nome + '! Como foi sua experiencia?',
'',
'Avalie seu pedido #' + pedido.numero + ' em 30 segundos:',
linkAvaliacao,
'',
'Sua opiniao nos ajuda a melhorar. Obrigado!'
].join('\n');
await enviarWhatsApp(pedido.cliente.telefone, msg);
}
Integrar ao webhook do seu e-commerce
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhooks/pedidos', async (req, res) => {
res.json({ ok: true }); // Responda 200 imediatamente
const { evento, pedido } = req.body;
const telefone = formatarTelefone(pedido.cliente.telefone);
const pedidoFormatado = { ...pedido, cliente: { ...pedido.cliente, telefone } };
switch (evento) {
case 'pagamento_aprovado':
await onPagamentoAprovado(pedidoFormatado);
break;
case 'pedido_enviado':
await onPedidoEnviado(pedidoFormatado, pedido.rastreio, pedido.transportadora);
break;
case 'pedido_entregue':
await onPedidoEntregue(pedidoFormatado);
break;
}
});
function formatarTelefone(telefone) {
return telefone.replace(/\D/g, '').replace(/^0/, '55');
}
app.listen(3000);
Boas práticas para não ter a conta banida
- Responda 200 rapidamente antes de processar — nunca deixe o webhook aguardar
- Personalize as mensagens — nunca envie texto idêntico para todos
- Respeite o opt-out — se o cliente pedir para sair, remova da lista
- Horário comercial — não envie antes das 8h ou após as 21h
- Rate limiting — a ZAP API já aplica throttling, mas evite picos súbitos
Resultado esperado
Com esse sistema implementado, seus clientes recebem notificações em cada etapa do pedido sem nenhuma ação manual da sua equipe. Taxa de abertura acima de 90%, redução de tickets de "onde está meu pedido" e aumento na taxa de avaliações positivas.
Conclusão
Automatizar notificações WhatsApp é uma das formas mais eficazes de melhorar a experiência no e-commerce. Com a ZAP API, você começa em minutos a partir de R$29/mês* — sem aprovação da Meta e com trial de 7 dias sem cartão.