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
{
"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
// 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
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.