Carrinho abandonado de infoproduto no WhatsApp: receita para Kiwify, Hotmart e Eduzz
Quem chega ao checkout e sai quase comprou. As plataformas de infoproduto sabem disso e enviam um evento de carrinho abandonado por webhook. Esta receita mostra o que cada uma envia, com que atraso, como testar o fluxo antes de qualquer cliente e como escrever as duas mensagens da recuperação sem soar como pressão.
Publicado em · 4 min de leitura
O que cada plataforma envia, e quando
| Plataforma | Evento | Telefone | Atraso e detalhes |
|---|---|---|---|
| --- | --- | --- | --- |
| Hotmart (2.0.0) | PURCHASE_OUT_OF_SHOPPING_CART | data.buyer.phone, com código do país | Começa quando a pessoa preenche nome ou e-mail; a Hotmart verifica a cada 30 minutos |
| Kiwify | carrinho_abandonado | Bloco do payload de carrinho; confira em Testar Webhook | Formato próprio, sem webhook_event_type nem order_status |
| Eduzz | cart_abandonment (referência sun.cart_abandonment) | data.customer.phone | Traz data.saleRecoveryUrl, o link do checkout para voltar |
Na prática, a mensagem nunca chega no segundo em que a pessoa fecha a aba. Na Hotmart, o atraso de até 30 minutos já está no desenho do evento. Escreva o texto sabendo disso: 'vi que você começou a se inscrever' funciona melhor que 'você acabou de sair'. Detalhes de cada plataforma em Hotmart, Kiwify e Eduzz.
Caminho sem código: o assistente Recuperar vendas
No painel da ZapZap, abra Fluxos e clique em Recuperar vendas. Escolha a plataforma, o objetivo 'Recuperar carrinho abandonado' e o número. O assistente cria o webhook e um fluxo já ligado, com uma mensagem imediata e um lembrete 30 minutos depois, e mostra a URL no formato https://api.zapzapapi.com/api/webhooks/flow/{segredo}. Cole a URL na plataforma, marque o evento de carrinho e salve.
Se você informar a chave da plataforma no assistente, a ZapZap valida a origem de cada evento: o hottok da Hotmart no cabeçalho X-HOTMART-HOTTOK, o HMAC-SHA1 do parâmetro signature da Kiwify e o HMAC-SHA256 do x-signature da Eduzz. Sem chave, só o segredo da URL protege o webhook. A ZapZap detecta sozinha onde estão telefone, nome e produto no payload e ignora o mesmo telefone no mesmo fluxo por 10 minutos, o que absorve reentregas.
Teste antes de qualquer cliente
Não espere um cliente real abandonar o carrinho para saber se funciona. Dispare um evento falso com o seu próprio número usando curl e leia a resposta. A resposta {"ok":true,"triggered":1} diz que o fluxo disparou; triggered: 0 diz que não houve telefone detectado ou que o mesmo número já recebeu esse fluxo nos últimos 10 minutos. Depois abra o webhook no editor e veja a amostra e o campo que foi detectado como telefone.
Terminal (curl)
# Test the recovery flow with a fake abandoned cart (your own number only)
curl -X POST 'https://api.zapzapapi.com/api/webhooks/flow/YOUR_SECRET' \
-H 'Content-Type: application/json' \
-d '{"id":"test-cart-1","event":"PURCHASE_OUT_OF_SHOPPING_CART","version":"2.0.0",
"data":{"product":{"id":1,"name":"Test course"},
"buyer":{"name":"Maria Test","email":"maria@example.com","phone":"5511999990001"},
"offer":{"code":"abc123"}}}'
# expected: {"ok":true,"triggered":1} (triggered 0 = no phone detected, or same number within 10 minutes)As duas mensagens: ajuda primeiro, urgência depois e só se for verdade
A primeira mensagem deve oferecer ajuda e não cobrar a compra. Exemplo: 'Oi, Maria. Vi que você começou a se inscrever no curso X e não finalizou. Ficou alguma dúvida sobre o conteúdo ou o pagamento? Posso ajudar por aqui.' Ela cita o produto, aceita que a pessoa possa ter desistido e abre a conversa.
A segunda, 30 minutos depois, só faz sentido se houver um motivo real: o link de volta (na Eduzz, saleRecoveryUrl), uma condição de pagamento que você de fato oferece, um prazo de lote que de fato existe. Escassez inventada queima a confiança e é o tipo de coisa que a pessoa denuncia. Depois da segunda, pare: a ZapZap não dispara terceira mensagem sozinha, e você também não deveria.
Consentimento e limites
O carrinho abandonado é um contato derivado de uma compra iniciada: a pessoa deixou o telefone no seu checkout. Isso é diferente de prospectar uma lista fria. Ainda assim, deixe claro na página de checkout que o contato por WhatsApp pode acontecer, ofereça saída em cada mensagem e respeite o pedido. O guia de LGPD no WhatsApp detalha a base legal.
E uma limitação honesta: o webhook genérico da ZapZap aceita 120 requisições por minuto por webhook (acima disso responde 429) e dispara pelo telefone detectado; se o telefone vier sem DDD, como pode acontecer em compras da Hotmart, o fluxo não dispara e você precisa de um endpoint seu para juntar DDD e número. A ZapZap conecta números por um canal não oficial e gerenciado, então nenhuma recuperação é isenta de risco de bloqueio.
Resumo rápido
- Hotmart verifica carrinhos a cada 30 minutos; Eduzz traz o link de volta em saleRecoveryUrl; Kiwify usa payload próprio.
- O assistente Recuperar vendas, em Fluxos, monta webhook e fluxo sem código e valida a assinatura quando você informa a chave.
- Teste com curl no seu número: triggered: 1 dispara, triggered: 0 pede diagnóstico do telefone.
- Duas mensagens no máximo, a primeira oferecendo ajuda e a segunda só com um motivo real.
Continue lendo
Perguntas frequentes
A mensagem sai assim que a pessoa fecha o checkout?
Não. Na Hotmart, o evento é verificado a cada 30 minutos. Nas outras plataformas o atraso não está documentado do mesmo jeito. Escreva a mensagem sem fingir que o cliente acabou de sair.
Funciona com qualquer plataforma?
O assistente tem Kiwify, Hotmart, Eduzz, Monetizze e Yampi. Para outras, o webhook genérico do editor de fluxos detecta o telefone no payload se ele vier completo. Se o payload não tiver telefone, como no Asaas, o caminho é um endpoint seu.
O fluxo respondeu triggered: 0. O que fazer?
Veja a amostra do webhook no editor. Causas comuns: o telefone não veio ou não tem de 10 a 13 dígitos, o telefone saiu de outro campo, ou o mesmo número já recebeu o fluxo nos últimos 10 minutos.
Posso mandar uma terceira mensagem?
Tecnicamente pode, mas não deve. Depois de duas mensagens, quem não respondeu provavelmente não quer. Insistir aumenta denúncia, e denúncia é a principal causa de limitação de número.
Preciso validar a assinatura do webhook?
É recomendável. Sem a chave da plataforma salva, qualquer um que descobrir a URL pode disparar o fluxo. Com a chave, a ZapZap recusa com 401 o evento cuja assinatura não bate.
Posso usar o assistente em produto de afiliado?
Só se o produtor liberar os dados do comprador, incluindo o telefone. Sem essa liberação, o webhook chega sem telefone e o fluxo não dispara.
Recupere a venda que quase aconteceu
Use o assistente de Recuperação de Vendas ou o seu próprio endpoint. R$15 por número ativo ao mês, com crédito de boas-vindas sujeito à campanha vigente.
