Voltar para o Blog
05 de junho de 2026 WhatsApp E-commerce Webhooks Automação

Como criar um fluxo de recuperação de carrinhos abandonados via WhatsApp usando webhooks nativos

Como criar um fluxo de recuperação de carrinhos abandonados via WhatsApp usando webhooks nativos

Construa um funil automatizado de alta conversão conectando sua plataforma de e-commerce ao WhatsApp via webhooks e APIs.

O abandono de carrinho é uma das maiores dores do e-commerce global. Estatísticas do setor indicam que cerca de 70% dos consumidores adicionam itens ao carrinho de compras, mas saem da loja sem finalizar a transação. Embora o e-mail marketing tradicional continue sendo uma ferramenta útil, suas taxas de abertura raramente superam os 20%. Por outro lado, o WhatsApp apresenta taxas de abertura superiores a 95% e taxas de resposta que podem triplicar a recuperação de vendas.

Neste artigo técnico, vamos explorar como construir um sistema automatizado e resiliente para recuperar carrinhos abandonados em tempo real, conectando sua plataforma de e-commerce (como Shopify, WooCommerce ou Nuvemshop) à API do WhatsApp utilizando webhooks nativos e um orquestrador de automação (n8n ou Node.js).


O que é um Fluxo de Recuperação via Webhook?

[!NOTE] Definição Direta: Um fluxo de recuperação por webhook é uma arquitetura orientada a eventos onde a plataforma de e-commerce dispara uma notificação HTTP POST imediata (webhook) contendo os dados do cliente e do carrinho no exato momento em que um abandono é detectado. O servidor de automação processa essa requisição, aplica regras de atraso inteligente e aciona a API do WhatsApp para enviar uma mensagem personalizada com um link direto para o checkout com os itens pré-carregados.


Estrutura do Fluxo de Automação

O ciclo de vida do evento de abandono de carrinho segue quatro etapas principais descritas abaixo:

graph TD
    A[Cliente Abandona Checkout] -->|1. Webhook Event| B(Servidor de Automação - n8n/Node.js)
    B -->|2. Validação e Filtro| C{Já comprou nos últimos 30 min?}
    C -->|Sim| D[Encerrar Fluxo]
    C -->|Não| E[Aguardar Delay de 20-30 min]
    E -->|3. Formatar Mensagem| F[Chamar API do WhatsApp]
    F -->|4. Envio| G[Smartphone do Cliente com Link de Checkout]

Resumo dos Componentes do Sistema

ComponenteFunção PrincipalTecnologia Recomendada
Origem do EventoMonitorar o carrinho e disparar o webhook de “Checkout Abandonado”Shopify, WooCommerce API, Hotmart Webhooks
OrquestradorReceber, filtrar, aplicar delay e estruturar o payload de envion8n (Self-hosted) ou microsserviço Node.js
Validador de EstadoEvitar envio de mensagens se o cliente concluir a compra posteriormenteConsulta ao Banco de Dados do E-commerce ou CRM
Canal de DisparoEnviar a mensagem para o número do cliente de forma estável e seguraWhatsApp Business Cloud API ou gateways de API (Z-API, Evolution)

Guia de Implementação Passo a Passo

Passo 1: Recebimento e Estrutura do Webhook

Quando um checkout é abandonado, sua plataforma envia um payload JSON. Abaixo está um exemplo típico do payload recebido pelo webhook:

{
  "event": "checkout.abandoned",
  "created_at": "2026-06-15T14:30:00Z",
  "customer": {
    "first_name": "Erick",
    "last_name": "Nascimento",
    "phone": "5511999999999",
    "email": "[email protected]"
  },
  "cart": {
    "checkout_url": "https://sualoja.com.br/checkout/pay?token=abc123xyz",
    "total_price": 450.00,
    "currency": "BRL",
    "items": [
      {
        "product_name": "Teclado Mecânico Keychron K2",
        "quantity": 1,
        "price": 450.00
      }
    ]
  }
}

Passo 2: Otimização e Limpeza de Dados (Node.js/n8n)

