Documentação Webhooks Nova Venda

Webhook - Nova Venda

Este webhook é enviado sempre que uma nova venda é criada no sistema, independente do status de pagamento.

Quando é Disparado: Este webhook é disparado imediatamente após a criação de uma venda, quando o cliente finaliza o checkout e uma cobrança é gerada.

Atenção: Neste momento, o pagamento ainda está pendente. Use o webhook de Atualização de Status para confirmar quando o pagamento for aprovado.

Estrutura do Payload

O payload deste webhook é idêntico ao webhook de Atualização de Status, mas sempre com status como "pending".

Exemplo de Webhook

JSON Payload
{
  "event": "order.created",
  "title": "Wrath Store | Pedido gWswsHZo Created",
  "platform": "AproveiCheckout",
  "orderId": "gWswsHZo",
  "status": "pending",
  "statusName": "Pendente",
  "paymentMethod": "pix",
  "createdAt": "2026-02-20T00:28:39.000000Z",
  "updatedAt": "2026-02-20T00:28: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": null,
    "sck": null,
    "utm_source": null,
    "utm_campaign": null,
    "utm_medium": null,
    "utm_content": null,
    "utm_term": null
  },
  "trackingNumber": null,
  "payments": [
    {
      "payment_method": "pix",
      "transaction_id_gateway": "40694866",
      "amount": "51.00",
      "installments": 1,
      "paid_at": null
    }
  ],
  "store": {
    "id": 4,
    "name": "Wrath Store",
    "slug": "wrath-store"
  }
}

Casos de Uso

Analytics

Registre métricas de vendas iniciadas, mesmo que o pagamento ainda não tenha sido confirmado.

Notificações

Envie um e-mail para o cliente confirmando que o pedido foi criado e está aguardando pagamento.

Registro

Crie um registro do pedido no seu sistema para acompanhamento, mesmo antes da confirmação do pagamento.

Remarketing

Adicione o cliente em listas de remarketing para recuperar vendas não concluídas.

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'];
$event = $data['event'];
$customer = $data['customer'];
$products = $data['products'];
$amount = $data['commission']['totalPriceInCents'];

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

// Cria o pedido no sistema com status "aguardando pagamento"
$pedidoId = criarPedido([
    'order_id' => $orderId,
    'customer_name' => $customer['name'],
    'customer_email' => $customer['email'],
    'customer_phone' => $customer['phone'],
    'customer_cpf' => $customer['document'],
    'amount' => $amount,
    'products' => $products,
    'status' => 'awaiting_payment',
    'payment_method' => $data['paymentMethod'],
    'created_at' => $data['createdAt']
]);

// Envia e-mail para o cliente
enviarEmailPedidoCriado($customer['email'], [
    'pedido_id' => $pedidoId,
    'nome' => $customer['name'],
    'valor' => formatarValor($amount),
    'produtos' => $products
]);

// Registra evento no analytics
registrarEventoAnalytics('venda_iniciada', [
    'order_id' => $orderId,
    'valor' => $amount,
    'produtos' => count($products),
    'utm_source' => $data['trackingParameters']['utm_source'] ?? null,
    'utm_campaign' => $data['trackingParameters']['utm_campaign'] ?? null
]);

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

// Retorna sucesso
http_response_code(200);
echo json_encode([
    'status' => 'success',
    'pedido_id' => $pedidoId
]);

Fluxo Completo

Entenda o fluxo completo de webhooks de uma venda:

Etapa 1

Nova Venda (Este Webhook)

Cliente finaliza o checkout → Venda criada com status pending

Etapa 2

Pagamento Confirmado

Cliente paga via PIX → Webhook de Atualização enviado com status paid

Etapa 3

Estorno (Opcional)

Se houver estorno ou chargeback → Webhook de Atualização com status refunded ou chargeback

Dica: Não confie apenas neste webhook para liberar produtos ou serviços. Sempre aguarde o webhook de Atualização de Status com status: "paid" antes de liberar o acesso.