Por qué el panel de Analytics de WooCommerce puede quedar «congelado» (y no es un error de WooCommerce)

Tabla de contenidos

Si usted nota que el panel de WooCommerce → Analytics dejó de actualizarse de un día para otro, aunque las ventas y los pedidos sigan entrando con normalidad, existe una causa muy común que casi nunca se revisa: el sistema de tareas programadas de WordPress, conocido como WP-Cron, dejó de dispararse.

WooCommerce no calcula las estadísticas de Analytics al instante. Cada vez que entra un pedido, se agenda una tarea en segundo plano encargada de sumar ese pedido a los reportes. Ese "motor" que revisa la lista de tareas pendientes y las va ejecutando se llama Action Scheduler, y depende de que WP-Cron se dispare constantemente para funcionar. Si WP-Cron se bloquea, las tareas simplemente se acumulan sin procesarse: los pedidos siguen llegando, pero las estadísticas se quedan congeladas en la última fecha en que todo funcionó bien.

Cómo detectarlo

La señal más clara es comparar dos números en WooCommerce → Estado → Acciones Programadas: si la cantidad de tareas "Pendientes" coincide exactamente con la cantidad de tareas "Vencidas" (Past-due), significa que el 100% de lo agendado nunca llegó a ejecutarse a tiempo. Esto no es un problema puntual de un plugin — es que el disparador automático dejó de funcionar por completo.

Gráfico de ventas netas y pedidos de WooCommerce Analytics mostrando un vacío de datos durante varias semanas
Antes: el gráfico muestra actividad normal y luego una caída plana, reflejo de las estadísticas que dejaron de calcularse mientras el cron estaba bloqueado.

La causa raíz suele ser un bloqueo silencioso, no una configuración faltante

En la mayoría de los casos no es que falte configurar algo, sino que existe un error 403 (Forbidden) justo en el momento en que el servidor intenta "llamarse a sí mismo" para disparar el cron (lo que se conoce como una llamada de loopback). Esa llamada interna es distinta a cuando alguien visita el sitio desde su navegador; por eso el sitio puede funcionar perfecto de cara al público mientras el cron está completamente detenido por detrás.

Los sospechosos más comunes de ese bloqueo son:

  • Un firewall o plugin de seguridad (activo o incluso mal desinstalado) con reglas residuales en el archivo .htaccess.
  • Un firewall a nivel de servidor del propio hosting, que bloquea peticiones provenientes de la IP interna.
  • Reglas de mod_security que filtran el tipo de petición que usa WP-Cron internamente.

Cómo se resuelve

El arreglo definitivo requiere trabajar en dos frentes en paralelo:

  1. Solicitar al proveedor de hosting que revise si existe una regla de firewall bloqueando las llamadas de loopback a wp-cron.php, o que configure directamente un cron real de servidor apuntando a esa URL cada 5 a 15 minutos. Esto evita depender de que el sitio se dispare solo por HTTP.
  2. Vaciar manualmente el backlog acumulado mientras se resuelve lo anterior, utilizando las herramientas de administración de WordPress para forzar la ejecución de las tareas pendientes sin esperar al disparo automático.

Antes de reprocesar todo, conviene revisar si hay tareas fallidas por errores de código de algún plugin (por ejemplo, de integraciones de email marketing), ya que esas van a fallar una y otra vez sin importar cuántas veces se reintenten. Lo recomendable es cancelarlas o eliminarlas primero, lo que libera recursos para que las tareas realmente importantes —como las de Analytics— se procesen más rápido.

Gráfico de ventas netas y pedidos de WooCommerce Analytics ya actualizado, sin vacíos de datos
Después: una vez procesado el backlog, el panel de Analytics vuelve a reflejar la actividad real de la tienda sin huecos.

La lección de fondo

Un panel de Analytics "atrasado" casi nunca significa que WooCommerce esté fallando: normalmente significa que el reloj interno del sitio se detuvo en algún momento sin avisar. Revisar periódicamente la pantalla de Acciones Programadas, aunque sea una vez al mes, es una forma sencilla de detectar este tipo de bloqueo antes de que se acumulen meses de backlog.

Preguntas frecuentes

¿Es seguro ejecutar todas las tareas programadas pendientes de una sola vez?

Sí, siempre que se haga de forma ordenada. Action Scheduler utiliza un sistema de "reclamos" que evita que una misma tarea se procese dos veces, así que no hay riesgo de duplicar pedidos ni reportes. Lo recomendable es procesar en tandas y con pausas breves entre cada una, en lugar de forzar todo de golpe, para no saturar el servidor ni las APIs externas con las que se comunican algunos plugins.

¿Qué diferencia hay entre "Cancelar" y "Delete" (eliminar) una tarea programada?

"Cancelar" cambia el estado de la tarea a "cancelada", pero el registro permanece guardado en la base de datos. "Delete" elimina la fila por completo. Para tareas que se sabe que van a fallar siempre por un error de código (por ejemplo, un plugin desactualizado) y que ya no aportan valor, eliminarlas es la opción más liviana y evita que sigan ocupando espacio innecesariamente.

Si elimino tareas programadas relacionadas con un plugin de email marketing, ¿se pierden los datos de mis clientes o de mis carritos?

No. Se elimina únicamente el registro de la tarea pendiente (la "nota" que indicaba que había que sincronizar algo), pero no el dato en sí. Los pedidos, clientes, productos y carritos permanecen intactos en las tablas correspondientes de WooCommerce y WordPress. Lo único que no ocurrirá es que ese dato puntual se sincronice retroactivamente con el servicio externo, lo cual en la práctica no representa una pérdida si ese seguimiento no se estaba utilizando de forma activa.

¿Por qué recibo un error 403 al intentar ejecutar manualmente la cola de tareas desde un plugin de gestión de cron?

Porque ese botón normalmente depende del mismo mecanismo de "loopback" que ya está bloqueado: el servidor intentando llamarse a sí mismo por HTTP. En cambio, el botón "Ejecutar" (Run) que se encuentra directamente en la pantalla de Acciones Programadas de WooCommerce corre dentro del propio proceso de la sesión de administración, por lo que no depende de esa llamada bloqueada y suele funcionar incluso mientras el problema de fondo sigue sin resolverse.

Tengo cientos de tareas pendientes del mismo tipo, ¿existe una forma de ejecutarlas todas al mismo tiempo?

La pantalla de Acciones Programadas de WooCommerce no ofrece una opción de "Ejecutar" en lote, solo permite cancelar varias a la vez. Para ejecutar un volumen alto de tareas individuales, es posible aumentar la cantidad de elementos mostrados por página desde las opciones de pantalla, o bien automatizar los clics mediante un script simple ejecutado desde la consola del navegador, siempre con una pausa breve entre cada solicitud para no sobrecargar el servidor.

¿Qué hace exactamente la tarea que sincroniza los pedidos con los reportes de Analytics?

Toma un pedido puntual (identificado por su número de pedido) y traslada su información —monto, productos, cliente, impuestos, cupones aplicados— hacia las tablas internas que alimentan los gráficos de Analytics. Cuando esta tarea queda pendiente durante un tiempo prolongado, los pedidos se siguen registrando con normalidad, pero las estadísticas visibles en el panel no reflejan esa actividad hasta que la tarea se ejecuta.

Comparte este post:

Artículos relacionados

Guía de Ecommerce Emprendedores

A short description introducing your business and the services to visitors.
Scroll al inicio