Como corrigir webhook do WooCommerce que não dispara
O que é o webhook do WooCommerce que não dispara?
Um webhook do WooCommerce é uma notificação automática que a loja envia para uma URL externa quando algo acontece, como um pedido criado ou um produto atualizado. Em vez do sistema externo ficar perguntando, o WooCommerce avisa na hora. Quando ele não dispara, a integração (ERP, automação, marketplace) fica sem receber o evento, e os dois lados saem de sincronia sem nenhum erro visível para o cliente.
Como identificar
- Em WooCommerce > Configurações > Avançado > Webhooks, o webhook aparece com o status “Desativado” sem você ter desativado.
- O log de entregas (Delivery log) do webhook mostra resposta “HTTP 0” ou tempo esgotado, indicando que a URL de destino não respondeu.
- Um novo pedido é criado, mas o sistema externo nunca recebe o payload e nenhuma linha aparece no log de entrega do webhook.
- A entrega registra “signature mismatch” no destino, sinal de que o Secret do webhook não confere com o esperado pela integração.
Como prevenir
- Monitore o Delivery log dos webhooks e reative imediatamente qualquer um que o WooCommerce desativar por falha
- Use um cron real do servidor em vez do WP-Cron padrão para garantir que a fila de entregas sempre roda
- Mantenha a Delivery URL em HTTPS válido e confirme o Secret igual nos dois lados após qualquer mudança na integração
Causa
- Webhook desativado automaticamente pelo WooCommerce após cinco falhas consecutivas de entrega, ficando com status Disabled até ser reativado manualmente.
- URL de destino (Delivery URL) errada, fora do ar ou com certificado SSL inválido, fazendo a entrega falhar e nunca chegar ao sistema externo.
- WP-Cron travado ou desativado: a entrega do webhook é agendada na fila do cron, e sem ele rodando as notificações ficam paradas.
- Secret do webhook diferente do configurado no destino, fazendo a integração rejeitar o payload por assinatura inválida e parecer que não disparou.
- Tópico (Topic) do webhook mal escolhido, escutando um evento que não acontece, ou o pedido sendo criado por um fluxo que não aciona o gancho esperado.
Como resolver
- Reative o webhook e cheque o status: em WooCommerce > Configurações > Avançado > Webhooks, abra o webhook e mude o status de Desativado para Ativo. O WooCommerce desativa o webhook sozinho após cinco falhas seguidas, então isso costuma ser o primeiro ajuste.
- Valide a Delivery URL e o SSL: confirme que a URL de destino está correta, acessível pela internet e com HTTPS válido. Teste a URL fora do site (por curl ou navegador) para garantir que ela responde 200 antes de o WooCommerce tentar entregar.
- Confira o log de entregas: no próprio webhook, abra o Delivery log e leia a última tentativa. Códigos como HTTP 0, timeout ou 401/404 dizem se o problema é rede, SSL, autenticação ou rota inexistente no destino.
- Verifique o WP-Cron: a entrega do webhook depende da fila do WP-Cron. Se o cron está travado ou desativado (define WP_CRON_DISABLE), configure um cron real do servidor chamando wp-cron.php por minuto para destravar a fila de entregas.
- Alinhe o Secret e dispare um teste: garanta que o Secret do webhook é idêntico ao configurado na integração de destino. Depois, crie um pedido de teste e confirme que uma nova linha de sucesso aparece no Delivery log.
// functions.php do tema filho — registra no log do WooCommerce cada entrega de webhook
// (ajuda a ver se o WooCommerce ESTA tentando disparar e qual resposta recebe do destino)
add_action( 'woocommerce_webhook_delivery', function ( $http_args, $response, $duration, $arg, $webhook_id ) {
$code = is_wp_error( $response ) ? $response->get_error_message() : wp_remote_retrieve_response_code( $response );
$logger = wc_get_logger();
$logger->info(
sprintf( 'Webhook #%d entregue em %.2fs — resposta: %s', $webhook_id, $duration, $code ),
array( 'source' => 'webhook-delivery-debug' )
);
}, 10, 5 );
// Veja em WooCommerce > Status > Logs (source: webhook-delivery-debug).
// Se NADA for registrado ao criar um pedido, o webhook nem esta sendo disparado (status/cron).














