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