De un lead que aparece a un cliente que se va. Es el puente entre los objetivos y los requerimientos: explica por qué los requerimientos son estos y no otros.
Un cliente no está cerrado hasta que su app está apagada. Por eso el final tiene dos cajas y no una: mientras siga prendida, el cliente se fue pero el costo no.
Llegó y todavía nadie lo contactó.
Acá nace el cliente. No es una entidad aparte que después se convierte: es el mismo registro en su primer estado.
Se lo está trabajando.
No compró. Con el motivo anotado.
El motivo importa tanto como el cierre. Diez perdidos por precio es un problema distinto que diez perdidos porque nadie los contestó.
Acordó el plan y la suscripción está creada, pero todavía no la aprobó en PayPal.
Ya pagó, pero todavía no tiene el carrito andando.
El tramo más incómodo del ciclo: el cliente ya te pagó y no tiene nada. Faltan tres cosas — que dé acceso a su Shopify, que se haga el deploy del carrito, y que la app de fly.io quede vinculada a él.
Carrito andando y cobrando todos los meses.
Es el único estado que genera MRR. Todo lo demás cuesta o no aporta.
Le falló un pago.
Acá se juega el objetivo 2. Detectarlo en menos de 24 horas es la diferencia entre recuperarlo y perderlo.
Dos o más fallos, o suspendido hace más de 90 días. Técnicamente se puede recuperar.
Don Gato Kids estuvo acá 22 meses sin que nadie lo mirara, con su app prendida todo ese tiempo.
Se fue. Su app puede seguir prendida y costando plata.
Cancelado NO es cerrado. Mientras la app siga prendida, el cliente se fue pero el costo no.
Se fue y su infraestructura está apagada. Dejó de costar.
Este estado existe por una razón concreta: en agosto de 2026, gonama-origenesuy seguía corriendo a USD 8,80 por mes desde que Orígenes canceló en febrero. Nadie lo escondía — no había ningún lugar donde eso se viera.
11 caminos posibles. Los que tienen una nota al pie ya pasaron de verdad.
Llega el lead, se lo contacta, acuerda, aprueba la suscripción en PayPal, paga, da acceso a su Shopify, se le hace el deploy del carrito y la app queda vinculada. Ojo con el orden: paga antes de tener nada andando.
No compró. Se cierra con el motivo. Un prospecto que nadie cierra queda abierto para siempre y en tres meses nadie sabe cuáles están vivos.
En el CRM anterior había 29 prospectos abiertos, ninguno marcado como perdido, y clientes ya activos atrapados en la etapa "Instalación".
La suscripción quedó creada esperando que el cliente la apruebe, y nunca lo hizo. Si pasan más de 48 horas, alguien tiene que llamarlo.
Se traba después de haber cobrado: el cliente pagó y no da acceso a su Shopify, o el deploy nunca se hizo. Riesgo de reembolso y de arrancar la relación mal.
Le falla un cobro, la secuencia de avisos lo alcanza, paga y vuelve a la normalidad. Es el flujo que justifica todo el módulo de cobranza.
Los fallos se acumulan sin que nadie los vea y PayPal termina cancelando la suscripción.
Lannot: 60 días de fallos invisibles hasta que se detectaron a mano el 28 de mayo. PayPal canceló al día siguiente. El cliente armó una suscripción nueva pagando USD 400 de setup que no correspondían — quería quedarse.
Lleva más de 90 días suspendido. Técnicamente se puede recuperar, y mientras tanto su infraestructura sigue prendida.
Don Gato Kids: suspendido desde julio de 2024, con la app corriendo 22 meses.
Avisa que se va. Se registra el motivo, y la baja no está completa hasta que su app está apagada.
Orígenes Café canceló en febrero de 2026 y se llevó el sitio sin compensar. Seis meses después su app seguía corriendo.
Vuelve a contratar. La suscripción nueva suele llegar con otro mail, así que hay que engancharla al cliente que ya existe en vez de crear uno nuevo.
Nutriciencia: figura con cafemur@hotmail.com y la suscripción nueva llegó con nutriciencia@gmail.com.
Aparece un cobro en PayPal de alguien que nunca pasó por el pipeline. Hay que crearlo al vuelo y vincularlo. Es la excepción, no el camino normal.
Sube o baja de plan y el monto de la suscripción cambia. Sin registrarlo, la variación del MRR del mes es un número sin explicación.
Se edita en src/config/proyecto/ciclo-vida.ts. Cada vez que aparezca un recorrido que no está acá, hay que agregarlo.