Operação

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

Este artigo também está disponível em: English · Español

O que cada plataforma envia, e quando

PlataformaEventoTelefoneAtraso e detalhes
------------
Hotmart (2.0.0)PURCHASE_OUT_OF_SHOPPING_CARTdata.buyer.phone, com código do paísComeça quando a pessoa preenche nome ou e-mail; a Hotmart verifica a cada 30 minutos
Kiwifycarrinho_abandonadoBloco do payload de carrinho; confira em Testar WebhookFormato próprio, sem webhook_event_type nem order_status
Eduzzcart_abandonment (referência sun.cart_abandonment)data.customer.phoneTraz 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.

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.