Ir al contenido

TalentBricksAI incluye un sistema completo de referidos y codigos promocionales para adquisicion y retencion de usuarios.

┌─────────────────────────────────────────────────────────────────┐
│ FLUJO DE REFERIDOS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Usuario A Usuario B (Referido) │
│ ───────── ──────────────────── │
│ │
│ 1. Genera link 4. Click en link │
│ /r/abc12def → Cookie 30 dias │
│ │ │ │
│ │ ▼ │
│ │ 5. Se registra │
│ │ → ReferralSignup │
│ │ │ │
│ 2. Recibe email ◀───────────────────┤ (notificación) │
│ "Nuevo signup!" │ │
│ │ ▼ │
│ │ 6. Primera compra │
│ │ → 15% descuento │
│ │ │ │
│ 3. Recibe email ◀───────────────────┤ (notificación) │
│ "Amigo compro!" │ │
│ + 20% reward │ │
│ │
└─────────────────────────────────────────────────────────────────┘
RolBeneficio
Referidor20% de descuento cuando su referido compra (valido 90 dias)
Referido15% de descuento en su primera compra
  1. Inicia sesión en tu cuenta
  2. Ve a Cuenta > Referidos (/account/referrals)
  3. Tu link único estara disponible: https://talentbricks.ai/r/tu-código
  4. Comparte el link por redes sociales, email, etc.

El dashboard muestra:

  • Estadísticas: Clicks, signups y conversiones
  • Link compartible: Con botón de copiar
  • Historial: Lista de referidos con estado
  • Recompensas: Descuentos disponibles para usar
  1. Cuándo un referido hace una compra, recibes un reward de 20%
  2. Ve a cualquier curso y haz click en “Comprar”
  3. En el checkout, selecciona tu recompensa disponible
  4. El descuento se aplica automaticamente

Accede a /admin/promotions para ver 3 tabs:

Gestiona codigos promocionales:

Campodescripción
códigoEj: “VERANO20” (se convierte a mayusculas)
TipoPorcentaje o monto fijo
ValorPorcentaje (10 = 10%) o centavos (500 = $5)
Usos maximosLimite de uso (opcional)
ExpiracionFecha limite (opcional)
Cursosespecífico a cursos o todos
Solo nuevosSolo para usuarios sin compras previas
Compra minimaMonto minimo requerido

Crear nuevo código:

// Ejemplo: 25% de descuento, max 100 usos, expira en 30 dias
{
code: "NAVIDAD25",
discountType: "PERCENTAGE",
discountValue: 25,
maxUses: 100,
expiresAt: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
newUsersOnly: false,
isActive: true
}

Estadísticas de referidos:

  • Total de referidores activos
  • Total de signups y conversiones
  • Tasa de conversion
  • Top 10 referidores
  • Signups recientes

Gestiona recompensas de usuarios:

  • Ver recompensas activas y redimidas
  • Aprobar recompensas manualmente
  • Rechazar/eliminar recompensas fraudulentas
RutaComponentedescripción
/r/:codeReferralLandingPageLanding de referidos
/account/referralsReferralDashboardPageDashboard usuario
/admin/promotionsAdminPromotionsPageAdmin panel

Cuándo un usuario visita /r/:code:

  1. Se guarda cookie referral_code por 30 dias
  2. Se registra el click en ReferralCode.clicks
  3. Se redirige a /signup

Al registrarse, si existe la cookie:

  1. Se crea ReferralSignup con el código
  2. Se incrementa ReferralCode.signups
  3. Se envia email al referidor

El checkout (createCourseCheckout) acepta:

{
courseId: number;
promoCode?: string; // código promocional
rewardId?: string; // ID de reward a redimir
}

Prioridad de descuentos:

  1. código promocional (si es valido)
  2. Reward de usuario (si no hay promo)
  3. Descuento de referido (15% primera compra)

El handler checkout.session.completed:

  1. Crea enrollment del curso
  2. Incrementa uso del promo code
  3. Marca reward como redimido
  4. Procesa conversion de referido:
    • Marca ReferralSignup.convertedAt
    • Incrementa ReferralCode.conversions
    • Crea reward para el referidor
    • Envia email de notificación
funciónTriggerDestinatario
sendReferralSignupEmailUsuario se registra via linkReferidor
sendReferralConversionEmailReferido hace primera compraReferidor
sendRewardEarnedEmailUsuario gana una recompensaUsuario
sendPromoExpiringEmailPromo cerca de expirarUsuario
┌────────────────────────────────────────┐
│ [Logo TalentBricks] │
├────────────────────────────────────────┤
│ │
│ Felicidades, Juan! │
│ │
│ Tu amigo acaba de comprar un curso. │
│ │
│ ┌────────────────────────────┐ │
│ │ Tu recompensa: │ │
│ │ 20% de descuento │ │
│ │ Curso: Python básico │ │
│ └────────────────────────────┘ │
│ │
│ [Ver mis recompensas] │
│ │
├────────────────────────────────────────┤
│ © 2024 TalentBricks │
└────────────────────────────────────────┘
Ventana de terminal
# URL base para links de referido
WASP_WEB_CLIENT_URL=https://talentbricks.ai
ConstanteValorUbicacion
Longitud código referido8 caracteresreferral/operations.ts
Duracion cookie30 diasReferralLandingPage.tsx
Descuento referido15%courses/operations.ts
Reward referidor20%referral/operations.ts
Expiracion reward90 diasreferral/operations.ts
  1. Codigos promocionales:

    • Usa nombres descriptivos (VERANO20, NAVIDAD25)
    • Establece limites de uso para controlar costos
    • Revisa analytics periodicamente
  2. Fraude:

    • Monitorea conversiones sospechosas
    • Usa el panel de rewards para revisar manualmente
    • Rechaza rewards de cuentas duplicadas
  3. Engagement:

    • Crea promos por temporada
    • Incentiva referidos con comunicaciones
    • Destaca top referidores
  1. Nuevas validaciones de promo:

    // En promo/operations.ts
    // Agregar validación antes de retornar promo valido
  2. Nuevos tipos de reward:

    // En schema.prisma, agregar a RewardType enum
    // Actualizar lógica en courses/operations.ts
  3. Testing:

    Ventana de terminal
    # Seed de admin
    wasp db seed seedAdminUser
    # Crear promo desde admin panel
    # Probar checkout con promo
  • Verificar que /r/:code redirige correctamente
  • Revisar que document.cookie no está bloqueado
  • Verificar dominio en produccion
  • En desarrollo, emails se imprimen en consola
  • Verificar configuración de SendGrid en produccion
  • Revisar logs del servidor
  • Verificar que promo code es valido y activo
  • Revisar restricciones (curso, usuario nuevo, etc.)
  • Confirmar que no excede usos maximos