Autenticação do POST
Se você configurou umsecret, valide o header X-Webhook-Signature (HMAC-SHA256 do JSON do body):
Eventos (configuração → payload)
corvex.order.pending é interno e não é enviado a endpoints de lojistas.
Pedidos — exemplo completo (corvex.order.paid)
Valores em reais (decimal), não centavos. Dados fictícios; na prática alguns campos podem vir ausentes ou null — trate sempre com segurança.
corvex.order.created, corvex.order.cancelled, corvex.order.refunded) usam a mesma forma; mudam event, status, method e campos como paidAt (só em paid).
status e method
Campos condicionais
client.doc usa TIPO:NÚMERO (ex.: CPF:...) ou "N/A".
Carrinho abandonado
Disparo após 90 segundos de desconexão no checkout, com webhook configurado paraCART_ABANDONED. Não dispara se o visitante voltar no prazo, se já pagou, ou sem contato mínimo (nome + telefone) ou (nome + e-mail).
Exemplo completo (corvex.cart.abandoned)
method, paidAt nem pix_code. O id do payload é o checkout, não o pedido.
Boas práticas
Resposta rápida
Resposta rápida
Responda 2xx dentro do
timeout do webhook (configurável na API v1; padrão 30s). Processamento pesado faça em fila assíncrona.Retries
Retries
Falhas podem ser reenviadas conforme
retryAttempts do webhook (padrão 3). Implemente idempotência no seu lado.Idempotência
Idempotência
Use
event + id (+ leadId em carrinho abandonado) para não processar duas vezes.Ordem
Ordem
A ordem de chegada não é garantida. Use
timestamp para ordenar.Teste
Teste
No painel Webhooks → Enviar teste, ou exponha local com ngrok e cadastre a URL via POST /api/v1/webhooks.
Eventos legados do painel
O dashboard pode listar outros tipos (SUBSCRIPTION_*, PAYMENT_*, etc.) com formato { "event", "data", "timestamp", "webhookId", "storeId" }. Para integrações novas, use apenas os cinco eventos corvex.* desta página.
Baseado na documentação de webhook do Readme (v1.1.2).