WooCommerce: como funciona a entrega de webhooks

A entrega usa o Action Scheduler no WP-Cron, então espera uma página carregar. Mais de cinco falhas seguidas desativam o webhook. Formato e verificador Node.

Comportamento de entrega

Lido na documentação do próprio provedor, verificado pela última vez em 2026-08-06. Onde o provedor não informa um número, esta tabela também não traz nenhum.

Prazo de respostanão publicado pelo provedor

A entrega entra na fila do Action Scheduler e é disparada pelo WP-Cron, então sai quando a próxima página é carregada, não quando o evento acontece

Novas tentativasnão publicado pelo provedor
DesisteWebhook desativado após mais de cinco falhas de entrega consecutivas
Fontehttps://woocommerce.com/document/webhooks/

Assinatura

Verificada com um verificador funcional, comprovado por uma suíte de testes, e não lida na documentação. Última verificação em 2026-08-20.

AlgoritmoHMAC-SHA256
Payload assinadoraw body
Codificaçãobase64
Cabeçalhox-wc-webhook-signature
Tolerâncianenhuma exigida

Verifique a assinatura

O corpo bruto da requisição, byte a byte, antes de qualquer parsing de JSON. Todos os esquemas desta página quebram no momento em que um framework serializa o payload de novo.

const crypto = require("node:crypto");

// base64(HMAC-SHA256(secret, raw body))
const expected = crypto
  .createHmac("sha256", webhookSecret)
  .update(rawBody)
  .digest("base64");
const received = Buffer.from(req.headers["x-wc-webhook-signature"] ?? "");
const wanted = Buffer.from(expected);
// timingSafeEqual throws on a length mismatch, so check that first.
const valid =
  received.length === wanted.length && crypto.timingSafeEqual(received, wanted);

Armadilhas

O webhook não dispara quando o pedido acontece. A entrega entra na fila do Action Scheduler, que roda no WP-Cron, que roda quando alguém carrega a próxima página: numa loja com pouco movimento, são minutos de atraso embutido antes de o primeiro byte sair.

Mais de cinco falhas de entrega consecutivas desativam o webhook de vez, e o dono da loja raramente percebe até que algo que depende dele fique visivelmente desatualizado.

Leia também

O AnyHook fica entre WooCommerce e seus endpoints: responde em cerca de um segundo, tenta de novo segundo um cronograma próprio quando seu servidor está fora do ar e guarda cada evento disponível para replay. Troque uma URL e mantenha seu código.

Como funciona →