Una renovación no se disparó
Una suscripción debía renovar pero no aparece pedido de renovación. Recorre las cinco comprobaciones de abajo en orden — están ordenadas de causa más probable a menos probable. En el ~80% de los casos el problema está en la primera o la segunda.
Comprobación 1: cola de Action Scheduler
Cada renovación es un trabajo de Action Scheduler. Ve a WooCommerce → Estado → Acciones programadas y filtra por el término aswc_scheduled_subscription_payment. Quieres ver una fila para el ID de la suscripción.
- Ninguna fila — la renovación nunca se programó. Salta a comprobación 3 (estado de suscripción) o comprobación 5 (toggle maestro).
- Fila en estado "Pendiente" con fecha programada en el pasado — el scheduler no está ejecutando. Pasa a comprobación 2.
- Fila en estado "Fallido" — pulsa la fila para ver la excepción. Lo más común: la pasarela lanzó error (pasa a comprobación 4).
- Fila en estado "Completo" pero sin pedido creado — raro. Mira las notas de la suscripción; el job corrió pero un filtro (
aswc_should_create_renewal_order) puede haber vetado.
Comprobación 2: wp-cron está realmente corriendo
Action Scheduler se apoya en wp-cron por defecto. En un sitio con poco tráfico, wp-cron solo dispara cuando alguien visita una página, así que una renovación programada para las 03:00 puede no correr hasta la siguiente visita varias horas más tarde.
- Configura un cron de SO real:
* * * * * curl -s https://tu-tienda.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1 - O usa un servicio de cron gestionado (la mayoría de hostings WordPress tienen uno).
- Desactiva el cron integrado de WP en
wp-config.php:define( 'DISABLE_WP_CRON', true );
Comprobación 3: estado de la suscripción
Solo las suscripciones en estado active se programan para renovar. Revisa la página de detalle (admin o Mi Cuenta):
on-hold— la renovación previa falló. Págala manualmente o espera al reintento.paused— el cliente o el admin pausaron. Las renovaciones quedan suspendidas hasta reanudar.cancelled/expired— terminal. No volverán a disparar renovaciones nunca.scheduled— la fecha de inicio aún no ha llegado. Revisa la fecha de Próximo pago en la suscripción.
Comprobación 4: conexión con la pasarela
Si el job de Action Scheduler corrió pero la llamada a la pasarela falló:
- Abre WooCommerce → Estado → Logs y filtra por el slug de la pasarela (
stripe,paypal,redsys,woocommerce-payments). - Mira el error más reciente. Causas habituales: billing agreement de PayPal revocado, tarjeta caducada sin fallback, secreto de webhook de Stripe rotado, clave SHA-256 de Redsys desincronizada.
- Prueba la pasarela con un pedido suelto. Si una compra nueva también falla, el problema está en la pasarela, no en la suscripción.
Comprobación 5: toggle maestro del plugin
El plugin tiene un toggle global en WooCommerce → Ajustes → Suscripciones → General — opción aswc_gen_tab_enable. Si está en off, la lógica de renovación no corre aunque Action Scheduler siga encolando los jobs. Confirma que está en on.
Hooks relevantes
aswc_scheduled_subscription_payment— el hook de Action Scheduler del que cuelga cada renovación.aswc_renewal_payment_failed— se dispara en fallo de pasarela; sitio ideal para enviar a Sentry/Datadog.aswc_should_create_renewal_order— devuelve false para vetar una renovación (raro, pero revísalo si has añadido uno).