v2 completa | 2 junio 2026 | LAP-329
| # | Nombre | Subject | Origen | Preview | Img | Estado |
|---|---|---|---|---|---|---|
| 01 | Confirm Signup | "Confirma tu registro en el Ecosistema LPDI" | Supabase | N/A | NO | OK — Template en Supabase Dashboard |
| 02 | Magic Link | "Tu enlace de acceso — Ecosistema LPDI" | Supabase | N/A | NO | OK — Template en Supabase Dashboard |
| 03 | Recovery / Reset Password | "Restablecer tu contraseña — Ecosistema LPDI" | Supabase | N/A | NO | OK — Template en Supabase Dashboard |
| 04 | Email Change Confirmation | "Confirma tu nuevo correo — Ecosistema LPDI" | Supabase | N/A | NO | OK — Template en Supabase Dashboard |
| 05 | Invitación Admin | "Has sido invitado al Ecosistema LPDI" | Supabase | N/A | NO | OK — Invitación directa desde Dashboard. Reservado para uso admin. |
| 06 | Reautenticación OTP NUEVO | "Código de verificación — Ecosistema LPDI" | Supabase | N/A | NO | OK — Código OTP para acciones sensibles |
| 07 | Notificación Correo Cambiado NUEVO | "Tu correo electrónico ha sido actualizado — Ecosistema LPDI" | Supabase | N/A | NO | OK — Frank corrigió subject de "cambiado" a "actualizado" |
| 08 | Notificación Contraseña Cambiada NUEVO | "Tu contraseña ha sido cambiada — Ecosistema LPDI" | Supabase | N/A | NO | OK — Notificación automática Supabase |
| 09 | Cuenta Eliminada | "Tu cuenta en el Ecosistema LPDI ha sido eliminada" | LPDI | SI | SI | OK — sendAccountDeletedEmail |
| 10 | Contraseña Actualizada NUEVO | "Tu contraseña ha sido actualizada — Ecosistema LPDI" | LPDI | NO | NO | FALTA — EMAIL-022 existe en código pero NO en preview endpoint. Falta agregar a TEMPLATES. |
| # | Nombre | Subject | Variantes | Preview | Img | Estado |
|---|---|---|---|---|---|---|
| 11 | Startup Welcome | "Bienvenido al Ecosistema LPDI — Confirma tu cuenta" | 1 | SI | SI | OK — sendStartupWelcomeEmail |
| 12 | CEO Welcome | "Bienvenido al Ecosistema LPDI" | 2 (nuevo / existente) | SI | SI | OK — sendCeoWelcomeEmail |
| 13 | Startup Followup (Score) | "Aumenta el score de tu perfil en el Ecosistema LPDI" | 2 (low / mid) | SI | SI | OK — sendStartupFollowupEmail |
| 14 | Startup Reminder Día 3 | "Recordatorio: confirma tu cuenta" | 1 | SI | SI | OK — sendStartupReminderEmail (daysRemaining=4) |
| 15 | Startup Reminder Día 6 | "Ultimo aviso: confirma tu cuenta" | 1 | SI | SI | OK — sendStartupReminderEmail (isUrgent=true) |
| 16 | Team Invitation | "{CEO} te ha incluido en el equipo de {empresa} — confirma tu registro" | 4 (nuevo/existe x TyC/noTyC) | SI | SI | OK — sendTeamInvitationEmail |
| 17 | Team Welcome (con edición) | "Bienvenido al equipo de {empresa} en el Ecosistema LPDI" | 1 | SI | SI | OK — sendTeamWelcomeWithEditEmail |
| 18 | Team Welcome (sin edición) | "Bienvenido al equipo de {empresa} en el Ecosistema LPDI" | 1 | SI | SI | OK — sendTeamWelcomeNoEditEmail |
| 19 | Team Rejection Confirmation | "Confirmación: no haces parte del equipo de {empresa}" | 2 (con/sin recovery) | SI | SI | OK — sendTeamRejectionConfirmationEmail |
| 20 | CEO: Miembro Aceptó | "{miembro} aceptó la invitación al equipo de {empresa}" | 2 (con/sin edición) | SI | SI | OK — sendCeoMemberConfirmationEmail |
| 21 | CEO: Miembro Rechazó | "{miembro} rechazó la invitación al equipo de {empresa}" | 1 | SI | SI | OK — sendCeoMemberRejectionEmail |
| 22 | Cuenta Eliminada + Entidad | "Tu cuenta y tu registro en el Ecosistema LPDI han sido eliminados" | 1 | NO | NO | FALTA — sendAccountDeletedWithEntityEmail existe en código, NO en preview |
| 23 | Entidad Eliminada (Startup) | "El registro de {X} ha sido eliminado del Ecosistema LPDI" | 1 | SI | SI | OK — sendEntityDeletedEmail (startup) |
| 24 | Startup/ICG Purged | "Tu registro ha expirado" | 1 | NO | NO | PENDIENTE — En índice de Frank pero NO encontrado en código. Posible merge con Reminder? |
| 25 | Cambio de Permisos | "Cambio de permisos en {empresa}" | 1 | NO | NO | FALTA — EMAIL-021 sendPermissionChangeEmail existe en código, NO en preview |
| 26 | Entidad Restaurada (Startup) | "{entidad} ha sido restaurado en el Ecosistema LPDI" | 1 | NO | NO | FALTA — EMAIL-020 sendEntityRestoredEmail existe en código, NO en preview |
| 27 | Entidad Restaurada (genérico) NUEVO | "{entidad} ha sido restaurado en el Ecosistema LPDI" | 1 | NO | NO | FALTA — Aplica también a ICG (misma función). Frank lo lista como #27. |
| # | Nombre | Subject | Variantes | Preview | Img | Estado |
|---|---|---|---|---|---|---|
| 28 | Contact Welcome ICG | "{ICG} te ha asignado como contacto en el Ecosistema LPDI" | 4 (nuevo/existe x icgnew/icgexists) | SI | SI | OK — sendContactWelcomeEmail |
| 29 | Entidad Eliminada (ICG) | "El registro de {X} ha sido eliminado del Ecosistema LPDI" | 1 | SI | SI | OK — sendEntityDeletedEmail (icg) |
| 30 | ICG Purged | "Tu registro ha expirado" | 1 | NO | NO | PENDIENTE — En índice de Frank pero NO encontrado como función independiente en código |
| # | Nombre | Razón | LAP |
|---|---|---|---|
| EMAIL-011: Usuario nuevo sin TyC | Template inválido — usuario nuevo sin TyC es imposible por flujo de registro | LAP-342 (in_progress) | |
| (por confirmar con Frank) | Frank menciona 2 eliminados en el índice — verificar cuál es el segundo | — |
#10 (password-changed), #22 (account-deleted-with-entity), #25 (permission-change), #26 (entity-restored) existen en código pero NO fueron agregados al endpoint /api/dev/email-preview. Sin preview no se pueden generar imágenes para el reporte.
Ajustar descripción — no solo CEO, cualquier miembro con edición puede actualizar contraseña. Estado: in_progress.
Eliminar template de usuario nuevo sin TyC (es imposible por el flujo de registro). Estado: in_progress.
Correos 01-08 se gestionan en Supabase Dashboard. No tienen preview en /api/dev/email-preview. Para documentarlos visualmente habría que tomar screenshots del dashboard de Supabase.
"Tu registro ha expirado" aparece en el índice de Frank pero no se encontró una función sendPurgedEmail independiente. Verificar si es el mismo buildStartupReminderHtml con parámetros distintos o si falta implementar.
criterios-diseño-emails-lpdi.md solo tenía 10 templates. Debe actualizarse a los 30 catalogados.