Antes de enviar os dados para a API do WhatsApp, é preciso higienizar as variáveis, garantindo que o número de telefone esteja formatado corretamente no padrão internacional exigido pelo WhatsApp (DDI + DDD + Número, sem espaços ou caracteres especiais).

Insira um nó de código para preparar o payload de envio:

// Nó de processamento do webhook (JavaScript)
const input = items[0].json;

// Função para limpar e validar telefone brasileiro
function formatBrazilianPhone(phone) {
  let clean = phone.replace(/\D/g, ''); // Remove tudo que não for dígito
  
  // Se não tiver o código do país (55), adiciona
  if (clean.length === 11 && !clean.startsWith('55')) {
    clean = '55' + clean;
  }
  
  // Lógica para tratar o dígito 9 adicional do Brasil
  // O WhatsApp Business API costuma ignorar o nono dígito em algumas regiões antigas
  // Mas para envio direto, manter o número formatado recebido pela plataforma costuma funcionar
  return clean;
}

return [{
  json: {
    phone: formatBrazilianPhone(input.customer.phone),
    firstName: input.customer.first_name,
    productName: input.cart.items[0].product_name,
    checkoutUrl: input.cart.checkout_url,
    totalPrice: new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(input.cart.total_price)
  }
}];

Passo 3: Adicionando Delay Inteligente e Verificação de Compra

Enviar uma mensagem no exato segundo em que o cliente fecha a aba da loja pode parecer invasivo. A melhor prática aponta para um intervalo de 20 a 30 minutos.

No seu orquestrador (como o n8n), utilize um nó de Wait (Atraso) configurado para 20 minutos. Antes de prosseguir para o envio do WhatsApp após o término do delay, faça uma consulta à API do seu e-commerce buscando o status de pedidos daquele e-mail/telefone. Se houver um pedido pago ou criado nos últimos 20 minutos, aborte o fluxo imediatamente para evitar o envio de mensagens duplicadas ou inconvenientes.

Passo 4: Disparo via API do WhatsApp

Se a verificação confirmar que a compra continua pendente, dispare uma requisição HTTP POST para o gateway do WhatsApp. Se estiver usando o WhatsApp Business Cloud API (Meta), você enviará um modelo de mensagem pré-aprovado (Message Template):

POST https://graph.facebook.com/v17.0/YOUR_PHONE_NUMBER_ID/messages
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

{
  "messaging_product": "whatsapp",
  "to": "{{$json.phone}}",
  "type": "template",
  "template": {
    "name": "recuperacao_carrinho_dinamico",
    "language": {
      "code": "pt_BR"
    },
    "components": [
      {
        "type": "body",
        "parameters": [
          {
            "type": "text",
            "text": "{{$json.firstName}}"
          },
          {
            "type": "text",
            "text": "{{$json.productName}}"
          }
        ]
      },
      {
        "type": "button",
        "sub_type": "url",
        "index": "0",
        "parameters": [
          {
            "type": "text",
            "text": "checkout/pay?token=abc123xyz" 
          }
        ]
      }
    ]
  }
}

Nota: A URL do botão dinâmica é concatenada usando parâmetros dinâmicos de acordo com a estrutura do seu template cadastrado no Meta Business Suite.


Melhores Práticas para Conversão e Conformidade

  1. Políticas de Opt-in: Envie mensagens de recuperação apenas para usuários que preencheram ativamente seus dados de contato na página de checkout e deram consentimento implícito ou explícito para comunicações transacionais.
  2. Facilidade de Opt-out: Sempre ofereça uma saída clara na mensagem, como: “Se não deseja receber mais mensagens, responda SAIR”. O n8n pode capturar essa resposta via webhook de entrada do WhatsApp e atualizar o cadastro do cliente no CRM/Banco de dados como “unsubscribed”.
  3. Abordagem Consultiva: Em vez de focar apenas no desconto, inicie a mensagem com suporte técnico: “Olá, [Nome]! Vi que você não concluiu a compra do [Produto]. Ocorreu algum problema com o pagamento ou você tem alguma dúvida técnica?”. Isso gera conexões de atendimento humanizado e eleva a conversão de vendas B2B e B2C complexas.