alloop
Campus

Ofertas de retención

Un widget que puedes incrustar donde tu alumno va a cancelar, con ofertas que Stripe ejecuta de verdad. Funciona en cualquier web, sin depender de ningún plugin nuestro.

Cuando un alumno va a darse de baja, lo normal es perderlo en silencio. Este widget se pone en esa pantalla y le ofrece alternativas que Stripe ejecuta de verdad: pausar, cambiar de nivel, cambiar de plan o un descuento.

Funciona en cualquier web —WordPress con o sin nuestro plugin, o un HTML plano—, porque el navegador nunca ve tu secreto de servidor.

Cómo se monta

1. Tu backend acuña un token para ese alumno

Esta llamada es de servidor a servidor, con tu secreto. Nunca desde el navegador:

curl -X POST https://track.alloop.ch/membership/campus/widget-token \
  -H "Authorization: Bearer TU_SECRETO_DE_SERVIDOR" \
  -H "Content-Type: application/json" \
  -d '{"subscription_id": "sub_1ABC..."}'
{ "ok": true, "token": "eyJ…", "expires_in": 1800 }

El token dura 30 minutos y va firmado con esa suscripción dentro. Por eso puede vivir en el navegador sin riesgo: nadie puede cambiar un campo para tocar la suscripción de otro.

2. Pones el widget en tu página

<div id="alloop-campus" data-token="EL_TOKEN_DEL_PASO_1"></div>
<script src="https://track.alloop.ch/static/alloop-campus.js" defer></script>

Opcionales en el <div>: data-title, data-accent, data-cancel-text y data-api.

3. Escuchas lo que decide el alumno

El widget no cancela ni redirige por su cuenta —no sabe dónde está incrustado—. Avisa y tú decides:

const w = document.getElementById('alloop-campus');

w.addEventListener('alloop-campus:applied', (e) => {
  // Aceptó una oferta: se queda. e.detail.type es 'pause', 'next_level', 'discount'…
  location.href = '/mi-cuenta?retenido=1';
});

w.addEventListener('alloop-campus:declined', () => {
  // Dijo que no a todo: aquí sigues TÚ con tu flujo de cancelación.
  document.getElementById('mi-formulario-de-baja').hidden = false;
});

Los cinco eventos: ready, applied, declined, cooldown y error.

Las ofertas

Se configuran por cliente. Cinco tipos, y todos se ejecutan de verdad en Stripe:

TipoQué hace
next_levelLo matricula en el siguiente nivel
pauseAplaza el cobro N meses, conservando lo pagado
downgradeCambia a un plan más barato
free_daysAñade N días gratis después de lo ya pagado
discountAplica un cupón

Por qué next_level existe

Es la oferta que ningún flujo de cancelación tiene, y responde al motivo más común en una academia: "ya terminé mi nivel". A esa persona un descuento no le sirve —no se va por precio, se va porque acabó— y encima le regalas margen. Lo que la retiene es matricularla en A2.

Cambia el precio de su suscripción sin cargo inmediato: conserva lo que ya pagó y el nuevo precio entra en el siguiente ciclo. No pierde el acceso en ningún momento, que es lo último que quieres cuando estaba a punto de irse.

La pausa funciona en trimestral y anual

Muchas herramientas solo saben pausar suscripciones mensuales, y las academias venden trimestral y anual. Aquí la pausa aplaza el siguiente cobro los meses que sean, sin anular ninguna factura: pausar un plan anual no regala el año.

Tres reglas que el widget respeta

  1. Las ofertas salen por olas. Primero lo que resuelve el motivo (cambiar de nivel, pausar); el descuento aparece el último, y solo si el alumno ha dicho que no a lo anterior. Enseñar la rebaja de entrada se la regala a quien se iba a quedar de todas formas.
  2. Una vez cada 30 días por alumno (configurable). Si las ve cada vez que entra a su cuenta, aprende que hay rebajas permanentes y deja de pagar precio completo. Dentro de esa ventana el widget no pinta nada.
  3. Una oferta por suscripción. Lo impone el servidor: no se pueden encadenar pausas ni apilar descuentos.

Lo que este widget NO hace, a propósito

No abre un modal a pantalla completa, no intercepta el botón de cancelar y no manda ningún email al alumno. Es justo lo que hace que la gente odie los flujos de cancelación: acaban yéndose igual, pero enfadados. Aquí el alumno llega porque quiere irse, y se le enseña una alternativa una sola vez.

Cómo sabes que funciona

Con un alumno de prueba (test-alloop), acuña un token y abre la página. Debe verse la primera ola de ofertas. Pulsa una y comprueba en Stripe que la suscripción cambió: la confirmación del widget no es la prueba, el cambio en Stripe sí.

Si no aparece nada, revisa en este orden:

SíntomaCausa probable
El widget no pinta nadaEse alumno está en el periodo de espera de 30 días, o no hay ofertas configuradas
401 en las llamadasEl token caducó (dura 30 min) o se acuñó para otro cliente
"Ya has aplicado una oferta"Correcto: es de un solo uso por suscripción
Sale la oferta pero falla al aplicarFalta el price_id o el cupón en la configuración

Siguiente paso

Vuelve a Campus para medir la actividad que alimenta todo esto.

¿Te atascas? Pregúntale a tu IA

Pregúntale a tu IA

Esta documentación está pensada para leerse con una IA al lado. Abre tu asistente con el contexto de alloop ya cargado y pregúntale lo que necesites, en tu idioma.

Para qué NO sirve: una IA no ve tu panel, tus pagos ni tus datos, y puede equivocarse. Si un ingreso no aparece, algo toca tu producción o necesitas una respuesta oficial, escríbenos: esto no sustituye al soporte.

ClaudeChatGPTGemini

En esta página