Pular para o conteúdo principal

O que são Webhooks?

Webhooks permitem que sua aplicação receba notificações automáticas quando eventos importantes acontecem na sua loja, como um pedido aprovado, reembolsado ou criado. Ao invés de fazer polling na API para verificar mudanças, os webhooks enviam uma requisição HTTP POST para a URL que você configurar.

Eventos disponíveis

O evento ORDER_UPDATED é disparado sempre que um administrador edita o pedido pelo painel. Caso a atualização também resulte em uma mudança de status para APPROVED ou REFUNDED, os eventos correspondentes (ORDER_APPROVED / ORDER_REFUNDED) também são disparados. Assine apenas os que fizerem sentido para o seu fluxo.

Formato do payload

Todos os webhooks seguem um formato padronizado:
O conteúdo de data varia conforme o grupo do evento. Veja abaixo o formato de cada um:
Todos os eventos ORDER_* (ORDER_CREATED, ORDER_UPDATED, ORDER_APPROVED, ORDER_REJECTED, ORDER_ABANDONED, ORDER_REFUNDED, ORDER_CHARGEDBACK) compartilham o mesmo formato: o campo data contém os mesmos dados retornados pela API de detalhes do pedido, incluindo pacotes, variáveis, entregas e outros detalhes.
Trazem o produto no campo data.package:
Traz o estado do produto antes e depois da edição, para que você compare o que mudou:
Traz o produto afetado em data.package e as chaves que foram adicionadas e removidas naquela edição:
Disparado quando o cliente envia uma avaliação do pedido. Traz a avaliação em data.feedback, junto com a identificação do pedido avaliado:
is_public reflete a configuração de publicação automática da loja no momento do envio. Avaliações que entram como privadas só aparecem na loja depois de publicadas, pelo painel ou pelo endpoint PATCH /app/feedback/{feedback-id}.
Disparado quando o cliente envia uma mensagem no chat do pedido. Mensagens da loja não disparam o evento, inclusive as que a sua própria integração enviar: assim o seu sistema não recebe de volta o que ele mesmo acabou de mandar.
Para responder, use o endpoint POST /app/order/{order-id}/chat/messages com o internal_id que vem em data.order.

Respondendo o cliente pelo chat

Os webhooks entregam o que acontece na loja, e a API do chat é o caminho de volta: com os dois, a sua automação conversa com o cliente sem ninguém abrir o painel.
1

Assine CHAT_MESSAGE_CREATED

Cadastre um webhook com esse evento para receber as mensagens que o cliente enviar.
2

Responda pela API

Chame POST /v1/app/order/{order-id}/chat/messages com o internal_id do pedido. A chave de API precisa do escopo chat:write.
3

Acompanhe pelo painel

As mensagens enviadas pela API aparecem no chat do painel, e o atendente pode assumir a conversa a qualquer momento.
A mensagem chega na hora para quem está com a página do pedido aberta. Se o cliente já tiver saído, ele recebe um e-mail avisando que a loja respondeu, no máximo um a cada seis horas por conversa.
Só dá para escrever em pedido que já tem chat. O chat nasce na aprovação do pedido, quando algum produto comprado está configurado para entrega por chat; nos demais, o endpoint responde 404.

Segurança (HMAC-SHA256)

Cada webhook possui um secret único gerado na criação. Todas as requisições são assinadas com HMAC-SHA256 para garantir autenticidade.

Headers de segurança

Verificando a assinatura

Para verificar a autenticidade do webhook, recalcule a assinatura usando o secret do webhook:

Configuração

Webhooks podem ser configurados em Configurações > Webhooks no painel da CentralCart, ou via API.

Boas práticas

Responda rápido

Retorne um status 2xx o mais rápido possível. Processe o evento de forma assíncrona se necessário.

Idempotência

Use o campo id do payload para evitar processar o mesmo evento duas vezes.

Verifique a assinatura

Sempre valide o header x-centralcart-signature antes de processar o evento.

Timeout

Requisições têm timeout de 10 segundos. Se seu servidor não responder a tempo, o envio será considerado como falha.