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
event string Tipo do evento (cart.abandoned)
title string Título do pedido
platform string Plataforma de origem
orderId string Identificador único do carrinho abandonado
status string Status (abandoned)
statusName string Nome do status (Abandonado)
paymentMethod string|null Método de pagamento (se aplicável)
createdAt datetime Data de criação (ISO 8601)
updatedAt datetime Data da última atualização (ISO 8601)
approvedDate datetime|null Nulo para carrinho abandonado
refundedAt datetime|null Nulo para carrinho abandonado

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)
customer.document string|null CPF do cliente (se informado)
customer.ip string|null Endereço IP do cliente

Products (produtos)

Array com os produtos no carrinho

Campo Tipo Descrição
products[x].id integer ID do produto
products[x].name string Nome do produto
products[x].quantity integer Quantidade
products[x].priceInCents integer Preço unitário em centavos
products[x].priceFinalInCents integer Preço final em centavos
products[x].image string|null URL da imagem do produto

Commission (comissão)

Campo Tipo Descrição
commission.totalPriceInCents integer Valor total em centavos
commission.checkoutFeeInCents integer Taxa do checkout em centavos
commission.gatewayFeeInCents integer Taxa do gateway em centavos
commission.userCommissionInCents integer Comissão do usuário em centavos

Address (endereço)

Campo Tipo Descrição
address.street string|null Logradouro
address.number string|null Número
address.complement string|null Complemento
address.neighborhood string|null Bairro
address.city string|null Cidade
address.state string|null Estado (UF)
address.zipcode string|null CEP
address.country string|null País (código ISO)

TrackingParameters (rastreamento)

Campo Tipo Descrição
trackingParameters.src string|null Origem do tráfego
trackingParameters.sck string|null Parâmetro Sck
trackingParameters.utm_source string|null UTM Source
trackingParameters.utm_campaign string|null UTM Campaign
trackingParameters.utm_medium string|null UTM Medium
trackingParameters.utm_content string|null UTM Content
trackingParameters.utm_term string|null UTM Term

Store (loja)

Campo Tipo Descrição
store.id integer ID da loja
store.name string Nome da loja
store.slug string Slug da loja

Exemplo de Webhook

JSON Payload
{
  "event": "cart.abandoned",
  "title": "Wrath Store | Pedido gWswsHZo Abandoned",
  "platform": "AproveiCheckout",
  "orderId": "gWswsHZo",
  "status": "abandoned",
  "statusName": "Abandonado",
  "paymentMethod": null,
  "createdAt": "2026-02-20T00:28:39.000000Z",
  "updatedAt": "2026-02-20T00:58:39.000000Z",
  "approvedDate": null,
  "refundedAt": null,
  "customer": {
    "name": "João Miguel Costa",
    "email": "joaomiguel.costa@outlook.com",
    "phone": "1522664885",
    "document": "67743776450",
    "ip": "127.0.0.1"
  },
  "products": [
    {
      "id": 25,
      "name": "Cortina Blackout",
      "quantity": 1,
      "priceInCents": 4200,
      "priceFinalInCents": 4200,
      "image": null
    }
  ],
  "commission": {
    "totalPriceInCents": 5100,
    "checkoutFeeInCents": 77,
    "gatewayFeeInCents": 528,
    "userCommissionInCents": 1195
  },
  "address": {
    "street": "Rua Coriolano Durand",
    "number": "34159",
    "complement": null,
    "neighborhood": "Vila Santa Catarina",
    "city": "São Paulo",
    "state": "SP",
    "zipcode": "04375050",
    "country": "BR"
  },
  "trackingParameters": {
    "src": "facebook",
    "sck": null,
    "utm_source": "facebook",
    "utm_campaign": "notebook_promocao",
    "utm_medium": "cpc",
    "utm_content": null,
    "utm_term": null
  },
  "trackingNumber": null,
  "payments": [],
  "store": {
    "id": 4,
    "name": "Wrath Store",
    "slug": "wrath-store"
  }
}

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
$orderId = $data['orderId'];
$customer = $data['customer'];
$products = $data['products'];
$cartAmount = $data['commission']['totalPriceInCents'] ?? 0;

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

// Gera um cupom de desconto especial (10% off)
$cupom = gerarCupomDesconto([
    'codigo' => 'RECUPERA' . substr($orderId, -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),
    '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',
        'cupom' => $cupom['codigo']
    ]);
}

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

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

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

// 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: Use o orderId para construir um link que leva o cliente de volta ao carrinho exatamente como ele deixou, com todos os produtos e informações já preenchidas.