El estado de inventario de WooCommerce no cambia o se revierte: causas y soluciones
Pones un producto en En inventario (In stock), el editor dice que se ha guardado y, al recargar, vuelve a estar Agotado (Out of stock). O Agotado (Out of stock) vuelve una y otra vez como En reserva (On backorder), o una cantidad que has escrito desaparece. Cuando el estado de inventario de WooCommerce no cambia, casi nunca ha fallado el guardado: WooCommerce ha recalculado el estado a partir de otros campos en el mismo momento de guardar el producto, y lo hace igual en su propia pantalla de producto y en BEAR. En cuanto sabes qué campos deciden el estado, cada caso tiene una solución breve.
Qué decide el estado de inventario en WooCommerce
Todo depende de Gestionar inventario (Manage stock), el interruptor que le indica a WooCommerce que cuente las unidades del producto.
| Gestionar inventario | De dónde sale el estado |
|---|---|
| Desactivado | El estado es un campo normal: se conserva lo que establezcas. En cada guardado WooCommerce vacía la cantidad y pone los pedidos pendientes en No permitir (Do not allow), porque sin contar unidades no tienen sentido. |
| Activado | El estado se calcula en cada guardado. Cantidad por encima del Umbral de agotado (Out of stock threshold): En inventario (In stock). Si no, con pedidos pendientes permitidos: En reserva (On backorder). Si no: Agotado (Out of stock). Un estado que elijas a mano se reemplaza al instante. |
El Umbral de agotado (Out of stock threshold) es una opción global de la tienda en WooCommerce → Ajustes → Productos → Inventario (Inventory), con un valor de 0 por defecto. Si está en 2, un producto con 2 unidades pasa a Agotado (Out of stock) la próxima vez que se guarde o se venda, lo que explica la mayoría de los casos de «agotado con cantidad positiva».
Los productos variables añaden una capa más:
- Un producto variable que no gestiona el inventario por sí mismo toma su estado de sus variaciones: En inventario (In stock) si al menos una variación está en inventario; si no, En reserva (On backorder) si alguna lo está; si no, Agotado (Out of stock). Un estado puesto en un padre así se reemplaza a partir de las variaciones en cuanto se guarda.
- Una variación con su propio Gestionar inventario (Manage stock) funciona como un producto simple. Una variación sin él, bajo un padre que gestiona el inventario, vende de la cantidad compartida del padre. En una variación donde ninguno de los dos cuenta unidades, el estado lo fijas a mano.
Por qué el editor muestra un estado y la tienda otro
La celda del estado de inventario es un desplegable. Cuando eliges un valor, BEAR lo envía, WooCommerce guarda el producto y recalcula, y la celda sigue mostrando la opción que elegiste junto con el mensaje Guardado (Saved). El valor recalculado aparece solo cuando la tabla se carga de nuevo. Ese es el síntoma clásico: el estado «cambia» y, tras ir a otra página y volver, es el anterior.
La tabla también es una instantánea del momento en que se cargó. Los pedidos hechos desde entonces pueden haber reducido cantidades y cambiado estados que la página abierta no muestra. Recárgala antes de juzgar un valor.
Soluciones para cada síntoma
Agotado vuelve a En reserva
El producto gestiona el inventario, su cantidad es igual o inferior al umbral y los pedidos pendientes están permitidos. En esa situación WooCommerce siempre elegirá En reserva (On backorder). Pon Permitir pedidos pendientes (Allow backorders) en No permitir (Do not allow) y el estado pasa a Agotado (Out of stock) por sí solo; no hace falta establecer el estado. En la pestaña Edición masiva (Bulk Edit), Permitir pedidos pendientes (Allow backorders) está en la sección Adicional (Additional) y su columna está desactivada por defecto en el editor. En la versión gratuita no forma parte de las operaciones masivas, así que cámbialo producto por producto en su celda (consulta las limitaciones de la versión gratuita).
No se puede poner En inventario
El producto gestiona el inventario y su cantidad es 0, o no supera el umbral. Tienes dos caminos. Si cuentas este producto, introduce la cantidad real: el estado la sigue. Si no lo cuentas (bajo pedido, servicios, dropshipping), pon primero Gestionar inventario (Manage stock) en No y después establece el estado, en dos pasos separados como se explica más abajo.
La cantidad que escribiste desaparece
El producto no gestiona el inventario, así que WooCommerce descarta el número al guardar. BEAR se ocupa de un caso por ti: una cantidad de 0 o menos activa Gestionar inventario (Manage stock), partiendo de que quieres que WooCommerce empiece a contar, y el estado pasa entonces a Agotado (Out of stock) o En reserva (On backorder). Un número positivo en un producto sin gestión de inventario simplemente no se conserva. Activa primero Gestionar inventario (Manage stock) y luego introduce la cantidad. Si no quieres que un 0 active la gestión, devuelve false en el filtro woobe_stock_quantity_dependency (functions.php del tema hijo o un plugin de fragmentos de código):
add_filter( 'woobe_stock_quantity_dependency', '__return_false' );
Hay dos lugares que nunca admiten una cantidad: un producto variable que no gestiona el inventario (su inventario vive en las variaciones) y una variación que vende del inventario compartido de su padre. Cambia la cantidad compartida en el producto padre.
Una ejecución masiva o dos: el orden de los campos
Cuando hay varios campos marcados en la pestaña Edición masiva (Bulk Edit), BEAR los aplica a cada producto uno tras otro, en el orden del formulario: primero la sección Básico (Basic) (cantidad en inventario (in stock quantity), luego Establecer: estado de inventario (Set: stock status)) y después la sección Adicional (Additional) (Gestionar inventario (Manage stock), luego Permitir pedidos pendientes (Allow backorders)). Cada paso guarda el producto y WooCommerce recalcula el estado cada vez. Por eso, dos combinaciones no dan lo que parecen prometer:
| Marcados a la vez | Qué ocurre | Qué hacer en su lugar |
|---|---|---|
| Gestionar inventario: No (Manage stock: No) + Establecer: estado de inventario (Set: stock status) En inventario | El estado se escribe mientras el producto aún cuenta unidades y se recalcula; después se desactiva el recuento y se queda el estado calculado. | Ejecuta primero Gestionar inventario: No (Manage stock: No) y luego el estado en una segunda ejecución. |
| Gestionar inventario: Sí (Manage stock: Yes) + cantidad en inventario (in stock quantity) 25 | La cantidad se escribe mientras el producto todavía no cuenta unidades y se descarta; después se activa el recuento sin cantidad y el producto queda agotado. | Ejecuta primero Gestionar inventario: Sí (Manage stock: Yes) y luego la cantidad. |
Desactivar Gestionar inventario (Manage stock) nunca restablece el estado: un producto que estaba agotado sigue agotado hasta que lo cambies. BEAR guarda aparte la última cantidad cuando desactivas el recuento y la restituye si vuelves a activarlo en BEAR. Ambas ejecuciones quedan en la pestaña Historial (History) y se pueden revertir. Una excepción en BEAR 2.2.4: Historial guarda el estado de inventario anterior solo como en inventario o no, así que un producto que estaba En reserva (On backorder) (o con un estado personalizado) vuelve como Agotado (Out of stock) tras una reversión. Revisa esos productos después de revertir y devuélveles su estado. La guía general de estos campos está en BEAR como gestor de inventario de WooCommerce.
Productos variables y variaciones
Para cambiar lo que ven los clientes en un producto variable, cambia sus variaciones. Activa variaciones (variations) en el panel de herramientas: el editor mostrará entonces las variaciones de los productos de la página, y las operaciones masivas se aplicarán solo a las variaciones (consulta productos variables y sus variaciones). El estado del padre las sigue una vez guardadas.
Un caso habitual tras una importación o una migración desde otro sistema de tienda: todas las variaciones llegaron con Gestionar inventario (Manage stock) activado y algunas con cantidad 0, de modo que el tema muestra etiquetas de «agotado» en productos que están disponibles. Filtra por el tipo de producto variable, activa variaciones (variations) y introduce las cantidades reales, o bien pon Gestionar inventario: No (Manage stock: No) y, en una segunda ejecución, Establecer: estado de inventario (Set: stock status) en En inventario (In stock).
El filtrado funciona con esos mismos valores almacenados. El filtro de estado de inventario de la pestaña Filtros (Filters) compara el estado propio de cada producto y no coincide con las variaciones, de modo que un producto variable con tres tallas agotadas de cinco sigue estando En inventario (In stock) y no aparece en Agotado (Out of stock). Para encontrar variaciones agotadas, usa el filtro de cantidad en inventario, que lee las cantidades de las variaciones y las devuelve junto con sus productos padre.
Inventario que cambia solo
BEAR no tiene tareas en segundo plano: escribe el inventario únicamente cuando alguien ejecuta una edición en él. Si su servidor MCP está activado, un asistente de IA conectado a él también puede editar el inventario. La pestaña Historial indica quién hizo cada cambio y si se hizo a mano o a través del asistente de IA (un administrador ve los cambios de todos), así que un cambio que no está en Historial no lo hizo BEAR. Las fuentes habituales están en otra parte:
- Pedidos. Un pedido reduce la cantidad cuando está pagado, en procesamiento o en espera, un pedido cancelado la devuelve y, con pedidos pendientes permitidos, la cantidad baja de cero.
- Plugins de sincronización e inventario. Los conectores con sistemas de contabilidad, ERP, TPV o almacén suelen traer los niveles de inventario de forma programada y sobrescriben lo que introdujiste, a veces con números muy por debajo de cero. Busca la opción que importa niveles de inventario y decide qué sistema es la fuente de verdad.
- Una caché de objetos persistente. Con Redis o Memcached, WordPress guarda los datos de producto en memoria. Una herramienta de sincronización que escribe directamente en la base de datos, sin pasar por WooCommerce, deja intacta la copia en caché, así que BEAR y la tienda siguen mostrando la cantidad antigua hasta que esa entrada de caché caduca o se vacía. Vaciar la caché de objetos lo confirma; la solución duradera es una herramienta de sincronización que guarde los productos a través de WooCommerce.
Si el estado no se puede guardar en ningún sitio
Prueba el mismo cambio en la pantalla de edición de producto de WooCommerce, en la pestaña Inventario (Inventory). Si tampoco se mantiene allí, lo deciden los campos anteriores u otro plugin: un plugin de preventa, reservas o inventario que se engancha al guardado del producto puede forzar su propio estado. Encuéntralo desactivando plugins en una copia de pruebas, como se describe en aislar conflictos entre plugins. Si allí funciona y en BEAR no, revisa los cambios del editor masivo que no se guardan.
Una comprobación rápida antes de nada: ¿el producto gestiona el inventario?, ¿qué cantidad tiene?, ¿están permitidos los pedidos pendientes?, ¿cuál es el Umbral de agotado (Out of stock threshold) y ¿es un producto variable cuyas variaciones deciden? Esas cinco respuestas explican casi cualquier estado que no cambia. Si el tuyo no encaja, pregunta en el foro de soporte de BEAR.