Documentação Webhooks Carrinho Abandonado

Webhook - Carrinho Abandonado

Este webhook é enviado quando um cliente abandona o carrinho sem finalizar a compra.

🔔 Quando é Disparado: Este webhook é enviado quando um cliente:
• Adiciona produtos ao carrinho
• Preenche seus dados
• Mas não finaliza a compra dentro do tempo configurado (padrão: 30 minutos)

Estrutura do Payload

Campo Tipo Descrição
cart_token string Token único do carrinho abandonado
abandoned_at datetime Data e hora em que o carrinho foi considerado abandonado (ISO 8601)
cart_amount integer Valor total do carrinho em centavos
recovery_url string URL para recuperar o carrinho

Customer (cliente)

Campo Tipo Descrição
customer.name string|null Nome do cliente (se informado)
customer.email string E-mail do cliente
customer.phone string|null Telefone do cliente (se informado)

Products (produtos)

Array com os produtos no carrinho

Campo Tipo Descrição
products[x].name string Nome do produto
products[x].code string Código do produto
products[x].price integer Preço unitário em centavos
products[x].quantity integer Quantidade
products[x].image_url string|null URL da imagem do produto

UTMs (rastreamento)

Campo Tipo Descrição
utms.src string|null Origem do tráfego
utms.utm_source string|null UTM Source
utms.utm_medium string|null UTM Medium
utms.utm_campaign string|null UTM Campaign

Exemplo de Webhook

JSON Payload
{
  "cart_token": "CART_ABC123XYZ",
  "abandoned_at": "2024-10-07T15:30:00Z",
  "cart_amount": 15000,
  "recovery_url": "https://checkout.seudominio.com/r/CART_ABC123XYZ",
  "customer": {
    "name": "João Silva",
    "email": "joao.silva@example.com",
    "phone": "+5511987654321"
  },
  "products": [
    {
      "name": "Notebook Dell Inspiron",
      "code": "NOTEBOOK_001",
      "price": 12000,
      "quantity": 1,
      "image_url": "https://example.com/images/notebook.jpg"
    },
    {
      "name": "Mouse Logitech",
      "code": "MOUSE_001",
      "price": 3000,
      "quantity": 1,
      "image_url": "https://example.com/images/mouse.jpg"
    }
  ],
  "utms": {
    "src": "facebook",
    "utm_source": "facebook",
    "utm_medium": "cpc",
    "utm_campaign": "notebook_promocao"
  }
}

Casos de Uso

E-mail de Recuperação

Envie um e-mail personalizado para o cliente com um link para recuperar o carrinho, talvez com um cupom de desconto especial.

WhatsApp Automation

Dispare uma mensagem automática no WhatsApp lembrando o cliente sobre o carrinho abandonado.

Remarketing

Adicione o cliente em campanhas de remarketing no Google Ads, Meta Ads, etc.

Analytics

Registre métricas de abandono de carrinho para análise e otimização do funil de vendas.

Exemplo de Implementação

PHP
<?php

// Recebe o payload
$payload = file_get_contents('php://input');
$data = json_decode($payload, true);

// Extrai informações
$cartToken = $data['cart_token'];
$customer = $data['customer'];
$products = $data['products'];
$cartAmount = $data['cart_amount'];
$recoveryUrl = $data['recovery_url'];

// Verifica se já processou este webhook
if (webhookJaProcessado($cartToken)) {
    http_response_code(200);
    echo json_encode(['status' => 'already_processed']);
    exit;
}

// Gera um cupom de desconto especial (10% off)
$cupom = gerarCupomDesconto([
    'codigo' => 'RECUPERA' . substr($cartToken, -6),
    'desconto_percentual' => 10,
    'validade' => '+24 hours',
    'uso_unico' => true,
    'email_cliente' => $customer['email']
]);

// Prepara dados para o e-mail
$dadosEmail = [
    'nome' => $customer['name'] ?? 'Cliente',
    'produtos' => $products,
    'valor_total' => formatarValor($cartAmount),
    'valor_com_desconto' => formatarValor($cartAmount * 0.9),
    'recovery_url' => $recoveryUrl,
    'cupom_codigo' => $cupom['codigo'],
    'cupom_desconto' => '10%',
    'cupom_validade' => $cupom['validade_formatada']
];

// Envia e-mail de recuperação
enviarEmailCarrinhoAbandonado($customer['email'], $dadosEmail);

// Se tiver WhatsApp, envia mensagem também
if (!empty($customer['phone'])) {
    enviarWhatsAppCarrinhoAbandonado($customer['phone'], [
        'nome' => $customer['name'] ?? 'Cliente',
        'recovery_url' => $recoveryUrl,
        'cupom' => $cupom['codigo']
    ]);
}

// Registra no analytics
registrarEventoAnalytics('carrinho_abandonado', [
    'cart_token' => $cartToken,
    'valor' => $cartAmount,
    'produtos_quantidade' => count($products),
    'utm_source' => $data['utms']['utm_source'] ?? null,
    'utm_campaign' => $data['utms']['utm_campaign'] ?? null
]);

// Adiciona em lista de remarketing
adicionarEmListaRemarketing([
    'email' => $customer['email'],
    'lista' => 'carrinho_abandonado',
    'produtos' => array_column($products, 'code')
]);

// Marca webhook como processado
marcarWebhookComoProcessado($cartToken);

// Retorna sucesso
http_response_code(200);
echo json_encode([
    'status' => 'success',
    'cupom_gerado' => $cupom['codigo']
]);

Exemplo de E-mail de Recuperação

Template de E-mail Sugerido

Exemplo de conteúdo para recuperação de carrinho

Assunto: Esqueceu algo? Seus produtos estão te esperando!

Olá [Nome],

Notamos que você deixou alguns itens no carrinho. Que tal aproveitar agora?

E para te incentivar a finalizar a compra, preparamos um desconto especial de 10% válido por 24 horas!

Seu cupom:

RECUPERA123ABC

Finalizar Minha Compra →

Este cupom é válido até [Data de Validade]

💡 Dica de Conversão: Estudos mostram que:
• E-mails enviados 1 hora após o abandono têm taxa de conversão ~20% maior
• Cupons de desconto entre 10-15% têm melhor ROI
• Sequências de 3 e-mails (1h, 24h, 72h) maximizam recuperações

🔗 Recovery URL: O campo recovery_url é um link único que leva o cliente de volta ao carrinho exatamente como ele deixou, com todos os produtos e informações já preenchidas. Este link expira após 30 dias.