Atualizado em 25/10/2026
Para infoprodutores, a API oficial do WhatsApp liga a plataforma de pagamento ao WhatsApp do comprador: quando a venda é aprovada, o postback (webhook) da plataforma chega ao seu sistema, que envia na hora um template de utilidade com o link de acesso. O mesmo fluxo avisa PIX e boleto gerados e ainda não pagos, e o suporte acontece na janela de 24 horas aberta quando o aluno responde. Tudo pelo número oficial do produtor, sem depender de celular ou de ferramenta não oficial.
Este guia mostra o fluxo completo, os templates de cada etapa, um exemplo de código para receber o postback e as regras da Meta que separam utilidade de marketing nessa operação.
Os três momentos em que o WhatsApp faz diferença
| Momento | Gatilho | Mensagem | Categoria provável |
|---|---|---|---|
| Acesso liberado | Postback de compra aprovada | Link da área de membros e login | Utilidade |
| Pagamento pendente | Postback de PIX ou boleto gerado | Lembrete com o link de pagamento | Utilidade, se não tiver persuasão |
| Suporte | Mensagem do aluno | Respostas livres, humanas ou automáticas | Serviço, dentro da janela |
Carrinho abandonado (a pessoa saiu do checkout sem gerar pagamento) é outro caso. A Meta diz explicitamente que lembretes de carrinho são marketing, mesmo que o usuário tenha pedido. Veja recuperação de PIX, boleto e carrinho abandonado.
Pré-requisitos
- Número registrado na API oficial e templates aprovados. Se você está começando, leia o guia da API oficial do WhatsApp.
- Plataforma de pagamento com notificação por webhook (postback) para os eventos de compra. Confira na documentação da sua plataforma quais eventos ela envia e como validar a origem da requisição.
- Telefone do comprador coletado no checkout, com um aviso claro de que ele vai receber mensagens sobre a compra pelo WhatsApp.
- Um serviço que receba o postback e chame a API do WhatsApp. Pode ser código próprio ou uma ferramenta como n8n.
Os templates
Acesso liberado
{
"name": "acesso_liberado",
"language": "pt_BR",
"category": "UTILITY",
"components": [
{
"type": "BODY",
"text": "Olá, {{1}}. Seu pagamento de {{2}} foi aprovado e o seu acesso já está liberado. Entre com o e-mail {{3}} pelo botão abaixo.",
"example": { "body_text": [["Paula", "Curso Exemplo", "paula@email.com"]] }
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Acessar a área de membros",
"url": "https://membros.exemplo.com/entrar/{{1}}",
"example": ["https://membros.exemplo.com/entrar/a1b2c3"]
}
]
}
]
}
É uma confirmação da compra que o cliente fez, sem oferta. Não coloque “aproveite também o nosso outro curso” aqui: a Meta diz que mensagens de pedido não podem promover produtos, fazer upsell ou cross-sell, e um template que mistura utilidade e marketing é classificado como marketing. Veja como a Meta classifica templates.
Pagamento pendente (PIX ou boleto)
No Brasil, boa parte das compras sai por PIX (pagamento instantâneo do Banco Central, com QR Code ou código copia e cola) ou boleto (título bancário com vencimento, pago em banco ou aplicativo, cuja compensação não é instantânea). Quando a plataforma gera o pagamento e ele não é concluído, um lembrete costuma ajudar.
{
"name": "pagamento_pendente",
"language": "pt_BR",
"category": "UTILITY",
"components": [
{
"type": "BODY",
"text": "Olá, {{1}}. Seu pedido de {{2}} está aguardando o pagamento por {{3}}, com vencimento em {{4}}. Se você já pagou, pode desconsiderar este aviso.",
"example": { "body_text": [["Paula", "Curso Exemplo", "boleto", "28/10/2026"]] }
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "URL",
"text": "Ver pagamento",
"url": "https://pagamento.exemplo.com/{{1}}",
"example": ["https://pagamento.exemplo.com/pedido123"]
}
]
}
]
}
O exemplo da própria Meta para utilidade inclui lembretes de pagamento. O que leva para marketing é a persuasão: “últimas vagas”, “o preço vai subir”, “garanta já”, bônus para quem pagar hoje. Se você quer esse tom, crie um template de marketing e envie só para quem tem opt-in de marketing.
Código: do postback ao template
Um serviço em Node.js que recebe o postback, confere a origem, transforma o evento da plataforma em um evento seu e envia o template certo. Os nomes de eventos e campos variam de plataforma para plataforma, por isso o código usa uma camada de tradução.
import express from 'express';
const app = express();
app.use(express.json());
// Traduza os eventos da sua plataforma para eventos internos.
// Os nomes à esquerda são exemplos; use os da documentação da sua plataforma.
const EVENTOS = {
'compra.aprovada': 'aprovada',
'pix.gerado': 'pendente',
'boleto.gerado': 'pendente',
'compra.reembolsada': 'reembolsada',
};
app.post('/postback', async (req, res) => {
if (req.get('x-token-plataforma') !== process.env.TOKEN_PLATAFORMA) {
return res.sendStatus(401);
}
res.sendStatus(200);
const p = req.body;
const evento = EVENTOS[p.evento];
if (!evento) return;
const pedido = await salvarPedido(p); // idempotente: ignore repetidos
if (pedido.jaProcessado(evento)) return;
if (evento === 'aprovada') {
const token = await liberarAcesso(pedido);
await enviarTemplate(pedido.telefone, 'acesso_liberado',
[pedido.primeiroNome, pedido.produto, pedido.email], token);
}
if (evento === 'pendente') {
await agendar(pedido.id, '2h', async () => {
if ((await buscarPedido(pedido.id)).status !== 'pendente') return;
await enviarTemplate(pedido.telefone, 'pagamento_pendente',
[pedido.primeiroNome, pedido.produto, pedido.metodo, pedido.vencimento], pedido.idPagamento);
});
}
if (evento === 'reembolsada') await revogarAcesso(pedido);
});
async function enviarTemplate(to, name, corpo, sufixoUrl) {
return fetch('https://apis.vectalk.com.br/api/messages', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.VECTALK_TOKEN}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
messaging_product: 'whatsapp',
to,
type: 'template',
template: {
name,
language: { code: 'pt_BR' },
components: [
{ type: 'body', parameters: corpo.map((text) => ({ type: 'text', text })) },
{ type: 'button', sub_type: 'url', index: '0', parameters: [{ type: 'text', text: sufixoUrl }] },
],
},
}),
});
}
Três detalhes que evitam dor de cabeça:
- Idempotência. Plataformas reenviam postbacks quando não recebem resposta rápida. Guarde o ID do pedido e o evento, e não mande o mesmo template duas vezes.
- Espera antes do lembrete. Um PIX gerado pode ser pago minutos depois. Esperar um intervalo e conferir o status de novo evita cobrar quem já pagou.
- Validação da origem. Use o token ou a assinatura que a sua plataforma oferece. O cabeçalho do exemplo é ilustrativo.
Suporte na janela de 24 horas
Quando o aluno responde qualquer mensagem, abre-se a janela de atendimento de 24 horas, e você pode responder com texto livre, áudio, vídeo, PDF e botões sem novo template. Dúvidas comuns de infoproduto (não recebi o e-mail, esqueci a senha, onde está a aula, quero o certificado) cabem bem em um menu com botões ou em um assistente automático com passagem para humano. A política do WhatsApp Business exige caminhos claros para o atendimento humano quando há automação.
Para mensagens automáticas de boas-vindas e fora do horário, veja boas-vindas e ausência na API. Para entender o que pode ser enviado dentro e fora da janela, veja janela de 24 horas do WhatsApp.
Lançamentos, aulas ao vivo e avisos
Aviso de aula ao vivo para quem se inscreveu, lembrete de evento e abertura de carrinho são casos diferentes. Lembrar o inscrito do horário da aula que ele marcou pode ser utilidade; anunciar a abertura de vendas é marketing. Veja avisos de evento: utilidade ou marketing. Para campanhas, use opt-in de marketing e respeite o limite de mensagens do portfólio. Veja disparo em massa pela API oficial.
Opt-in e LGPD
A política do WhatsApp Business exige que a pessoa tenha fornecido o número e dado permissão para receber mensagens da sua empresa, e que pedidos para parar sejam respeitados. No checkout, um texto como “Vou receber mensagens sobre minha compra e meu acesso pelo WhatsApp” cobre as mensagens transacionais. Para ofertas, peça um opt-in separado. A LGPD (Lei 13.709/2018) também se aplica ao telefone e ao e-mail do comprador; avalie com o seu jurídico a base legal e o prazo de guarda. Este artigo não substitui orientação jurídica. Veja como montar uma lista opt-in.
Como fazer com a Vectalk
Na Vectalk, você cria os templates com POST /templates, envia com POST /messages (type: "template", com botão de URL dinâmica) e recebe as respostas dos alunos no webhook registrado com POST /webhooks, no mesmo formato da Meta. A Vectalk usa a Cloud API oficial e paga a Meta por você, então você não precisa cadastrar cartão na Meta. Veja a documentação de templates e crie sua conta.
Perguntas frequentes
Posso mandar o acesso por texto livre em vez de template?
Só se o comprador tiver falado com você pelo WhatsApp nas últimas 24 horas. Na maioria das compras, não falou, então o acesso precisa ir por template.
Lembrete de boleto é utilidade ou marketing?
Um lembrete neutro de pagamento de um pedido que o cliente gerou tende a ser utilidade. Se tiver urgência artificial, bônus ou desconto, vira marketing. A Meta tem a palavra final.
E carrinho abandonado?
A Meta classifica lembretes de carrinho como marketing. Use template de marketing e envie só para quem deu opt-in.
A plataforma mandou o mesmo postback duas vezes. O aluno vai receber dois acessos?
Só se o seu sistema não tratar repetição. Guarde o ID do pedido e o evento, e ignore o que já foi processado.
Preciso de um número só para o produto?
Não é obrigatório. O número oficial da marca pode cuidar de acesso e suporte. Se você tem várias marcas, números separados ajudam na organização e no nome de exibição.
Fontes oficiais consultadas em 25/10/2026: Diretrizes de categorias de template, Templates de utilidade, Preços, Limites de mensagens, Política de Mensagens do WhatsApp Business, Lei 13.709/2018 (LGPD), Documentação da API da Vectalk.
