🎉 USE O CUPOM DESCONTO.FULL | 20% OFF acima de R$ 50,00

Como corrigir webhook do WooCommerce que não dispara

Time Full Services Time Full Services
Tipo WooCommerce
Nome do erro Webhook do WooCommerce não dispara EN: WooCommerce webhook not firing
Severidade Atenção
Descrição O webhook do WooCommerce não dispara quando um evento da loja, como um novo pedido, deveria notificar um sistema externo, mas a chamada nunca sai ou nunca chega. Quase sempre vem do webhook ficar com status Desativado após falhas, da URL de destino inacessível ou com SSL inválido, ou do WP-Cron travado.

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.
Antes de começar: Não exponha a Delivery URL nem o Secret do webhook publicamente, e prefira destinos em HTTPS para o payload não trafegar em texto puro. Teste a reativação e o cron em staging antes de aplicar numa loja no ar.

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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
PHP
// 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).

Perguntas frequentes

Por que meu webhook do WooCommerce ficou desativado sozinho
O WooCommerce desativa automaticamente um webhook depois de cinco entregas falhas seguidas, para não insistir num destino quebrado. Corrija a causa da falha (URL, SSL ou destino fora do ar) e reative o webhook em WooCommerce > Configurações > Avançado > Webhooks.
O webhook não dispara ao criar um pedido. Por onde começo
Primeiro confira se o status está Ativo e leia o Delivery log do webhook. Se nenhuma tentativa aparece ao criar o pedido, o problema é o status ou o WP-Cron parado. Se a tentativa aparece com erro, o problema está na URL ou no destino.
O WP-Cron influencia na entrega do webhook
Sim. A entrega do webhook é agendada na fila do WP-Cron e processada quando o cron roda. Se o WP-Cron está desativado ou travado, as notificações ficam paradas. Configurar um cron real do servidor chamando wp-cron.php destrava a fila.
O que significa HTTP 0 no log de entrega do webhook
HTTP 0 indica que o WooCommerce não conseguiu sequer conexão com a Delivery URL: destino fora do ar, DNS errado, firewall bloqueando ou certificado SSL inválido. Teste a URL por fora do site (curl ou navegador) para confirmar que ela responde antes de tentar de novo.
Recebo signature mismatch no destino do webhook. Como resolvo
O Secret do webhook no WooCommerce precisa ser exatamente igual ao configurado na integração de destino, pois ele assina o payload. Copie o mesmo Secret nos dois lados e dispare um pedido de teste para confirmar que a assinatura passa a bater.
Como faço um teste do webhook sem esperar um pedido real
Crie um pedido de teste no painel ou edite um produto que esteja no tópico do webhook para acionar o evento. Depois abra o Delivery log do webhook e confirme que uma nova linha com resposta de sucesso (HTTP 200) foi registrada.

Seja PRO.

Tenha acesso a snippets de código premium — PHP, JavaScript, CSS e HTML prontos para usar em seus projetos.

Conhecer o plano Pro →

Uma nova era para o WordPress.

A FULL Services redefine o CMS com uma arquitetura modular que transforma o WordPress em um motor de crescimento digital. 

Painéis personalizados

Um novo nível de controle para o WordPress. Acompanhe métricas, automações e evolução do seu site em um único painel visual.

A força por trás de grandes marcas

Para agências, estúdios e profissionais independentes que desejam oferecer soluções de alto nível com sua própria marca.

Componentes

Hero Sections

30 componentes

Seções de CTA

14 componentes

Login

14 componentes

Blog

14 componentes

Cabeçalhos

24 componentes

Seções de FAQ

53 componentes

Cadastro

53 componentes

Blog individual

53 componentes

Rodapés

28 componentes

Seções de contato

27 componentes

Seções de preços

27 componentes

Faixas

27 componentes

Portfólio

16 componentes

Seções de equipe

12 componentes

Números

12 componentes

Logotipos

12 componentes