Triggers de Eventos
Referencia completa de todos los eventos del sistema que pueden disparar workflows.
Como Funcionan los Triggers
Flujo: Evento del Sistema -> EventBusService -> SchedulerService
Luego el sistema evalua:
- Trigger Match? - Si hay match, continua; si no, ignora
- Evaluar Filtros - Si pasa, encola ejecucion; si no, ignora
Eventos de Aplicaciones (APPLICATION)
APPLICATION_CREATED
Cuando: Un candidato aplica a una vacante
Datos disponibles:
- applicationId: ID de la aplicacion
- jobPositionId: ID de la vacante
- postulantId: ID del candidato
- postulantName: Nombre del candidato
- postulantEmail: Email del candidato
- jobTitle: Titulo de la vacante
- source: Origen (career-page, referral, etc.)
- appliedAt: Fecha de aplicacion
Usos tipicos:
- Enviar email de confirmacion
- Notificar al reclutador
- Iniciar screening automatico
- Crear tarea de revision
APPLICATION_STATUS_CHANGED
Cuando: Cambia el estado de una aplicacion
Datos disponibles:
- applicationId: ID de la aplicacion
- oldStatus: Estado anterior
- newStatus: Nuevo estado
- jobPositionId: ID de la vacante
- postulantId: ID del candidato
- changedBy: Usuario que cambio
Estados posibles:
- new -> En revision
- reviewing -> En proceso
- interviewed -> Entrevistado
- offered -> Oferta enviada
- hired -> Contratado
- rejected -> Rechazado
Usos tipicos:
- Notificar cambio al candidato
- Actualizar CRM externo
- Trigger siguiente paso
- Generar reportes
APPLICATION_REVIEWED
Cuando: Un reclutador revisa/evalua una aplicacion
Datos disponibles:
- applicationId: ID de la aplicacion
- reviewerId: Usuario que reviso
- rating: Puntuacion (1-5)
- notes: Comentarios
- recommendation: hire/hold/reject
- reviewedAt: Fecha de revision
Usos tipicos:
- Notificar al hiring manager
- Agendar siguiente paso si positivo
- Enviar rechazo si negativo
- Actualizar pipeline
Eventos de Tareas (TASK)
TASK_CREATED
Cuando: Se crea una tarea en un proceso (candidato entra a proceso)
Datos disponibles:
- taskId: ID de la tarea
- processId: ID del proceso
- processName: Nombre del proceso
- userId: ID del candidato
- userName: Nombre del candidato
- stepId: Etapa inicial
- stepName: Nombre de la etapa
- assignedBy: Quien asigno
- createdAt: Fecha de creacion
Usos tipicos:
- Notificar al candidato que entro a proceso
- Asignar evaluador
- Crear checklist de onboarding
- Enviar instrucciones
TASK_MOVED
Cuando: Un candidato se mueve de etapa en un proceso
Datos disponibles:
- taskId: ID de la tarea
- processId: ID del proceso
- userId: ID del candidato
- userName: Nombre del candidato
- fromStepId: Etapa origen
- fromStepName: Nombre etapa origen
- toStepId: Etapa destino
- toStepName: Nombre etapa destino
- movedBy: Usuario que movio
- movedAt: Fecha del movimiento
Usos tipicos:
- Notificar nuevo estado al candidato
- Si etapa final -> Iniciar onboarding
- Si etapa entrevista -> Agendar
- Actualizar metricas
TASK_COMPLETED
Cuando: Una tarea llega a etapa final
Datos disponibles:
- taskId: ID de la tarea
- processId: ID del proceso
- userId: ID del candidato
- finalStepId: Etapa final
- finalStepName: Nombre etapa
- outcome: Resultado (hired, rejected, etc.)
- completedAt: Fecha de completado
Usos tipicos:
- Enviar bienvenida si contratado
- Iniciar onboarding
- Archivar expediente
- Notificar a RH
TASK_DELETED
Cuando: Se elimina una tarea de proceso
Datos disponibles:
- taskId: ID de la tarea
- processId: ID del proceso
- userId: ID del candidato
- reason: Motivo
- deletedBy: Usuario que elimino
Usos tipicos:
- Archivar informacion
- Notificar al equipo
- Actualizar reportes
Eventos de Tests (TEST)
TEST_ASSIGNED
Cuando: Se asigna un test/evaluacion a un candidato
Datos disponibles:
- userTestId: ID de la asignacion
- testId: ID del test
- testTitle: Titulo del test
- userId: ID del candidato
- userName: Nombre del candidato
- assignedBy: Quien asigno
- dueDate: Fecha limite
- assignedAt: Fecha de asignacion
Usos tipicos:
- Enviar instrucciones al candidato
- Recordatorios antes de vencer
- Notificar al evaluador
- Tracking de completado
TEST_STARTED
Cuando: Un candidato inicia un test
Datos disponibles:
- userTestId: ID de la asignacion
- testId: ID del test
- testTitle: Titulo del test
- userId: ID del candidato
- startedAt: Fecha/hora de inicio
- timeLimit: Limite de tiempo (minutos)
Usos tipicos:
- Logging de auditoria
- Notificar si hay supervisor
- Monitoreo en tiempo real
TEST_COMPLETED
Cuando: Un candidato completa un test
Datos disponibles:
- userTestId: ID de la asignacion
- testId: ID del test
- testTitle: Titulo del test
- userId: ID del candidato
- userName: Nombre del candidato
- score: Puntuacion obtenida
- passingScore: Puntuacion minima
- passed: Si aprobo (boolean)
- completedAt: Fecha de completado
- duration: Tiempo tomado (minutos)
Usos tipicos:
- Notificar resultado al candidato
- Si aprobo -> Mover a siguiente etapa
- Si reprobo -> Enviar rechazo
- Generar reporte de evaluacion
TEST_EXPIRED
Cuando: Vence el plazo de un test sin completar
Datos disponibles:
- userTestId: ID de la asignacion
- testId: ID del test
- userId: ID del candidato
- dueDate: Fecha limite que vencio
- expiredAt: Fecha de expiracion
Usos tipicos:
- Notificar al candidato
- Enviar recordatorio final
- Marcar como no completado
- Reportar a reclutador
Eventos de Mensajes (MESSAGE)
MESSAGE_RECEIVED
Cuando: Se recibe un mensaje de cualquier canal
Datos disponibles:
- messageId: ID del mensaje
- threadId: ID del hilo de conversacion
- channel: Canal (email, whatsapp, sms, chat)
- senderId: ID del remitente
- senderName: Nombre del remitente
- senderEmail: Email (si aplica)
- senderPhone: Telefono (si aplica)
- content: Contenido del mensaje
- attachments: Archivos adjuntos
- receivedAt: Fecha de recepcion
Usos tipicos:
- Respuesta automatica con bot
- Clasificar urgencia con IA
- Routing a equipo correcto
- Actualizar timeline del candidato
MESSAGE_SENT
Cuando: Se envia un mensaje desde la plataforma
Datos disponibles:
- messageId: ID del mensaje
- threadId: ID del hilo
- channel: Canal usado
- recipientId: ID del destinatario
- senderId: ID del remitente
- content: Contenido
- sentAt: Fecha de envio
Usos tipicos:
- Logging de comunicaciones
- Tracking de respuestas
- Metricas de engagement
WHATSAPP_MESSAGE_RECEIVED
Cuando: Se recibe un mensaje de WhatsApp especificamente
Datos disponibles:
- messageId: ID del mensaje
- phoneNumber: Numero de telefono
- profileName: Nombre de perfil
- content: Texto del mensaje
- mediaType: Tipo de media (image, audio, document)
- mediaUrl: URL del archivo
- timestamp: Fecha/hora
Usos tipicos:
- Iniciar conversacion con bot
- Routing a reclutador asignado
- Respuesta automatica fuera de horario
- Tracking de comunicaciones
EMAIL_RECEIVED
Cuando: Se recibe un email (via SES Inbound)
Datos disponibles:
- messageId: ID del email
- from: Direccion remitente
- to: Direccion destinatario
- subject: Asunto
- body: Cuerpo del email
- bodyHtml: Cuerpo HTML
- attachments: Archivos adjuntos
- headers: Headers del email
Usos tipicos:
- Respuesta automatica
- Extraer curriculum de adjuntos
- Crear aplicacion si es CV
- Routing a buzon correcto
Eventos de Documentos (DOCUMENT)
DOCUMENT_REQUEST_CREATED
Cuando: Se solicita un documento a un candidato
Datos disponibles:
- requestId: ID de la solicitud
- documentType: Tipo de documento
- postulantId: ID del candidato
- postulantName: Nombre del candidato
- requestedBy: Quien solicito
- dueDate: Fecha limite
- instructions: Instrucciones
Usos tipicos:
- Notificar al candidato
- Recordatorios antes de vencer
- Tracking de completado
DOCUMENT_REQUEST_COMPLETED
Cuando: Un candidato sube el documento solicitado
Datos disponibles:
- requestId: ID de la solicitud
- documentType: Tipo de documento
- postulantId: ID del candidato
- documentUrl: URL del archivo
- fileName: Nombre del archivo
- fileSize: Tamano
- uploadedAt: Fecha de subida
Usos tipicos:
- Notificar al solicitante
- Validar documento con IA
- Actualizar expediente
- Mover en proceso si completo
DOCUMENT_UPLOADED
Cuando: Se sube cualquier documento a la plataforma
Datos disponibles:
- documentId: ID del documento
- fileName: Nombre del archivo
- fileType: Tipo MIME
- fileSize: Tamano en bytes
- uploadedBy: Usuario que subio
- relatedTo: Entidad relacionada
- uploadedAt: Fecha de subida
Usos tipicos:
- Analizar CV con IA
- Indexar para busqueda
- Validar formato
- Notificar interesados
Eventos de Firma (SIGNATURE)
SIGNATURE_REQUEST_CREATED
Cuando: Se crea una solicitud de firma digital
Datos disponibles:
- requestId: ID de la solicitud
- documentTitle: Titulo del documento
- postulantId: ID del candidato
- postulantName: Nombre del candidato
- expiresAt: Fecha de expiracion
- createdBy: Quien creo
Usos tipicos:
- Notificar que debe firmar
- Recordatorios de vencimiento
- Tracking de firma
SIGNATURE_REQUEST_COMPANY_SIGNED
Cuando: La empresa firma su parte
Datos disponibles:
- requestId: ID de la solicitud
- signedBy: Usuario que firmo
- signedAt: Fecha de firma
- certificateSerial: Serial del certificado
- postulantId: ID del candidato
Usos tipicos:
- Notificar al candidato que es su turno
- Enviar instrucciones de firma
- Actualizar estado
SIGNATURE_REQUEST_COMPLETED
Cuando: Ambas partes firman y se obtiene constancia NOM-151
Datos disponibles:
- requestId: ID de la solicitud
- documentTitle: Titulo del documento
- postulantId: ID del candidato
- postulantName: Nombre del candidato
- companyUserId: Usuario empresa
- constanciaStatus: Estado NOM-151
- completedAt: Fecha de completado
- verificationUrl: Link de verificacion
Usos tipicos:
- Enviar documento firmado a ambas partes
- Marcar item de onboarding como completado
- Mover a siguiente etapa
- Archivar en expediente
SIGNATURE_REQUEST_EXPIRED
Cuando: Vence el plazo de firma sin completar
Datos disponibles:
- requestId: ID de la solicitud
- postulantId: ID del candidato
- expiredAt: Fecha de expiracion
- status: Estado al vencer
Usos tipicos:
- Notificar al candidato
- Notificar a RH
- Crear nueva solicitud o archivar
- Actualizar proceso
Eventos de Calendario (CALENDAR)
EVENT_CREATED
Cuando: Se crea un evento/reunion
Datos disponibles:
- eventId: ID del evento
- title: Titulo
- startTime: Fecha/hora inicio
- endTime: Fecha/hora fin
- location: Ubicacion
- attendees: Lista de asistentes
- createdBy: Quien creo
- calendarType: google, microsoft, zoom
Usos tipicos:
- Notificar a asistentes
- Enviar instrucciones
- Crear recordatorios
- Sincronizar calendarios
EVENT_UPDATED
Cuando: Se modifica un evento existente
Datos disponibles:
- eventId: ID del evento
- changes: Campos modificados
- oldValues: Valores anteriores
- newValues: Nuevos valores
- updatedBy: Quien modifico
- updatedAt: Fecha de modificacion
Usos tipicos:
- Notificar cambios a asistentes
- Actualizar calendarios externos
- Logging de auditoria
EVENT_CANCELLED
Cuando: Se cancela un evento
Datos disponibles:
- eventId: ID del evento
- title: Titulo
- cancelledBy: Quien cancelo
- reason: Motivo
- attendees: Asistentes afectados
- cancelledAt: Fecha de cancelacion
Usos tipicos:
- Notificar a asistentes
- Liberar slot de calendario
- Ofrecer reagendar
- Actualizar metricas
INTERVIEW_SCHEDULED
Cuando: Se agenda una entrevista
Datos disponibles:
- eventId: ID del evento
- interviewType: Tipo (phone, video, onsite)
- candidateId: ID del candidato
- candidateName: Nombre del candidato
- interviewers: Lista de entrevistadores
- startTime: Fecha/hora
- duration: Duracion en minutos
- meetingUrl: Link de videoconferencia
- scheduledBy: Quien agendo
Usos tipicos:
- Enviar confirmacion al candidato
- Instrucciones de preparacion
- Recordatorios automaticos
- Preparar agenda para entrevistador
Eventos de Onboarding (ONBOARDING)
ONBOARDING_STARTED
Cuando: Se inicia el proceso de onboarding
Datos disponibles:
- onboardingId: ID del onboarding
- templateId: Plantilla usada
- templateName: Nombre de la plantilla
- postulantId: ID del candidato
- postulantName: Nombre
- totalItems: Numero de items
- startedAt: Fecha de inicio
- dueDate: Fecha limite
Usos tipicos:
- Notificar al nuevo empleado
- Enviar instrucciones
- Crear accesos a sistemas
- Notificar a RH
ONBOARDING_ITEM_COMPLETED
Cuando: Se completa un item del checklist
Datos disponibles:
- onboardingId: ID del onboarding
- itemId: ID del item
- itemType: Tipo de item
- itemTitle: Titulo del item
- postulantId: ID del candidato
- completedAt: Fecha de completado
- progress: Porcentaje de avance
- remainingItems: Items pendientes
Usos tipicos:
- Actualizar progreso
- Si 100% -> Trigger onboarding completado
- Notificar siguiente item
- Celebrar avance
ONBOARDING_COMPLETED
Cuando: Se completan todos los items del onboarding
Datos disponibles:
- onboardingId: ID del onboarding
- postulantId: ID del candidato
- postulantName: Nombre
- completedAt: Fecha de completado
- daysToComplete: Dias que tomo
- itemsCompleted: Total de items
Usos tipicos:
- Notificar al empleado
- Notificar a RH
- Actualizar estado a activo
- Generar reporte
- Archivar expediente
Eventos de Perfil (PROFILE)
PROFILE_UPDATED
Cuando: Se actualiza el perfil de un candidato
Datos disponibles:
- profileId: ID del perfil
- postulantId: ID del candidato
- changes: Campos modificados
- updatedBy: Quien actualizo
- updatedAt: Fecha de actualizacion
Usos tipicos:
- Re-evaluar matching
- Actualizar indice de busqueda
- Notificar si relevante
- Logging de cambios
PROFILE_STATUS_CHANGED
Cuando: Cambia el estado del perfil (active, archived, blocked)
Datos disponibles:
- profileId: ID del perfil
- postulantId: ID del candidato
- oldStatus: Estado anterior
- newStatus: Nuevo estado
- changedBy: Quien cambio
- reason: Motivo
Usos tipicos:
- Si archived -> Cerrar procesos abiertos
- Si blocked -> Revocar accesos
- Logging de auditoria
- Notificar al equipo
Configurar Trigger en Workflow
Interfaz de Configuracion
Configurar Trigger
| Campo | Valor |
|---|---|
| Evento | APPLICATION_CREATED |
| Vacante contiene | Desarrollador |
| Fuente es | career-page |
Botones: [Anadir condicion] [Cancelar] [Guardar Trigger]
Filtros Disponibles
Por Vacante:
- jobPositionId equals [ID]
- jobTitle contains [texto]
- department equals [depto]
Por Candidato:
- postulantId equals [ID]
- postulantEmail contains [dominio]
- tags includes [tag]
Por Proceso:
- processId equals [ID]
- stepName equals [etapa]
- outcome equals [resultado]
Por Fecha:
- createdAt after [fecha]
- createdAt before [fecha]
Proximos Pasos
- Triggers Programados - Configurar schedules
- Acciones de Mensajeria - Enviar comunicaciones
- Ejemplos Practicos - Casos de uso