Acciones de Mensajeria
Envia comunicaciones automaticas a traves de multiples canales.
Canales Disponibles
CANALES DE MENSAJERIA
| SMS | ||
|---|---|---|
| Templates | Texto corto | Texto |
| HTML | Links | Imagenes |
| Adjuntos | Notificaciones | Documentos |
| CC/BCC | Templates | |
| Buttons |
| NOTIFICACIONES | IN-APP MESSAGES | PUSH |
|---|---|---|
| Campana | Chat interno | Web push |
| Badge | Alertas | Mobile push |
| Toast | Anuncios |
SEND_EMAIL
Descripcion
Envia un email a uno o mas destinatarios.
Configuracion:
- to: Destinatario(s)
- cc: Copia (opcional)
- bcc: Copia oculta (opcional)
- subject: Asunto
- template: Plantilla de email
- variables: Datos dinamicos
- attachments: Archivos adjuntos
- replyTo: Direccion de respuesta
Ejemplo de Configuracion
{
"actionType": "SEND_EMAIL",
"order": 1,
"configuration": {
"to": "{{postulant.email}}",
"subject": "Recibimos tu aplicacion a {{job.title}}",
"template": "application-received",
"variables": {
"candidateName": "{{postulant.name}}",
"jobTitle": "{{job.title}}",
"companyName": "{{company.name}}",
"nextSteps": "Revisaremos tu perfil en las proximas 48 horas"
},
"replyTo": "reclutamiento@empresa.com"
}
}
Plantillas de Email Disponibles
| Plantilla | Descripcion |
|---|---|
| application-received | Confirmacion de aplicacion |
| interview-scheduled | Invitacion a entrevista |
| test-assigned | Asignacion de evaluacion |
| document-request | Solicitud de documentos |
| signature-request | Solicitud de firma |
| offer-letter | Carta de oferta |
| rejection-notice | Notificacion de rechazo |
| welcome-onboarding | Bienvenida a onboarding |
| reminder-generic | Recordatorio generico |
| custom | Plantilla personalizada |
Interfaz de Configuracion
Configurar: Enviar Email
| Campo | Valor |
|---|---|
| Para* | {{postulant.email}} |
| CC | hiring-manager@empresa.com |
| BCC | |
| Asunto* | Recibimos tu aplicacion |
| Plantilla* | application-received |
Variables:
- candidateName: {{postulant.name}}
- jobTitle: {{job.title}}
- [+ Anadir variable]
Opciones: [ ] Incluir adjuntos del contexto
[Vista Previa]
SEND_SMS
Descripcion
Envia un SMS al telefono del destinatario.
Configuracion:
- to: Numero de telefono
- message: Texto del mensaje (max 160 chars)
- variables: Datos dinamicos
- trackDelivery: Rastrear entrega
Limitaciones:
- Maximo 160 caracteres por mensaje
- Solo texto plano (no emojis complejos)
- Requiere numero valido con codigo de pais
- Costos por mensaje enviado
Ejemplo de Configuracion
{
"actionType": "SEND_SMS",
"order": 2,
"configuration": {
"to": "{{postulant.phone}}",
"message": "{{company.name}}: Tu entrevista para {{job.title}} es manana a las {{event.time}}. Confirma respondiendo SI.",
"trackDelivery": true
}
}
Interfaz de Configuracion
Configurar: Enviar SMS
| Campo | Valor |
|---|---|
| Para* | {{postulant.phone}} |
| Mensaje* | Tu entrevista es manana a las {{event.time}}. Confirma con SI. |
| Caracteres | 68/160 |
Opciones: [x] Rastrear entrega
[Vista Previa]
SEND_WHATSAPP
Descripcion
Envia un mensaje de WhatsApp via Twilio.
Configuracion:
- to: Numero de WhatsApp
- template: Plantilla aprobada de WhatsApp
- templateVariables: Variables de la plantilla
- message: Mensaje libre (si no usa template)
- mediaUrl: URL de imagen/documento
- buttons: Botones de respuesta rapida
Nota: Templates deben estar pre-aprobados por WhatsApp/Meta.
Ejemplo con Template
{
"actionType": "SEND_WHATSAPP",
"order": 1,
"configuration": {
"to": "{{postulant.phone}}",
"template": "interview_reminder",
"templateVariables": {
"1": "{{postulant.firstName}}",
"2": "{{event.date}}",
"3": "{{event.time}}",
"4": "{{event.location}}"
}
}
}
Ejemplo con Mensaje Libre
{
"actionType": "SEND_WHATSAPP",
"order": 1,
"configuration": {
"to": "{{postulant.phone}}",
"message": "Hola {{postulant.name}}! Gracias por aplicar a {{job.title}}. Te contactaremos pronto.",
"buttons": [
{ "text": "Ver mi aplicacion", "url": "{{application.url}}" },
{ "text": "Contactar", "phone": "{{company.phone}}" }
]
}
}
Interfaz de Configuracion
Configurar: Enviar WhatsApp
| Campo | Valor |
|---|---|
| Para* | {{postulant.phone}} |
| Modo | (*) Usar template aprobado / ( ) Mensaje libre |
| Template | interview_reminder |
Variables del template:
- {{1}}: {{postulant.firstName}}
- {{2}}: {{event.date}}
- {{3}}: {{event.time}}
- {{4}}: {{event.location}}
Opciones: [ ] Incluir media
[Vista Previa]
SEND_NOTIFICATION
Descripcion
Envia una notificacion in-app a usuarios de la plataforma.
Configuracion:
- to: Usuario(s) destinatario(s)
- title: Titulo de la notificacion
- message: Contenido
- type: Tipo (info, warning, success, error)
- link: URL al hacer click
- icon: Icono a mostrar
- priority: Prioridad (normal, high, urgent)
Ejemplo de Configuracion
{
"actionType": "SEND_NOTIFICATION",
"order": 1,
"configuration": {
"to": "{{task.assignedTo}}",
"title": "Nueva aplicacion",
"message": "{{postulant.name}} aplico a {{job.title}}",
"type": "info",
"link": "/app/applications/{{application.id}}",
"priority": "normal"
}
}
Tipos de Notificacion
| Tipo | Descripcion |
|---|---|
| info | Icono azul, informativo |
| success | Icono verde, accion exitosa |
| warning | Icono amarillo, atencion requerida |
| error | Icono rojo, problema |
Destinatarios Especiales
| Variable | Descripcion |
|---|---|
| {{trigger.owner}} | Propietario del trigger |
| {{task.assignedTo}} | Usuario asignado |
| {{job.hiringManager}} | Hiring manager de la vacante |
| {{process.owner}} | Dueno del proceso |
| team:reclutamiento | Todos del equipo |
| role:admin | Todos los admins |
| all | Todos los usuarios activos |
SEND_IN_APP_MESSAGE
Descripcion
Envia un mensaje dentro del chat interno de la plataforma.
Configuracion:
- threadId: ID del hilo de conversacion
- to: Usuario destinatario
- message: Contenido del mensaje
- attachments: Archivos adjuntos
- isInternal: Si es nota interna (no visible para postulante)
Ejemplo de Configuracion
{
"actionType": "SEND_IN_APP_MESSAGE",
"order": 1,
"configuration": {
"threadId": "{{candidate.threadId}}",
"message": "Hola {{postulant.name}}, tu evaluacion esta lista. Puedes acceder aqui: {{test.url}}",
"isInternal": false
}
}
Nota Interna vs Mensaje
Mensaje normal (isInternal: false):
- Visible para el candidato
- Aparece en su bandeja
- Notifica al candidato
- Se incluye en historial
Nota interna (isInternal: true):
- Solo visible para equipo
- No notifica al candidato
- Util para comentarios
- Coordinacion interna
Combinar Canales
Estrategia Multi-Canal
Workflow: Recordatorio de Entrevista
Acciones:
- SEND_EMAIL - Detalle completo con agenda
- SEND_WHATSAPP (24h antes) - Recordatorio con link
- SEND_SMS (2h antes) - Ultimo recordatorio
- SEND_NOTIFICATION - Alertar al entrevistador
Fallback de Canales
Logica de fallback:
- Intentar canal primario (WhatsApp)
- Si falla -> Usar email
- Si urgente -> Agregar SMS
- Siempre -> Notificacion interna
Configuracion:
{
"primaryChannel": "whatsapp",
"fallbackChannels": ["email", "sms"],
"alwaysNotify": ["internal"]
}
Variables de Mensajeria
Variables Comunes
Candidato:
- {{postulant.name}} -> Nombre completo
- {{postulant.firstName}} -> Solo nombre
- {{postulant.email}} -> Email
- {{postulant.phone}} -> Telefono
- {{postulant.profileUrl}} -> URL del perfil
Vacante:
- {{job.title}} -> Titulo
- {{job.department}} -> Departamento
- {{job.location}} -> Ubicacion
- {{job.salary}} -> Salario
Empresa:
- {{company.name}} -> Nombre
- {{company.logo}} -> URL del logo
- {{company.website}} -> Sitio web
- {{company.address}} -> Direccion
Evento:
- {{event.date}} -> Fecha
- {{event.time}} -> Hora
- {{event.location}} -> Ubicacion
- {{event.meetingUrl}} -> Link de reunion
- {{event.duration}} -> Duracion
Formateo de Variables
Fechas:
- {{event.date|format:DD/MM/YYYY}}
- {{event.date|format:MMMM D, YYYY}}
- {{event.date|relative}} -> "en 2 dias"
Texto:
- {{postulant.name|uppercase}}
- {{postulant.name|lowercase}}
- {{postulant.name|capitalize}}
- {{message|truncate:100}}
Numeros:
- {{salary|currency:MXN}}
- {{score|percent}}
- {{count|number}}
Configuracion Avanzada
Horarios de Envio
Configurar cuando enviar:
- Inmediato: al momento del trigger
- Programado: en hora especifica
- Horario laboral: solo L-V 9-18h
- Zona horaria del destinatario
- Delay relativo: +2 horas
Ejemplo:
{
"schedule": {
"type": "business_hours",
"timezone": "{{postulant.timezone}}",
"startHour": 9,
"endHour": 18,
"days": ["mon", "tue", "wed", "thu", "fri"]
}
}
Rate Limiting
Evitar spam:
- Max emails por dia por destinatario
- Cooldown entre mensajes
- Throttling por canal
- Limites por workflow
Configuracion:
{
"limits": {
"maxPerDay": 3,
"cooldownMinutes": 60,
"throttlePerMinute": 10
}
}
Tracking y Metricas
Metricas disponibles:
- Enviados: total de mensajes
- Entregados: confirmados por servidor
- Abiertos: emails vistos (tracking pixel)
- Clicks: links clickeados
- Respondidos: respuestas recibidas
- Bounces: no entregados
- Unsubscribes: bajas
Dashboard: /app/automation/metrics
Manejo de Errores
Errores Comunes
| Error | Descripcion |
|---|---|
| email_invalid | Email mal formado |
| email_bounced | Email no existe |
| phone_invalid | Telefono invalido |
| whatsapp_not_found | No tiene WhatsApp |
| template_not_found | Plantilla no existe |
| rate_limit_exceeded | Demasiados envios |
| service_unavailable | Servicio caido |
Configurar Reintentos
{
"retryPolicy": {
"maxRetries": 3,
"retryDelay": 60, // segundos
"backoffMultiplier": 2, // exponencial
"retryableErrors": [
"service_unavailable",
"rate_limit_exceeded"
]
}
}
Acciones de Fallback
Si falla el envio:
- Reintentar X veces
- Usar canal alternativo
- Notificar al admin
- Registrar en log
- Continuar o detener workflow
Buenas Practicas
Contenido de Mensajes
DO:
- Personalizar con nombre
- Ser claro y conciso
- Incluir call-to-action
- Proveer contexto
- Ofrecer opcion de contacto
DON'T:
- Enviar demasiados mensajes
- Usar jerga tecnica
- Links muy largos
- Informacion sensible en SMS
- Ignorar preferencias del usuario
Cumplimiento Legal
Consideraciones:
- Opt-in para marketing
- Opcion de unsubscribe
- Cumplir GDPR/privacidad
- No enviar a bloqueados
- Respetar horarios locales
Proximos Pasos
- Acciones de IA - Analisis inteligente
- Variables y Placeholders - Datos dinamicos
- Ejemplos Practicos - Casos de uso