Implementando un funnel de ventas automatizado para Job Hunter en Laravel
En el proyecto devlog-ist/landing, hemos trabajado recientemente en el desarrollo de un nuevo funnel de pre-venta para nuestro agente 'Job Hunter'. El objetivo era crear una experiencia de usuario fluida, desde la prospección mediante encuestas hasta la conversión final.
Arquitectura del flujo de conversión
El sistema utiliza un enfoque basado en encuestas con lógica condicional. Dependiendo de las respuestas del usuario, el flujo dinámico guía al cliente a través de:
- Perfilado: Análisis de situación actual y objetivos.
- Disposición de pago: Un slider interactivo para medir la sensibilidad al precio.
- Selección de plan: Ofertas tipo 'Early-bird' con descuentos del 50%.
Para manejar esto en Laravel, implementamos un Service Layer robusto que gestiona tanto el registro del usuario como la integración con Stripe.
Integración con Stripe
Para el procesamiento de pagos, utilizamos una arquitectura basada en eventos. Cuando un usuario completa el proceso de pago, el webhook de Stripe dispara un listener idempotente que activa la cuenta del usuario.
public function handle(PaymentCompleted $event): void
{
$enrollment = Enrollment::find($event->enrollmentId);
if ($enrollment->isNotActivated()) {
$enrollment->activate();
Notification::send($enrollment->user, new AccessGrantedNotification());
}
}
Administración y Monitoreo
La gestión interna se apoya en Filament, lo cual nos permite visualizar inscripciones, gestionar planes y monitorear el rendimiento del funnel en tiempo real desde un dashboard administrativo unificado.
Calidad y Pruebas
Para garantizar la fiabilidad del sistema, implementamos una batería de 24 tests utilizando PHPUnit, cubriendo desde la lógica de precios hasta la persistencia de las inscripciones. Este enfoque asegura que cualquier cambio en la configuración de precios (JOB_HUNTER_PRICE_*) no rompa el flujo crítico de conversión.