Configurar reintentos
Cuando un pago de renovación falla, el plugin no se rinde de inmediato. Programa reintentos con backoff exponencial, envía emails de dunning al cliente y solo marca la suscripción como cancelada cuando se agota el presupuesto de reintentos. Esta página cubre la política por defecto, los toggles de admin y la escape hatch del pago manual.
Política de reintentos por defecto
De fábrica, cuando una renovación falla el plugin programa hasta 3 reintentos:
| Intento | Cuándo | Qué pasa |
|---|---|---|
| Original | Hora de renovación programada | La suscripción pasa a on-hold, sale email de dunning. |
| Reintento 1 | +1 día | Re-cobro. Si éxito → active. Si fallo → programa siguiente reintento. |
| Reintento 2 | +3 días | Re-cobro. Misma lógica. |
| Reintento 3 | +7 días | Intento final. Si falla, la suscripción pasa a cancelled. |
Ventana de gracia total: ~11 días. Suficiente para que un cliente actualice una tarjeta caducada, sin alargar tanto que falsee tus cifras de churn.
Ajustes de admin
Los toggles viven en WooCommerce → Ajustes → Advanced Subscriptions → Payments:
- Enable automatic retry of failed attempts
- Interruptor maestro (
aswc_enable_automatic_retry_failed_attempts). Off = la renovación falla una vez y la suscripción se cancela de inmediato. Recomendado: on. - Cancel after N failed attempts
- El umbral (
aswc_after_no_failed_attempt_cancel). Por defecto 3. Súbelo si quieres un periodo de gracia más largo, bájalo si quieres cortar cuentas malas más rápido. - Accept manual payment
- (
aswc_enbale_accept_manual_payment— el typo en la clave es intencional, así viaja.) Añade un botón "Pagar ahora" en Mi Cuenta del cliente para rescatar una renovación fallida sin esperar al siguiente reintento. Recomendado: on.
Emails de dunning
El cliente recibe un email en el fallo original y (opcionalmente) en cada intento de reintento:
- Primer fallo: "Tu renovación ha fallado. Reintentaremos en 24h. Haz clic aquí para pagar manualmente ahora."
- Último reintento agotado: "No hemos podido procesar tu renovación. Tu suscripción ha sido cancelada. Botón Reactivar."
Las plantillas viven en /includes/loader/emails/ y se pueden sobreescribir desde tu theme (tu-theme/woocommerce/emails/). Ver Resumen de emails.
La escape hatch del pago manual
Con Accept manual payment activado, el cliente ve un botón Pagar ahora en el pedido de renovación fallida desde Mi Cuenta. Al pulsarlo:
- Se abre un formulario de una página pre-rellenado con el importe y el método de pago guardado.
- El cliente puede opcionalmente elegir un método de pago distinto (por ejemplo una tarjeta fresca).
- Intenta el cargo on-session (así funcionan los retos 3DS).
- Si éxito, marca la renovación como pagada y reactiva la suscripción. Todos los reintentos programados para esta renovación se cancelan.
Es el mecanismo de recuperación más efectivo. La mayoría de fallos de "cartera" (tarjeta caducada, bloqueada, saldo bajo) se resuelven cuando se le dice al cliente y se le da un fix de un solo clic.
Personalizar la política desde código
Puedes sobreescribir el calendario de reintentos por suscripción con un filtro:
// Clientes VIP: más reintentos, ventana más larga
add_filter( 'aswc_retry_schedule', function ( $schedule, $subscription ) {
if ( $subscription->get_user()->has_role( 'vip' ) ) {
return [ '+2 days', '+7 days', '+14 days', '+30 days' ];
}
return $schedule;
}, 10, 2 );
Hooks relevantes
aswc_renewal_payment_failed— se dispara en cada intento de renovación fallido.aswc_after_no_failed_attempt_cancel— filtra el umbral de reintentos por suscripción.aswc_retry_schedule— sobreescribe el calendario de backoff.