Skip to content

Catálogo de eventos ​

Tabla exhaustiva de qué dispara cada notificación, a quién llega y por qué canales.

Eventos de autenticación ​

EventoTriggerCanalDestinatarioClase
RegistroCandidato creadoemailCandidatoVerifyEmail (Laravel default)
Email verificadoClick en linkemailCandidatoWelcomeNotification
Reset de contraseña solicitadoPOST /auth/forgot-passwordemailCandidatoResetPasswordNotification
Contraseña cambiadaNuevo hash guardadoemail (opt-in)UsuarioPasswordChangedNotification
Login desde IP nueva (Fase 2)Detección de IPemailUsuarioNewLoginFromUnknownIpNotification

Eventos de membresía ​

EventoTriggerCanalDestinatarioClase
Pago iniciadoPOST /me/membership/checkout——(sin notificación)
Pago completadoWebhook Stripe checkout.session.completedemail + in-appCandidatoMembershipActivatedNotification
Pago fallidoWebhook payment_intent.payment_failedemail (Fase 2)CandidatoPaymentFailedNotification
Membresía expira en 15 días (Fase 2)Cron diarioemail + in-appCandidatoMembershipExpiringNotification
Membresía expiradaCron diario (ExpireMembershipsJob)email (Fase 2)CandidatoMembershipExpiredNotification
Membresía canceladaAdmin cancelemail (Fase 2)CandidatoMembershipCancelledNotification

Eventos de perfil ​

EventoTriggerCanalDestinatarioClase
Cambio de estado del candidatoPipeline progressin-appCandidatoCandidateStateChangedNotification
Perfil aprobadoAdmin aprueba manualmenteemail + in-appCandidatoProfileApprovedNotification
Foto actualizadaPOST /avatar——(silencioso)

Eventos de pipeline ​

EventoTriggerCanalDestinatarioClase
Nueva asignación (sourced)Recruiter asignain-appCandidato (opt-in)NewAssignmentNotification
Asignación presentadastage → presentedemail + in-appcompany_user (owner+manager)AssignmentPresentedNotification
Asignación en entrevistastage → interviewing——(sustituido por InterviewScheduled)
Candidato finalistastage → finalistemail + in-appcompany_userCandidateFinalistNotification
Candidato contratadostage → hiredemail + in-appCandidato + company_user + adminCandidateHiredNotification
Candidato rechazadostage → rejectedemail (opt-in)CandidatoAssignmentRejectedNotification
Candidato retiradostage → withdrawn——(silencioso)
Company escribió notaPOST /notes (visibility=company)in-appRecruiter asignadoCompanyAddedNoteNotification

Eventos de entrevista ​

EventoTriggerCanalDestinatarioClase
Entrevista agendadaPOST /interviewsemail + in-appCandidato + company_userInterviewScheduledNotification
Entrevista confirmadaPOST /interviews/{id}/confirmemail + in-appTodas las otras partesInterviewConfirmedNotification
Entrevista reprogramadaPOST /rescheduleemail + in-appTodas las partesInterviewRescheduledNotification
Entrevista canceladaPOST /cancelemail + in-appTodas las partesInterviewCancelledNotification
Entrevista realizadaPOST /complete——(silencioso — feedback privado)
No asistióPOST /no-showemail + in-appCandidatoInterviewNoShowNotification
Recordatorio 24h antes (Fase 2)Cron — ver cronjobsemailTodas las partesInterviewReminderNotification
Recordatorio 1h antes (Fase 2)Cron — ver cronjobsemail + pushTodas las partesInterviewImminentNotification

Eventos de vacante ​

EventoTriggerCanalDestinatarioClase
Vacante publicadaPOST /vacancies/{id}/publishin-appTodos los recruiters HUMAEVacancyPublishedNotification
Vacante asignada a recruiterPATCH assigned_recruiter_idemail + in-appRecruiter asignadoVacancyAssignedToYouNotification
Vacante cubiertastage hiredin-appRecruiters + adminVacancyFilledNotification
Vacante canceladaPOST /cancelemail + in-appRecruiter asignado + company_userVacancyCancelledNotification
Vacante próxima a expirar (Fase 2)Cronin-appCompany_user + adminVacancyExpiringNotification

Eventos de empresa ​

EventoTriggerCanalDestinatarioClase
Invitación a company_userAdmin invitaemailInvitadoCompanyInvitationNotification
Nuevo miembro agregadoPOST /company/{id}/membersin-appOwners + managersCompanyMemberAddedNotification
Miembro removidoDELETEemailRemovidoCompanyMemberRemovedNotification

Eventos administrativos ​

EventoTriggerCanalDestinatarioClase
Ticket de contactoPOST /contactemailAdmin supportNewContactSubmissionNotification
Reporte de abuso (Fase 2)POST /reportemailAdminAbuseReportNotification
Usuario suspendidoAdmin suspendeemailUsuario afectadoAccountSuspendedNotification
Usuario reactivadoAdmin reactivaemailUsuario afectadoAccountReactivatedNotification

Resumen por destinatario ​

Candidato ​

  • Registro: bienvenida, verificación, reset password
  • Membresía: activación, expiración
  • Pipeline: asignaciones (opcional), contratación
  • Entrevistas: todas las transiciones
  • Admin: suspensión/reactivación

Company user (owner/manager) ​

  • Onboarding: invitación
  • Pipeline: candidatos presentados, finalistas, contrataciones
  • Entrevistas: todas las transiciones
  • Vacantes: cancelación, próxima a expirar

Recruiter HUMAE ​

  • Pipeline: nuevas notas de empresa, vacantes asignadas
  • Vacantes: publicadas, canceladas, cubiertas
  • Entrevistas: confirmaciones (copia)

Admin ​

  • Soporte: tickets, reportes de abuso
  • Sistema: webhooks fallidos, errores críticos
  • Financiero: resumen diario (Fase 2)

Cómo silenciar o habilitar ​

MVP ​

  • Silenciar/habilitar por categoría global via settings.notifications.{event}.
  • No hay opt-out individual.

Fase 2 ​

  • Página /me/preferencias con toggles por categoría y canal.
  • Endpoint PATCH /me/notification-preferences.
  • Respetado en cada Notification::via().

Siguiente ​

Cómo se integra con proveedores externos: Stripe →

Manual de usuario HUMAE · Uso interno