WooCommerce reduce existencias en un punto concreto del ciclo del pedido, no por el simple hecho de crear un registro. Un pedido pendiente puede reservar unidades temporalmente, mientras Processing o Completed suele indicar que el pago o la preparación avanzaron. Una pasarela personalizada puede cambiar el estado sin ejecutar el flujo normal.
No restes unidades manualmente hasta saber si WooCommerce ya registró la reducción. Repetirla puede convertir una falta de ajuste en stock descontado dos veces.
Reconstruye la cronología del pedido
Abre el pedido y revisa las notas privadas relacionadas con pago, cambio de estado y reducción de stock. Anota producto, variación, cantidad, estado actual y método de pago.
Compara la hora con los registros de la pasarela y WooCommerce. Determina si el pago quedó autorizado, capturado, rechazado o pendiente. Usa un pedido afectado como evidencia y evita cambiarlo varias veces de estado durante el análisis.
Comprueba el producto exacto
Confirma que la gestión de inventario está habilitada globalmente y revisa el producto o variación comprado.
Registra sin datos del cliente:
- ID de producto y variación de la línea
- cantidad pedida
- stock antes y después
- ajuste manage_stock
- política de pedidos pendientes
En productos variables, las existencias pueden gestionarse en la variación, en el padre o mediante código propio. Consulta el ID guardado en la línea del pedido, no solo el título visible. Un nombre igual puede ocultar variaciones distintas.
Distingue reserva y reducción
Según el checkout y el tiempo de retención configurado, WooCommerce puede reservar stock para pedidos sin pagar. La reserva afecta a la disponibilidad calculada aunque el número almacenado todavía no cambie.
Comprueba si el producto aparece agotado pese a mantener la cantidad. Revisa pedidos pendientes y cuándo vencen sus reservas. No borres reservas en bloque: un comprador puede seguir completando el pago.
Revisa estado y pasarela
Los métodos offline suelen dejar el pedido On hold. Las pasarelas pagadas normalmente llaman al proceso de pago completado. Una integración que solo asigna Processing puede omitir la reducción esperada.
$order = wc_get_order( $order_id );
if ( $order && ! wc_string_to_bool( $order->get_meta( '_order_stock_reduced' ) ) ) {
// Investigar por qué no se ejecutó el flujo compatible de reducción.
}
El marcador interno sirve para diagnosticar, no para editarlo manualmente. Forzarlo puede romper una futura cancelación o reposición.
Busca hooks e integraciones
Revisa el código mantenido por la web que llama a funciones de stock durante pagos o cambios de estado. Un ERP, almacén o marketplace puede ser la fuente autorizada y actualizar WooCommerce después.
Relaciona los registros externos con el pedido. Una exportación fallida deja una cantidad obsoleta aunque el procesamiento local sea correcto. Define un único propietario: WooCommerce ajusta y comunica, o el sistema externo devuelve el resultado; dos escritores sin idempotencia provocan deriva.
Comprueba errores y tareas
Un error PHP o MySQL puede interrumpir el proceso antes del ajuste. Correlaciona la hora con logs y Acciones programadas fallidas.
Si HPOS está activo, confirma que las extensiones son compatibles. Consultas antiguas directas a postmeta pueden leer una representación incorrecta. Repara primero el código o la tarea y luego reproduce una sola operación controlada.
Reconcilia y verifica
Compara stock físico, cantidad en WooCommerce, reservas y pedidos del intervalo afectado. Decide qué ventas pagadas debían descontar unidades. Aplica una corrección compatible y auditable una vez; no cambies estados históricos para generar efectos secundarios.
Realiza después un pedido de control. Verifica reserva, pago, una única reducción, cancelación y reembolso según la política. El mantenimiento recurrente debe alertar sobre pedidos pagados sin nota de reducción y sincronizaciones fallidas.