AchieveApex: app crm
Generado desde
achieveApex-Frontend/public/ai-docsel 2026-10-15. Contiene 329 archivos de la appcrm. Para el contexto general del producto verapex-resumen.md.
CRM
Inbox, pipeline, registros y herramientas de marketing/IA.
- Etapa: Produccion
- Landing:
/{orgId}/conversations
Modulos
| Modulo | Slug | Estado | Proposito |
|---|---|---|---|
| Conversaciones | conversaciones |
shipped | Inbox omnichannel (WhatsApp, Instagram, Messenger, SMS, webchat, email). |
| Deals | deals |
shipped | Pipeline de ventas, etapas, productos y watchers. |
| Tickets legacy | tickets-legacy |
shipped | Customer Service original. Convive con Helpdesk. |
| Actividades | actividades |
shipped | Tareas, llamadas y calendario CRM. |
| Contactos | contactos |
shipped | Personas, importacion, segmentos y fuentes. |
| Companias | companias |
shipped | Cuentas B2B ligadas a contactos y deals. |
| Productos | productos |
shipped | Catalogo, categorias, media y plantillas de envio. |
| Formularios | formularios |
shipped | Constructor de forms y respuestas. |
| Asistentes IA | asistentes-ia |
shipped | Agentes de canal: instrucciones, tools, skills, handoff, voz. |
| Vector storage | vector-storage |
shipped | Embeddings de productos / knowledge para IA. |
| Automatizaciones | automatizaciones |
shipped | Workflow visual, triggers, nodos y ejecuciones. |
| Campanas | campanas |
shipped | Broadcasts WhatsApp, SMS, email, AI calling y automation. |
| Series | series |
shipped | Secuencias drip con suscripcion y pasos. |
| Email builder | email-builder |
shipped | Plantillas MJML, bloques y assets. |
| Analytics CRM | analytics |
shipped | Dashboards de conversaciones, deals, quotes, actividades, attribution. |
| AI Reports | ai-reports |
shipped | Reportes generados por IA sobre conversaciones y metricas. |
| Catalogos publicos | catalogos-publicos |
shipped | Links publicos de catalogo de productos y tienda online con carrito, checkout y pago con Stripe o Wompi. |
| Canales de mensajeria | canales-mensajeria |
shipped | WhatsApp, Instagram, Messenger, TikTok, Webchat. |
| Voice y SMS | voice-sms |
shipped | Numeros Telnyx, IVR, cola, 10DLC, softphone. |
Funcionalidades internas
301 funcionalidades documentadas en 19 modulos. Ver la tabla de cada modulo.
id: actividades app: crm nombre: Actividades estado: shipped permiso: permisos granulares de actividades
Actividades
Gestiona tareas, llamadas y reuniones relacionadas con registros CRM.
Para que sirve
- Una clínica coordina llamadas de confirmación y reuniones de seguimiento con el paciente correcto.
- Una inmobiliaria agenda visitas asociadas al comprador, la constructora y la oportunidad.
- Una agencia prepara reuniones con los interesados de un deal y comparte un enlace de Google Meet.
- Una consultora consulta sus pendientes por responsable y completa las tareas sin perder el historial CRM.
- Una academia sincroniza su calendario para planificar seguimientos sin duplicar eventos futuros.
Que lo hace diferente
- Una actividad puede vincular en el mismo registro contacto, compañía, deal y responsable, y aparece en sus perfiles CRM.
- Los contactos principales y watchers de un deal se sugieren como invitados cuando tienen correo.
- La sincronización nativa con Google y Outlook permite elegir dirección, visibilidad y tipos de actividad.
- Google puede crear un enlace de Meet desde la actividad sincronizable, sin una herramienta de videollamada separada.
- Al completar o eliminar una actividad sincronizada, Apex intenta actualizar el evento externo sin bloquear el cambio en CRM.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Calendario de actividades | activity-calendar.md | Visualiza y administra actividades CRM. |
| Crear y editar actividades | create-edit-activity.md | Registra detalles, horarios y prioridades. |
| Completar y eliminar actividades | complete-delete-activity.md | Actualiza el estado y el evento externo asociado. |
| Vistas, filtros y búsqueda | activity-views-filters.md | Alterna presentaciones y restringe resultados. |
| Tipos de actividad | activity-types.md | Clasifica actividades y documenta su gestión. |
| Vincular actividades al CRM | activity-relationships.md | Relaciona contactos, compañías, deals y responsable. |
| Invitados y enlace de reunión | activity-attendees-meetings.md | Añade asistentes y conferencia de Google Meet. |
| Sincronización de calendario | calendar-sync.md | Conecta y configura Google u Outlook Calendar. |
| Recordatorios de actividades | activity-reminders.md | Documenta el proceso backend de recordatorios. |
| Acciones masivas | activity-bulk-actions.md | Registra la capacidad backend pendiente de UI. |
Acceso
- Ruta principal:
/[orgId]/activities - Como se llega:
Sidebar > CRM > Activities - Permiso requerido: permisos granulares de actividades
Alcance tecnico
- Frontend:
ActivitiesViewyActivitiesCalendarView. - Backend:
activities,activity-types,activities-bulk-actionsyprocess-activity-reminders. - Superficies publicas: ninguna.
- Integraciones externas: calendar integrations.
Relaciones
- Depende de: Contactos, Compañías y Deals.
- Usado por: Timeline CRM y recordatorios.
Limitaciones y notas
- Por confirmar: comportamiento de sincronización exacto con calendar integrations.
id: activity-attendees-meetings modulo: actividades app: crm nombre: Invitados y enlace de reunión tipo: integracion
Invitados y enlace de reunión
Permite añadir invitados a una actividad sincronizable y crear o consultar un enlace de Google Meet.
Que se logra
- Resultado: convierte una actividad CRM en una reunión convocada con sus interesados y, en Google, con enlace de conferencia.
- Caso de uso: una agencia invita al contacto y a los watchers de un deal a la reunión de presentación sin salir del CRM.
- Se combina con: Watchers del deal y Sincronización con Google y Outlook Calendar.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Activity form > Add Invites - Componente(s):
ActivityForm.tsx,ActivityInvites.tsx
Como funciona
- Crea o edita una actividad y asigna un miembro con integración de calendario activa.
- Selecciona
Add Invites. - Añade invitados; el contacto relacionado y watchers del deal se sugieren cuando tienen correo.
- Para una integración Google y una actividad pendiente, activa
Add video conference. - Guarda; si ya existe, el formulario muestra el enlace de Google Meet.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Invitados | lista | No | Disponible cuando la actividad puede sincronizarse. |
Add video conference |
casilla | No | Solo aparece para Google y actividades pendientes. |
Reglas y validaciones
- Los invitados no se habilitan si no hay integración de calendario activa para el responsable.
- La actividad completada no ofrece la creación de conferencia.
Backend
- Servicios:
activities(método: create/patch),organization-users-calendar-integrations(método: find),deal-watchers(método: find) - Efectos: los invitados y la solicitud de conferencia se trasladan a la actividad sincronizada.
Relaciones
- Requiere: Responsable con integración activa; Google para conferencia de Meet.
- Dispara / afecta: Sincronización de calendario y watchers del deal.
Notas
- Por confirmar: soporte de enlace de reunión equivalente para Outlook.
id: activity-bulk-actions modulo: actividades app: crm nombre: Acciones masivas de actividades tipo: accion
Acciones masivas de actividades
El backend expone una capacidad de acciones masivas sobre actividades con permisos granulares.
Que se logra
- Resultado: no hay una operación de negocio verificable desde usuario; existe un servicio autorizado pero no una UI ni acciones implementadas confirmadas.
- Caso de uso: un equipo de ventas necesitaría definir las acciones y conectar una interfaz antes de operar varias actividades a la vez.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI: Por confirmar: no se encontró un control de acciones masivas conectado en
ActivitiesView.tsx. - Componente(s): Por confirmar: no se encontró componente de UI asociado.
Como funciona
- Por confirmar: flujo y acciones disponibles para el usuario.
- El servicio
activities-bulk-actionsestá registrado en el backend.
Reglas y validaciones
- Las autorizaciones granulares incluyen un manejador para
activities-bulk-actions. - Por confirmar: alcance por selección, filtros y acciones soportadas.
Backend
- Servicios:
activities-bulk-actions(método: create) - Hooks relevantes solo si cambian el comportamiento visible: autorización granular para el servicio.
- Efectos: Por confirmar: modificaciones específicas que ejecuta el servicio.
Relaciones
- Requiere: Actividades y permisos granulares.
- Dispara / afecta: Por confirmar.
Notas
- No se presenta como funcionalidad de UI completa mientras no se confirme el flujo en frontend.
id: activity-calendar modulo: actividades app: crm nombre: Calendario de actividades tipo: vista
Calendario de actividades
Consulta tareas, llamadas y reuniones del CRM en formato calendario.
Que se logra
- Resultado: sitúa el trabajo comercial y de atención en una agenda temporal que revela compromisos y huecos.
- Caso de uso: una clínica revisa las llamadas y reuniones de la semana antes de coordinar a recepción.
- Se combina con: Crear y editar actividades, Sincronización con Google y Outlook Calendar y Recordatorios.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Sidebar > CRM > Activities - Componente(s):
ActivitiesView.tsx,ActivitiesCalendarView.tsx
Como funciona
- Abre
Activities. - Consulta el calendario y actividades existentes.
- Crea o actualiza una actividad desde el flujo disponible.
Reglas y validaciones
- Por confirmar: los filtros y vistas exactos disponibles.
Backend
- Servicios:
activities,activity-types(método: find/create/patch/remove)
Relaciones
- Requiere: Contactos, Compañías o Deals según la actividad.
- Dispara / afecta: Timeline CRM y recordatorios.
Notas
- El backend incluye procesamiento de recordatorios.
id: activity-relationships modulo: actividades app: crm nombre: Vincular actividades al CRM tipo: accion
Vincular actividades al CRM
Asocia una actividad a un contacto, compañía, deal y responsable para conservar el contexto comercial.
Que se logra
- Resultado: cada acción pendiente queda visible desde los registros CRM que motivaron el trabajo.
- Caso de uso: una inmobiliaria vincula una visita con el comprador, la constructora y la oportunidad para no perder seguimiento.
- Se combina con: Contactos, Compañías, Deals e Invitados y enlace de reunión.
Donde esta
- Ruta:
/[orgId]/activitiesy perfiles CRM relacionados - Acceso en UI:
Activity form > selección de registros relacionados - Componente(s):
ActivityForm.tsx,ActivityRelatedSelection.tsx,ActivitiesView.tsx
Como funciona
- Abre la creación o edición de una actividad.
- Selecciona el contacto, compañía, deal y miembro responsable cuando aplique.
- Guarda la actividad.
- Desde la lista, abre los enlaces del contacto, compañía o deal asociados.
Reglas y validaciones
- Una actividad puede iniciarse desde un perfil CRM con el contacto, compañía o deal ya seleccionado.
- El contacto principal y los watchers del deal se usan como sugerencias de invitación cuando tienen correo.
Backend
- Servicios:
activities(método: create/get/patch/find),contacts,companies,dealsyorganizations-users(método: find/get) - Hooks relevantes solo si cambian el comportamiento visible: la consulta rápida adjunta los registros relacionados.
- Efectos: incluye la actividad en los perfiles y el timeline de sus registros.
Relaciones
- Requiere: Contactos, Compañías, Deals y miembros de organización.
- Dispara / afecta: Invitaciones, sincronización de calendario y timeline CRM.
Notas
- La actividad no exige una relación CRM en el formulario encontrado.
id: activity-reminders modulo: actividades app: crm nombre: Recordatorios de actividades tipo: automatizacion
Recordatorios de actividades
El backend incluye un proceso dedicado para evaluar y enviar recordatorios de actividades.
Que se logra
- Resultado: no hay un envío de recordatorios verificable todavía; la superficie actual solo expone un servicio sin lógica de procesamiento observable.
- Caso de uso: una clínica necesitaría una configuración y un procesador funcional antes de usarlo para recordar llamadas a pacientes.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI: Por confirmar: no se encontró una configuración visible de recordatorios en las rutas inspeccionadas.
- Componente(s): Por confirmar: no se encontró un componente de configuración asociado.
Como funciona
- El proceso de recordatorios recibe una solicitud de ejecución.
- La implementación actual devuelve la solicitud sin evaluar actividades ni entregar notificaciones.
Reglas y validaciones
- No hay condiciones de envío, reintento o supresión implementadas en el servicio revisado.
Backend
- Servicios:
process-activity-reminders(método: create),activities(método: find/patch) - Efectos: no se confirma el envío de notificaciones.
Relaciones
- Requiere: Actividades.
- Dispara / afecta: Recordatorios de actividades.
Notas
- El servicio actual es un marcador técnico; no debe presentarse como recordatorio operativo hasta implementar su procesamiento.
id: activity-types modulo: actividades app: crm nombre: Tipos de actividad tipo: configuracion
Tipos de actividad
El sistema dispone de tipos para clasificar actividades y cuenta con un servicio de gestión para tipos de actividad.
Que se logra
- Resultado: diferencia tareas, llamadas y reuniones para que la agenda y la sincronización reflejen la intención de cada acción.
- Caso de uso: una academia distingue sus llamadas de admisión de las reuniones informativas en la agenda del equipo.
- Se combina con: Crear y editar actividades y Sincronización con Google y Outlook Calendar.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Activity form > selector de tipo - Componente(s):
ActivityForm.tsx,ActivitiesView.tsx,ActivitiesCalendarView.tsx
Como funciona
- Crea o edita una actividad.
- Selecciona uno de los tipos visibles:
Call,Meeting,Task,Deadline,EmailoLunch. - La lista y el calendario muestran un icono y color según el tipo.
Reglas y validaciones
- Los tipos usados por el formulario inspeccionado están definidos en la aplicación.
- La configuración de sincronización permite elegir qué tipos se envían al calendario externo.
Backend
- Servicios:
activity-types(método: find/create/patch/remove),activities(método: create/patch) - Efectos: clasifica actividades en las vistas y sincronización.
Relaciones
- Requiere: Actividades.
- Dispara / afecta: Calendario y sincronización externa.
Notas
- Por confirmar: la ruta y UI administrativa que consume el servicio
activity-types; no se encontró en la superficie autenticada inspeccionada.
id: activity-views-filters modulo: actividades app: crm nombre: Vistas, filtros y búsqueda de actividades tipo: vista
Vistas, filtros y búsqueda de actividades
Alterna entre lista y calendario, filtra por responsable o estado y busca actividades por texto.
Que se logra
- Resultado: cada miembro reduce la agenda a sus pendientes, a un responsable o a un período concreto.
- Caso de uso: un gerente de ventas revisa las reuniones pendientes de su equipo en la semana actual.
- Se combina con: Calendario de actividades y Crear y editar actividades.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Activities > barra superior - Componente(s):
ActivitiesView.tsx,ActivitiesCalendarView.tsx,TeamMemberSelector.tsx
Como funciona
- Cambia entre
Calendar ViewyList View. - Selecciona un responsable desde el selector de equipo.
- Elige
Not Done,Doneo todos los estados. - Usa
Search activitiespara restringir los resultados. - En el calendario, cambia entre
Month,WeekyDayy navega por fechas.
Reglas y validaciones
- El responsable inicial es el usuario actual cuando está disponible.
- La preferencia de vista lista/calendario se guarda para el usuario.
- La lista se pagina con tamaños entre 10 y 50 elementos; el calendario recupera todos los resultados del período visible.
Backend
- Servicios:
activities(método: find),organizations-users(método: find),users(método: patch) - Hooks relevantes solo si cambian el comportamiento visible: la consulta rápida aporta el contacto, compañía, deal y responsable para cada actividad.
- Efectos: define las actividades visibles en ambas presentaciones.
Relaciones
- Requiere: Miembros de la organización.
- Dispara / afecta: Exportación y navegación hacia contactos, compañías y deals.
Notas
- La vista por asignado se consigue mediante el selector de responsable; no se encontró una ruta separada por asignado.
id: calendar-sync modulo: actividades app: crm nombre: Sincronización con Google y Outlook Calendar tipo: integracion
Sincronización con Google y Outlook Calendar
Conecta el calendario personal para sincronizar actividades CRM y eventos externos de acuerdo con una configuración elegida.
Que se logra
- Resultado: mantiene coordinada la agenda personal con las actividades CRM y permite consultar disponibilidad externa al planear trabajo.
- Caso de uso: una clínica asigna una llamada al asesor correcto consultando su disponibilidad y sincroniza los eventos futuros seleccionados.
- Se combina con: Crear y editar actividades, Invitados y enlace de reunión y Calendario de actividades.
Donde esta
- Ruta:
/[orgId]/my-profile/calendar-sync - Acceso en UI:
My Profile > Calendar Sync > Add Account - Componente(s):
CalendarSyncSettings.tsx,ConnectCalendarDialog.tsx,CalendarIntegrationCard.tsx,ActivityForm.tsx
Como funciona
- Abre
Calendar Syncy seleccionaAdd Account. - Elige
Google CalendaruOutlook Calendar. - Configura
Two-way sync,One-way syncoView only, visibilidad y tipos de actividad. - Completa la autorización con el proveedor.
- Administra conexiones activas, inactivas o con error desde la misma pantalla.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Proveedor | selección | Sí | Google Calendar u Outlook Calendar. |
| Tipo de sincronización | selección | Sí | Bidireccional, unidireccional o solo vista. |
| Visibilidad | selección | Sí | Configura eventos externos y privados en CRM. |
| Tipos de actividad | selección múltiple | Sí | Define qué actividades CRM se sincronizan. |
| Al borrar evento externo | selección | Condicional | En Google bidireccional: completar, eliminar o no cambiar la actividad CRM. |
Reglas y validaciones
- Solo se sincronizan eventos futuros al conectar una cuenta.
- Una actividad pendiente solo se sincroniza si tiene responsable, integración activa y un tipo incluido en la configuración.
- Los fallos de sincronización no impiden guardar la actividad; se marca su estado de sincronización como fallido.
- Al desconectar se deja de sincronizar; una conexión inactiva se puede eliminar.
Backend
- Servicios:
organization-users-calendar-integrations,calendar-sync-processor,google-calendar-webhook,outlook-calendar-webhook,organization-users-calendar-integration-events(método: find/create/patch/remove) - Hooks relevantes solo si cambian el comportamiento visible: creación, edición, finalización y eliminación de actividades se propagan al calendario externo si aplica.
- Efectos: crea, actualiza, completa o elimina eventos externos y procesa cambios recibidos de Google u Outlook.
Relaciones
- Requiere: Perfil del usuario, miembro asignado y autorización OAuth del proveedor.
- Dispara / afecta: Actividades, invitados y enlaces de Google Meet.
Notas
View onlymuestra disponibilidad durante la creación sin sincronizar.
id: complete-delete-activity modulo: actividades app: crm nombre: Completar y eliminar actividades tipo: accion
Completar y eliminar actividades
Permite marcar una actividad como realizada o eliminarla, incluyendo la actualización de su evento externo cuando corresponde.
Que se logra
- Resultado: mantiene al día la agenda CRM y, si corresponde, su reflejo en el calendario externo.
- Caso de uso: una consultora completa una llamada realizada y evita que siga apareciendo entre sus pendientes y en Google Calendar.
- Se combina con: Sincronización con Google y Outlook Calendar y Vistas, filtros y búsqueda.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Activities > casilla Done; edición completa de la actividad - Componente(s):
ActivitiesView.tsx,ActivityForm.tsx
Como funciona
- Localiza una actividad en la lista.
- Marca o desmarca su casilla
Done. - Abre una actividad para editarla o usar las acciones de eliminación disponibles.
Reglas y validaciones
- La vista predeterminada muestra actividades no realizadas.
- Al marcarla como realizada, la lista de no realizadas la oculta.
- Si la actividad se sincronizó con Google u Outlook, completarla actualiza su evento externo; eliminarla intenta eliminar el evento asociado.
- Los errores de sincronización no deben impedir completar ni eliminar la actividad CRM.
Backend
- Servicios:
activities(método: patch/remove) - Hooks relevantes solo si cambian el comportamiento visible:
markCalendarEventDoneydeleteFromCalendarpropagan el cambio cuando hay una integración activa. - Efectos: cambia estado de actividad y de evento de calendario asociado.
Relaciones
- Requiere: Actividad existente; integración de calendario solo cuando se sincronizó.
- Dispara / afecta: Lista, calendario y recordatorios.
Notas
- Por confirmar: el punto exacto de UI para eliminar una actividad dentro del formulario.
id: create-edit-activity modulo: actividades app: crm nombre: Crear y editar actividades tipo: accion
Crear y editar actividades
Crea o actualiza tareas, llamadas, reuniones y otros tipos de actividad con horario, prioridad y detalles.
Que se logra
- Resultado: transforma una próxima acción comercial en una tarea calendarizada, asignada y trazable.
- Caso de uso: una agencia programa una reunión de seguimiento, le asigna prioridad y la vincula con el deal del cliente.
- Se combina con: Vincular actividades al CRM, Invitados y enlace de reunión y Sincronización de calendario.
Donde esta
- Ruta:
/[orgId]/activities - Acceso en UI:
Activities > Add Activity, tarjeta existente o creación rápida desde el calendario - Componente(s):
ActivityForm.tsx,ActivityQuickCreatePopover.tsx,ActivitiesCalendarView.tsx
Como funciona
- Selecciona
Add Activity, un bloque horario del calendario o una actividad existente. - Escribe el asunto y elige el tipo.
- Define fechas, horas, prioridad y detalles opcionales.
- Guarda con
Saveo actualiza conUpdate.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Asunto | texto | Sí | El guardado requiere contenido. |
| Tipo | selección | Sí | Call, Meeting, Task, Deadline, Email o Lunch. |
| Fechas y horas | fecha y hora | Sí | La duración se calcula desde el intervalo. |
| Prioridad | selección | No | High, Medium, Low o sin prioridad. |
| Ubicación y descripción | texto | No | Se pueden expandir desde el formulario. |
Reglas y validaciones
- Si la hora inicial supera la final en el mismo día, el formulario ajusta la hora final.
- La creación rápida de calendario usa bloques de 30 minutos y abre el formulario completo cuando se necesita.
Backend
- Servicios:
activities(método: create/get/patch) - Hooks relevantes solo si cambian el comportamiento visible: una creación o edición puede sincronizarse al calendario del responsable.
- Efectos: actualiza listas, calendario y timeline CRM.
Relaciones
- Requiere: Responsables y, opcionalmente, contactos, compañías o deals.
- Dispara / afecta: Sincronización de calendario y recordatorios.
Notas
- Por confirmar: si existen tipos de actividad adicionales creados por configuración.
id: ai-reports app: crm nombre: Reportes con IA estado: shipped permiso: can_access_analytics
Reportes con IA
Área de Analytics para construir páginas de reportes con Nova y ejecutar análisis IA por conversación. Está dirigida a equipos que necesitan consultar métricas del CRM y clasificar conversaciones sin preparar consultas manualmente.
Para que sirve
- Un equipo comercial crea un reporte de pipeline y ventas para identificar oportunidades estancadas por etapa o responsable.
- Una empresa de soporte analiza conversaciones por canal y clasifica motivos, sentimiento o resultados definidos por el equipo.
- Una cadena de servicios prepara una página de indicadores con filtros para comparar reservas, deals o actividad entre periodos.
- Un gerente de operaciones combina tablas y gráficos para revisar el rendimiento de miembros, asistentes o canales desde datos del CRM.
- Una agencia clona un análisis de conversaciones para evaluar campañas diferentes con los mismos criterios.
Que lo hace diferente
- Nova construye reportes sobre datos reales de la organización y prueba cada fuente de datos antes de guardar un widget; no entrega un gráfico basado solo en una descripción.
- Las páginas admiten widgets, filtros vinculados y distribución en lienzo, de modo que una misma vista puede separar métricas comerciales, operativas y de atención.
- Los filtros actualizan únicamente los widgets que declararon vínculo con ellos, evitando que una selección cambie resultados no relacionados.
- Además de gráficos, el análisis IA procesa conversaciones reales que cumplen filtros del CRM y extrae los campos que el equipo define.
- El procesamiento de conversaciones es asíncrono, muestra avance, resultados y errores, y su inicio se controla mediante Wallet.
Acceso
- Ruta principal:
/[orgId]/analytics/ai-reports - Como se llega:
Analytics > AI Reports; los análisis de conversaciones están enAnalytics > AI Insights - Permiso requerido:
can_access_analytics
Alcance tecnico
- Frontend:
analytics/ai-reports/page.tsx,analytics/ai-insights/page.tsx,AnalyticsReportsCanvasView.tsxyAIAnalyticsView.tsx. - Backend:
report-pages,report-widgets,report-widget-data,ai-report-builder,analytics-ai-conversations-jobyanalytics-ai-conversations-job-result. - Superficies publicas: no hay rutas públicas para estas pantallas.
- Integraciones externas: OpenRouter genera y prueba los widgets de Nova; SQS, OpenRouter (LLM) y Jev (clasificador Fast) procesan cada conversación de un trabajo.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Páginas de reportes | report-pages.md | Crea pestañas, las abre por URL y cambia su nombre en línea. |
| Widgets de visualización | report-widgets.md | Agrupa los gráficos, métricas, tablas y bloques que puede crear Nova. |
| Constructor de reportes con Nova | nova-report-builder.md | Convierte una instrucción en páginas y widgets con datos comprobados. |
| Filtros de página | report-filters.md | Aplica valores solo a los widgets que los vincularon. |
| Lienzo y distribución | report-layout.md | Guarda posición y tamaño de cada widget tras moverlo o redimensionarlo. |
| Datos de widgets | widget-data.md | Ejecuta de forma segura la fuente de datos guardada de un gráfico. |
| Tipos de visualización | visualization-types.md | Define las visualizaciones y bloques de contenido disponibles. |
| Edición y eliminación de widgets | widget-editing.md | Renombra, inspecciona, modifica con Nova y elimina widgets. |
| Análisis IA de conversaciones | ai-conversation-analysis.md | Define un trabajo, sus filtros y los campos que IA debe extraer. |
| Seguimiento de trabajos de análisis | analysis-job-monitoring.md | Muestra progreso en tiempo real, resultados y operaciones permitidas. |
Relaciones
- Depende de: datos de CRM, Conversaciones y Wallet.
- Usado por: equipos comerciales, de soporte y de operaciones.
Limitaciones y notas
Nova solo puede guardar widgets cuya consulta de lectura sea válida y se ejecute correctamente para la organización. Las páginas adicionales y la cantidad visible de widgets usan controles de plan. Cada trabajo de conversaciones cobra Wallet una vez al iniciarse y termina de forma asíncrona.
id: ai-conversation-analysis modulo: ai-reports app: crm nombre: Análisis IA de conversaciones tipo: automatizacion
Análisis IA de conversaciones
Permite definir un trabajo que aplica instrucciones de IA a cada conversación que coincida con los filtros elegidos.
Que se logra
- Resultado: el equipo obtiene campos comparables extraídos de un conjunto de conversaciones reales, delimitado por los criterios operativos que elija.
- Caso de uso: un equipo de soporte analiza conversaciones de WhatsApp cerradas durante un mes para identificar motivo de contacto, resolución y sentimiento.
- Se combina con: Conversaciones, Asistentes IA, etiquetas, pipelines de deals y Seguimiento de trabajos de análisis.
Donde esta
- Ruta:
/[orgId]/analytics/ai-insights - Acceso en UI:
Analytics > AI Insights > Create analysis - Componente(s): AIAnalyticsView.tsx, CreateAnalysisJobDialog.tsx, AnalysisResultsView.tsx
Como funciona
- Pulsar
Create analysise indicar nombre y descripción. - Elegir intervalo de fechas, al menos un canal y al menos un estado; opcionalmente restringir por miembros, asistentes IA, etiquetas, pipeline y etapas.
- Agregar uno o más campos de análisis con nombre, tipo e instrucción para IA. En
classification, añadir al menos dos opciones para usar el clasificadorFast; dejarlas vacías extrae etiquetas libres conStandard. - Crear el trabajo; desde la lista, usar
Runmientras esté en borrador. - Cuando tenga más de una conversación procesada, pulsar
Viewpara abrir sus resultados.
Reglas y validaciones
- Los tipos de campo son
text,number,classification,booleanydate. - Cada nombre de campo debe ser único, no puede contener espacios ni caracteres fuera de letras, números y guion bajo.
- Una columna
classificationcon 2 o más opciones, o una columnaboolean, se procesa con el clasificadorFast(Jev).text,number,dateyclassificationsin opciones usan el LLMStandard. - El trabajo muestra
Fast,MixedoStandardsegún esa mezcla. Si hay columnasStandard, ellas marcan el ritmo. - El trabajo requiere nombre, al menos un canal, al menos un estado y un campo de análisis.
- Al ejecutarlo se comprueba y debita Wallet una vez por conversación (
$0.004); el motor no cambia el precio. Después se procesa de forma asíncrona.
Backend
- Servicios:
analytics-ai-conversations-job(create/patch),analytics-ai-conversations-job-result(create/patch) - Efectos: calcula las conversaciones objetivo, crea resultados por conversación y envía el trabajo a la cola de procesamiento.
Relaciones
- Requiere: conversaciones que cumplan filtros y saldo suficiente de Wallet.
- Dispara / afecta: resultados de IA y métricas agregadas del trabajo.
Notas
El diálogo puede abrirse con filtros y campos propuestos por el asistente de IA de esta sección.
id: analysis-job-monitoring modulo: ai-reports app: crm nombre: Seguimiento de trabajos de análisis tipo: vista
Seguimiento de trabajos de análisis
Muestra cada trabajo de análisis, su avance y las operaciones disponibles según su estado.
Que se logra
- Resultado: el responsable conoce cuántas conversaciones se procesaron, qué errores hubo y cuándo puede consultar o reutilizar el análisis.
- Caso de uso: una empresa de telecomunicaciones vigila el análisis de interacciones de soporte y clona la definición para evaluar el periodo siguiente.
- Se combina con: Análisis IA de conversaciones, Conversaciones y Wallet.
Donde esta
- Ruta:
/[orgId]/analytics/ai-insights - Acceso en UI:
AI Insights > lista de trabajos - Componente(s): AnalysisJobsList.tsx, AnalysisMetricsView.tsx
Como funciona
- Entrar a
Analytics > AI Insights. - Consultar nombre, fecha, conversaciones procesadas, errores y total.
- Usar
EditoRunsi el trabajo sigue enDraft. - Pulsar
Viewcuando haya más de una conversación procesada. - Clonar un trabajo para reutilizar su definición o eliminarlo cuando no esté en ejecución.
Reglas y validaciones
- Los estados visibles son
Draft,Running,Processing,CompletedyFailed. - Cada trabajo muestra además si corre en
Fast,MixedoStandardsegún sus columnas. - La lista se suscribe por tiempo real a trabajos en
RunningoProcessing. - En resultados, las columnas Fast muestran confianza 0–1; las métricas incluyen promedio y conteo de baja confianza.
- No permite eliminar un trabajo que esté ejecutándose o procesándose.
- Si un trabajo en procesamiento no progresa durante 30 minutos, se marca como fallido.
Backend
- Servicios:
analytics-ai-conversations-job(find/get/patch/remove),analytics-ai-conversations-job-result(find) - Efectos: las transiciones terminales actualizan el conteo de procesadas y errores; al completarse se calculan métricas finales.
Relaciones
- Requiere: un trabajo de análisis existente.
- Dispara / afecta: resultados y métricas del análisis seleccionado.
Notas
La ejecución distribuye el procesamiento por conversación a través de SQS; la pantalla no espera ese trabajo en la petición inicial.
id: nova-report-builder modulo: ai-reports app: crm nombre: Constructor de reportes con Nova tipo: accion
Constructor de reportes con Nova
Convierte una petición escrita en páginas, widgets y vínculos de filtros. Nova prueba la fuente de datos antes de guardar un widget.
Que se logra
- Resultado: el usuario obtiene un reporte funcional desde una pregunta de negocio, con widgets cuya fuente de datos fue comprobada antes de aparecer en el lienzo.
- Caso de uso: una agencia pide comparar deals ganados por mes y Nova crea el gráfico y los filtros necesarios para explorarlo.
- Se combina con: Páginas de reportes, Filtros de página, Datos de widgets y Edición y eliminación de widgets.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > Add with Nova - Componente(s): AnalyticsReportsAddSheet.tsx, useAIReportBuilder.ts
Como funciona
- Crear o abrir una página de reporte.
- Pulsar
AddoAdd with Nova. - Describir el resultado esperado, por ejemplo una métrica, un gráfico comparativo o una tabla.
- Seguir el progreso de Nova en la hoja lateral y leer su respuesta final.
- Para cambiar un widget existente, abrir
Edit with Nova, describir el ajuste y enviar.
Reglas y validaciones
- Nova puede listar, crear y actualizar páginas; crear, actualizar y eliminar widgets; y revisar sus vínculos de filtros.
- Para cada widget con datos valida la visualización, la pertenencia a la organización y que la consulta se ejecute.
- Si faltan ubicación y tamaño, el backend sitúa el widget debajo de los existentes.
- Al reemplazar filtros de página o vínculos de un widget, se sustituye la lista completa anterior.
Backend
- Servicios:
ai-report-builder(create),report-pages(find/create/patch),report-widgets(find/create/patch/remove) - Efectos: devuelve la respuesta de Nova y las acciones realizadas; el lienzo recarga las páginas y widgets afectados.
Relaciones
- Requiere: una página activa para agregar widgets; puede crear otra página si la petición lo necesita.
- Dispara / afecta: páginas, widgets, fuentes de datos y vínculos de filtros.
Notas
Nova no se utiliza para iniciar análisis de conversaciones; esa función está en AI Insights.
id: report-filters modulo: ai-reports app: crm nombre: Filtros de página tipo: configuracion
Filtros de página
Permite usar filtros definidos para la página y refresca únicamente los widgets que declararon una vinculación con ellos.
Que se logra
- Resultado: cada lector puede acotar un reporte por el periodo o dimensión configurada sin alterar los widgets que no corresponden a ese filtro.
- Caso de uso: una red de clínicas filtra una página por canal y fechas para comparar resultados de atención, manteniendo intacto un indicador global.
- Se combina con: Páginas de reportes, Datos de widgets y Constructor de reportes con Nova.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > barra de filtros - Componente(s): ReportFilterBar.tsx, useReportFilterEntityOptions.ts
Como funciona
- Abrir una página que tenga filtros creados por Nova.
- Elegir un intervalo de fechas, opción, varias opciones, rango numérico, texto o valor booleano en la barra superior.
- Consultar los gráficos actualizados; un widget sin vinculación conserva sus datos.
- Pulsar
Resetpara quitar los valores elegidos y volver a los valores predeterminados de la página.
Reglas y validaciones
- Las opciones de filtros de miembros, pipelines, asistentes IA y etiquetas se cargan desde la organización.
- Una página define el filtro, pero cada widget declara el campo por el que responde.
- Los filtros de fecha admiten presets y un rango personalizado.
Backend
- Servicios:
report-pages(find/patch),report-widget-data(create) - Efectos: ejecuta otra vez la consulta de cada widget vinculado con los valores aplicables.
Relaciones
- Requiere: filtros presentes en la página activa.
- Dispara / afecta: datos mostrados por los widgets vinculados.
Notas
Los valores elegidos viven en la sesión del lienzo; no se guardan como configuración de la página.
id: report-layout modulo: ai-reports app: crm nombre: Lienzo y distribución tipo: configuracion
Lienzo y distribución
Distribuye los widgets de la página activa en una cuadrícula de doce columnas y conserva su tamaño y ubicación.
Que se logra
- Resultado: cada página presenta los indicadores en una distribución que prioriza la lectura del equipo y se conserva para futuras consultas.
- Caso de uso: un gerente de operaciones coloca primero los indicadores de cumplimiento y deja las tablas de detalle debajo para las reuniones semanales.
- Se combina con: Páginas de reportes y Widgets de visualización.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > lienzo - Componente(s): ReportCanvasGrid.tsx, AnalyticsReportsCanvasView.tsx
Como funciona
- Entrar a una página que tenga widgets.
- Mantener el control
Dragde un widget y moverlo a la posición deseada. - Redimensionar el widget desde la cuadrícula.
- Continuar trabajando: el lienzo agrupa los cambios y los guarda automáticamente.
Reglas y validaciones
- El lienzo utiliza doce columnas y filas visuales de 80 píxeles.
- El guardado se demora 800 ms para agrupar varios movimientos o redimensiones.
- La posición y dimensiones se guardan por widget, no como un diseño compartido de la página.
Backend
- Servicios:
report-widgets(patch) - Efectos: los cambios se mantienen al recargar o abrir la misma página mediante enlace directo.
Relaciones
- Requiere: widgets visibles en la página activa.
- Dispara / afecta: distribución de los widgets de esa página.
Notas
Los bloques de encabezado, texto, divisor y espaciador usan el mismo sistema de cuadrícula.
id: report-pages modulo: ai-reports app: crm nombre: Páginas de reportes tipo: configuracion
Páginas de reportes
Crea pestañas independientes para separar reportes y permite cambiar su nombre directamente en el encabezado.
Que se logra
- Resultado: el equipo organiza indicadores en vistas separadas y enlazables, con una pestaña por objetivo de análisis.
- Caso de uso: un concesionario mantiene una página para ventas mensuales y otra para seguimiento de leads, sin mezclar sus widgets.
- Se combina con: Widgets de visualización, Filtros de página y Lienzo y distribución.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > icono +; una página vacía muestraCreate report page - Componente(s): AnalyticsReportsCanvasView.tsx
Como funciona
- Entrar a
AI Reports. - Pulsar el icono
+para crear una página con el nombre predeterminado. - Elegir una pestaña para verla; la dirección conserva la página elegida con
reportPageId. - Pulsar el título de la pestaña activa, escribir el nuevo nombre y confirmar la edición.
Reglas y validaciones
- Las páginas se ordenan por su posición de creación.
- Crear más de una página requiere el control de plan
ai_reports_multiple_pages. - Si no existen páginas, no se puede pedir a Nova que agregue widgets.
Backend
- Servicios:
report-pages(find/create/patch) - Efectos: al crearla queda activa; sus filtros y widgets comienzan vacíos.
Relaciones
- Requiere: acceso a Analytics.
- Dispara / afecta: determina la página donde Nova crea y modifica widgets.
Notas
La eliminación de páginas no está expuesta en el lienzo actual.
id: report-widgets modulo: ai-reports app: crm nombre: Widgets de visualización tipo: configuracion
Widgets de visualización
Muestra los widgets de una página y los recarga después de una acción de Nova. Cada widget pertenece a una sola página.
Que se logra
- Resultado: una página convierte métricas o resultados de CRM en gráficos, tablas, indicadores o bloques que el equipo puede revisar en conjunto.
- Caso de uso: un equipo de ventas añade una tabla de deals abiertos y un gráfico por etapa en la misma página para priorizar su seguimiento.
- Se combina con: Constructor de reportes con Nova, Datos de widgets y Tipos de visualización.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > AddoAdd with Nova - Componente(s): ReportCanvasGrid.tsx, ReportCanvasWidget.tsx
Como funciona
- Elegir la pestaña de reporte donde se necesita el contenido.
- Pulsar
Addy describir a Nova la métrica, gráfico, tabla o bloque deseado. - Esperar la respuesta de Nova; el lienzo recarga los widgets de la página afectada.
- Usar los controles al pasar el cursor sobre un widget para renombrarlo, inspeccionarlo, pedir un cambio o eliminarlo.
Reglas y validaciones
- Los widgets con datos se validan antes de guardarse; los bloques de diseño no requieren fuente de datos.
- El control
ai_reports_more_widgetslimita la creación; los excedentes no se renderizan y se informa cuántos quedaron ocultos. - La organización solo puede ver o modificar sus propios widgets.
Backend
- Servicios:
report-widgets(find/create/patch/remove),ai-report-builder(create) - Efectos: Nova puede crear, actualizar o eliminar widgets y el lienzo actualiza sus datos.
Relaciones
- Requiere: una página de reporte activa.
- Dispara / afecta: filtros de página, distribución y consultas de datos.
Notas
La interfaz no ofrece un editor manual de tipo ni fuente del widget; esos cambios se solicitan a Nova.
id: visualization-types modulo: ai-reports app: crm nombre: Tipos de visualización tipo: vista
Tipos de visualización
Define cómo se representan los datos que Nova prepara para cada widget y qué bloques de contenido no requieren datos.
Que se logra
- Resultado: el resultado de una consulta se presenta en el formato que mejor comunica una tendencia, comparación, distribución, detalle o explicación.
- Caso de uso: una empresa de formación usa una métrica para inscripciones, una serie para su evolución y una tabla para revisar los cursos involucrados.
- Se combina con: Widgets de visualización, Datos de widgets y Constructor de reportes con Nova.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > widgets - Componente(s): ReportVisualizationRenderer.tsx, ReportLayoutBlock.tsx
Como funciona
- Pedir a Nova el tipo de resultado necesario desde
Add. - Nova guarda el tipo y la configuración compatible con las claves de datos devueltas.
- Consultar el resultado en el lienzo y pedir un ajuste a Nova si la representación no comunica bien la métrica.
Reglas y validaciones
- Tipos con datos:
metric,line,area,bar,horizontal_bar,stacked_bar,stacked_area,combo,pie,donut,scatter,gaugeytable. combomezcla series de barras y líneas.gaugeespera un valor entre 0 y 100.- Los bloques
heading,subheading,text,divideryspacerno ejecutan una consulta. - Las cifras admiten formato numérico, moneda, porcentaje y compacto; las tablas pueden formatear cada columna.
Backend
- Servicios:
report-widgets(find/create/patch),report-widget-data(create) - Efectos: el renderizador elige las claves de eje, serie, etiqueta y valor guardadas para el tipo.
Relaciones
- Requiere: una configuración de widget compatible con la fuente de datos.
- Dispara / afecta: presentación de las filas obtenidas por el widget.
Notas
Si un widget no tiene fuente de datos, el renderizador usa datos de ejemplo salvo en los bloques de diseño.
id: widget-data modulo: ai-reports app: crm nombre: Datos de widgets tipo: vista
Datos de widgets
Obtiene las filas de un widget con fuente de datos y las entrega al gráfico, métrica o tabla que lo representa.
Que se logra
- Resultado: cada visualización muestra datos actuales de la organización y se recalcula cuando cambia un filtro vinculado.
- Caso de uso: una empresa de servicios selecciona el último trimestre y ve actualizarse solo los widgets preparados para ese periodo.
- Se combina con: Filtros de página, Widgets de visualización y Constructor de reportes con Nova.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > widget con datos - Componente(s): ReportWidgetChart.tsx, ReportVisualizationRenderer.tsx
Como funciona
- Abrir una página de reportes con widgets de datos.
- El widget solicita sus filas al cargar y vuelve a solicitarlas cuando cambia un filtro que tiene vinculado.
- Revisar la visualización; después de una operación de Nova, el lienzo fuerza una actualización de los datos.
Reglas y validaciones
- Solo se ejecutan consultas de lectura contra tablas autorizadas.
- El servicio añade el alcance de organización, limita el resultado a 1.000 filas y corta consultas que exceden 15 segundos.
- Los filtros fijos del widget se suman a los valores elegidos en la página.
Backend
- Servicios:
report-widget-data(create) - Efectos: devuelve columnas, filas, cantidad de filas y si el widget tiene una consulta.
Relaciones
- Requiere: un widget con fuente de datos válida.
- Dispara / afecta: la visualización del widget.
Notas
Los bloques de diseño no solicitan datos; se muestran con su título y contenido.
id: widget-editing modulo: ai-reports app: crm nombre: Edición y eliminación de widgets tipo: accion
Edición y eliminación de widgets
Permite cambiar el título, conocer la fuente funcional del widget, solicitar ajustes a Nova y eliminarlo con confirmación.
Que se logra
- Resultado: el equipo mantiene los indicadores útiles, comprensibles y alineados con sus preguntas sin reconstruir toda la página.
- Caso de uso: un director comercial pide a Nova desglosar un gráfico por asesor, revisa el resultado y elimina el widget anterior.
- Se combina con: Constructor de reportes con Nova, Widgets de visualización y Filtros de página.
Donde esta
- Ruta:
/[orgId]/analytics/ai-reports - Acceso en UI:
AI Reports > controles al pasar sobre un widget - Componente(s): ReportCanvasWidgetActions.tsx, ReportCanvasInlineTitle.tsx
Como funciona
- Pasar el cursor sobre un widget para mostrar sus acciones.
- Pulsar el título para editarlo en línea.
- Usar
Edit with Nova, escribir el ajuste solicitado y enviarlo; Nova recibe el identificador y el contexto del widget. - Abrir
Infopara ver descripción, vínculos a filtros y, si el usuario es superadmin, la consulta del widget. - Pulsar
Delete, revisar el nombre y confirmar la eliminación.
Reglas y validaciones
- El botón para enviar a Nova permanece desactivado hasta que exista una instrucción.
- El contenido de la consulta solo se expone a superadmins y nunca para bloques de diseño.
- La eliminación usa borrado lógico.
Backend
- Servicios:
report-widgets(patch/remove),ai-report-builder(create) - Efectos: tras el cambio con Nova se recargan la página y los widgets tocados; eliminar retira el widget del lienzo.
Relaciones
- Requiere: un widget creado en la página activa.
- Dispara / afecta: título, contenido, vínculos de filtro o existencia del widget.
Notas
Info indica explícitamente cuando un widget es inmune a los filtros de página.
id: analytics app: crm nombre: Analytics CRM estado: shipped permiso: can_access_analytics
Analytics CRM
Reportes operativos y comerciales de conversaciones, deals, quotes, actividades y atribución.
Para que sirve
- Un contact center compara conversaciones por agente, etapa, país y tendencia para planear la operación de soporte.
- Una empresa B2B revisa el valor, progreso, productos y resultados de sus deals para detectar cuellos de botella del pipeline.
- Una agencia analiza qué anuncios y parámetros UTM aportan contactos y oportunidades para justificar inversión de adquisición.
- Un despacho comercial sigue el estado de quotes, sus aceptaciones, rechazos y vencimientos para recuperar propuestas.
- Un gerente mide creación y completitud de actividades para verificar que el equipo ejecute los seguimientos comprometidos.
Que lo hace diferente
- Reúne en un mismo módulo datos de conversaciones, deals, quotes, actividades, productos, pipelines, miembros y atribución.
- Permite pasar de la carga operativa de conversaciones al desempeño comercial de deals y propuestas con los mismos filtros de período.
- Muestra análisis específicos de deals ganados y perdidos, y de quotes aceptadas, rechazadas o vencidas.
- Incluye atribución por anuncios y UTM conectada con los contactos que ingresan al CRM.
- Ofrece comparación de períodos y exportación desde las vistas para análisis operativo y comercial.
Acceso
- Ruta principal:
/[orgId]/analytics - Como se llega:
Sidebar > Tools > Analytics - Permiso requerido: permiso de rol
can_access_analytics; el backend autorizaanalyticscon capacidadread.
Alcance tecnico
- Frontend: rutas
/[orgId]/analytics/{conversations,deals,quotes,activities,attribution}/**, excluidos AI Reports y AI Powered Analytics. - Backend:
analytics(find).reportsno alimenta estas vistas. - Integraciones externas: ninguna confirmada en estas vistas.
Funcionalidades internas
Relaciones
- Depende de: Conversaciones, Deals, Quotes, Actividades, Productos, Pipelines y miembros.
- Usado por: equipos que revisan operación y desempeño.
Limitaciones y notas
- Las rutas AI Reports y AI Powered Analytics se excluyen por pertenecer a otros módulos.
- La ruta
/[orgId]/analytics/dealsno muestra contenido en el código actual; verdeals-home.md.
id: activities-completion modulo: analytics app: crm nombre: Completitud de actividades tipo: vista
Completitud de actividades
Analiza la completitud general, vencimientos, duración y resultado por tipo.
Que se logra
- Resultado: Responde qué proporción de actividades del período fue completada y dónde hay tareas pendientes.
- Caso de uso: Un call center detecta si su equipo está cerrando los seguimientos comprometidos con los prospectos.
- Se combina con: Actividades y filtros de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/activities/completion - Acceso en UI:
Analytics > Activities > Completion - Componente(s):
ActivityCompletionView.tsx,CompletionSummaryCards.tsx,CompletionByTypeChart.tsx
Como funciona
- Ajuste filtros.
- Revise tarjetas y gráfica por tipo.
Reglas y validaciones
- Filtros: rango de fechas, tipo de actividad y miembro.
Backend
- Servicios:
analytics(método: find; análisis de completitud).
Relaciones
- Requiere: Actividades.
Notas
- Muestra
Overall Completion Rate,Completed Last Week,Completed Last Month,Overdue Rate, duraciones promedio yCompletionByTypeChart, que ofreceExport Excel.
id: activities-home modulo: analytics app: crm nombre: Entrada de actividades tipo: vista
Entrada de actividades
Redirige al resumen de actividades.
Que se logra
- Resultado: Lleva al análisis operativo de actividades para responder cómo está trabajando el equipo.
- Caso de uso: Una agencia comercial abre esta vista para revisar tareas, reuniones y seguimientos del período.
- Se combina con: Actividades y filtros de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/activities - Acceso en UI:
Analytics > Activities - Componente(s):
page.tsx
Como funciona
- Abra
Activities. - El sistema reemplaza la ruta por
Overview.
Reglas y validaciones
- No contiene filtros propios.
Backend
- Servicios: ninguno invocado por esta ruta.
Relaciones
- Requiere: Resumen de actividades.
Notas
- No añade métricas ni gráficas propias.
id: activities-overview modulo: analytics app: crm nombre: Resumen de actividades tipo: vista
Resumen de actividades
Resume cantidad, estado, duración y completitud de actividades.
Que se logra
- Resultado: Responde cuántas actividades se crearon, completaron o permanecen pendientes en el período.
- Caso de uso: Una clínica mide si su equipo administrativo está atendiendo las tareas que genera cada paciente.
- Se combina con: Actividades y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/activities/overview - Acceso en UI:
Analytics > Activities > Overview - Componente(s):
ActivityOverviewView.tsx,ActivityMetrics.tsx
Como funciona
- Ajuste filtros.
- Revise tarjetas y gráficas.
Reglas y validaciones
- Filtros: rango de fechas, tipo de actividad y miembro.
Backend
- Servicios:
analytics(método: find; métricas, actividades por tipo y completitud).
Relaciones
- Requiere: Actividades y miembros.
Notas
- Muestra
Total Activities,Completed,Pending,Overdue, tasa de completitud, duración promedio,ActivitiesByTypeChartyCompletionRateChart.
id: activities-team modulo: analytics app: crm nombre: Equipo de actividades tipo: vista
Equipo de actividades
Compara carga, estado, duración y tasa de completitud por miembro.
Que se logra
- Resultado: Responde qué miembros del equipo generan y completan más actividades.
- Caso de uso: Un equipo B2B compara la carga y cumplimiento de seguimientos entre sus ejecutivos.
- Se combina con: Actividades y filtros globales.
Donde esta
- Ruta:
/[orgId]/analytics/activities/team - Acceso en UI:
Analytics > Activities > Team - Componente(s):
ActivityTeamView.tsx,TeamPerformanceTable.tsx
Como funciona
- Ajuste filtros.
- Consulte la tabla
TeamPerformanceTable.
Reglas y validaciones
- Filtros: rango de fechas, tipo de actividad y miembro.
Backend
- Servicios:
analytics(método: find; actividades por miembro).
Relaciones
- Requiere: Actividades y miembros.
Notas
- La tabla incluye desempeño y ofrece
Export Excel.
id: activities-trends modulo: analytics app: crm nombre: Tendencias de actividades tipo: vista
Tendencias de actividades
Presenta el volumen, estado, duración y completitud de actividades por día y mes.
Que se logra
- Resultado: Responde cómo cambia con el tiempo el volumen de actividades y sus estados.
- Caso de uso: Una inmobiliaria detecta semanas en las que baja la creación de llamadas de seguimiento.
- Se combina con: Actividades y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/activities/trends - Acceso en UI:
Analytics > Activities > Trends - Componente(s):
ActivityTrendsView.tsx,DailyTrendsChart.tsx,MonthlyTrendsChart.tsx
Como funciona
- Ajuste filtros.
- Consulte las tendencias diaria y mensual.
Reglas y validaciones
- Filtros: rango de fechas, tipo de actividad y miembro.
Backend
- Servicios:
analytics(método: find; tendencias diarias y mensuales).
Relaciones
- Requiere: Actividades.
Notas
DailyTrendsChartyMonthlyTrendsChartdisponen deExport Excel.
id: attribution-ads modulo: analytics app: crm nombre: Atribución de anuncios tipo: vista
Atribución de anuncios
Analiza contactos, conversiones y resultados procedentes de anuncios.
Que se logra
- Resultado: Responde qué anuncios originan contactos y resultados comerciales atribuibles.
- Caso de uso: Un e-commerce identifica cuál campaña publicitaria está llevando contactos que avanzan en el CRM.
- Se combina con: Atribución, Contactos y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/attribution/ads - Acceso en UI:
Analytics > Attribution > Ads - Componente(s):
AttributionAdsView.tsx,AttributionShared.tsx
Como funciona
- Seleccione período y dimensión.
- Revise métricas, cobertura, tendencia y desglose.
Reglas y validaciones
- Filtros: rango de fechas y dimensión:
Source ID,Source URLoChannel.
Backend
- Servicios:
analytics(método: find; resumen, cobertura, desglose y tendencias con alcance de anuncios).
Relaciones
- Requiere: Contactos con atribución de anuncios.
Notas
- Muestra
AttributionMetricCards,AttributionCoverageCards,AttributionTrendsCardyAttributionBreakdownSection.
id: attribution-contacts modulo: analytics app: crm nombre: Contactos atribuidos tipo: vista
Contactos atribuidos
Lista contactos y sus datos de atribución según período y dimensión.
Que se logra
- Resultado: Responde cuántos contactos llegan por cada fuente atribuida.
- Caso de uso: Una academia compara los registros generados por sus campañas para decidir dónde invertir.
- Se combina con: Contactos, atribución UTM y anuncios.
Donde esta
- Ruta:
/[orgId]/analytics/attribution/contacts - Acceso en UI:
Analytics > Attribution > Contacts - Componente(s):
AttributionContactsView.tsx,AttributionContactsTable
Como funciona
- Seleccione período y dimensión.
- Navegue los resultados con los controles anterior y siguiente.
Reglas y validaciones
- Filtros: rango de fechas y dimensión: fuente, canal, identificador, URL o
UTM Source. - La tabla muestra 20 contactos por página.
Backend
- Servicios:
analytics(método: find; detalle de atribución).
Relaciones
- Requiere: Contactos.
Notas
- Muestra
AttributionContactsTable.
id: attribution-home modulo: analytics app: crm nombre: Entrada de atribución tipo: vista
Entrada de atribución
Redirige al tablero de resumen de atribución.
Que se logra
- Resultado: Lleva al análisis de origen de contactos y resultados para evaluar la adquisición.
- Caso de uso: Una empresa de servicios entra aquí para entender qué fuentes están alimentando su CRM.
- Se combina con: Atribución, Contactos y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/attribution - Acceso en UI:
Analytics > Attribution - Componente(s):
page.tsx
Como funciona
- Abra
Attribution. - El sistema redirige a
Overview.
Reglas y validaciones
- No contiene filtros propios.
Backend
- Servicios: ninguno invocado por esta ruta.
Relaciones
- Requiere: Resumen de atribución.
Notas
- No añade métricas ni gráficas propias.
id: attribution-overview modulo: analytics app: crm nombre: Resumen de atribución tipo: vista
Resumen de atribución
Relaciona adquisición, conversaciones, conversiones, deals ganados e ingresos por origen.
Que se logra
- Resultado: Responde qué canales y fuentes concentran el rendimiento atribuido del período.
- Caso de uso: Una agencia presenta a un cliente el aporte relativo de anuncios y campañas a la captación.
- Se combina con: Atribución de anuncios, UTM, Contactos y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/attribution/overview - Acceso en UI:
Analytics > Attribution > Overview - Componente(s):
AttributionOverviewView.tsx,AttributionShared.tsx
Como funciona
- Elija período y dimensión.
- Cambie entre
DailyyMonthlypara la tendencia. - Revise métricas, embudo, tendencia y desglose.
Reglas y validaciones
- Filtros: rango de fechas y dimensión: fuente, canal, campaña o UTM source.
Backend
- Servicios:
analytics(método: find; resumen, embudo, desglose y tendencias de atribución).
Relaciones
- Requiere: Contactos, conversaciones y deals.
Notas
- Muestra
AttributionMetricCards,AttributionFunnelCard,AttributionTrendsCardyAttributionBreakdownSection.
id: attribution-utm modulo: analytics app: crm nombre: Atribución UTM tipo: vista
Atribución UTM
Analiza la adquisición atribuida a parámetros UTM.
Que se logra
- Resultado: Responde qué combinaciones UTM generan contactos y resultados rastreables.
- Caso de uso: Un negocio de cursos compara campañas de
email, redes y afiliados sin mezclar sus fuentes. - Se combina con: Atribución, campañas y Contactos.
Donde esta
- Ruta:
/[orgId]/analytics/attribution/utm - Acceso en UI:
Analytics > Attribution > UTM - Componente(s):
AttributionUtmView.tsx,AttributionShared.tsx
Como funciona
- Seleccione período y dimensión UTM.
- Revise la cobertura y, si hay datos UTM, las tendencias y desglose.
Reglas y validaciones
- Filtros: rango de fechas y dimensión:
UTM Source,UTM Medium,UTM Campaign,UTM TermoUTM Content. - Sin contactos UTM, no se muestran tendencia ni desglose.
Backend
- Servicios:
analytics(método: find; resumen, cobertura, desglose y tendencias con alcance UTM).
Relaciones
- Requiere: Contactos con parámetros UTM.
Notas
- Muestra
AttributionMetricCards,AttributionCoverageCards,AttributionTrendsCardyAttributionBreakdownSection.
id: conversations-countries modulo: analytics app: crm nombre: Países de conversaciones tipo: vista
Países de conversaciones
Desglosa las conversaciones por el país detectado a partir de su información telefónica.
Que se logra
- Resultado: Responde desde qué países se originan más conversaciones del período.
- Caso de uso: Un comercio internacional identifica mercados donde debe reforzar cobertura de atención.
- Se combina con: Conversaciones y filtros globales.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/countries - Acceso en UI:
Analytics > Conversations > Countries - Componente(s):
ConversationCountriesView.tsx
Como funciona
- Aplique filtros superiores.
- Busque un país en
Search countries...o revise las gráficas y la tabla.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro, asistente de IA y canal.
Backend
- Servicios:
analytics(método: find; reporte por país).
Relaciones
- Requiere: Conversaciones con número telefónico.
Notas
- Muestra
Countries Detected,Phone Coverage,Top Country,Unknown Country,Top 10 Countries,Country DistributionyAll Countries.
id: conversations-daily-trend modulo: analytics app: crm nombre: Tendencia diaria de conversaciones tipo: vista
Tendencia diaria de conversaciones
Presenta las variaciones diarias de volumen, canales, asignación, no leídos y seguimientos.
Que se logra
- Resultado: Responde en qué días sube o baja el volumen de conversaciones.
- Caso de uso: Un soporte técnico relaciona picos diarios de mensajes con un lanzamiento de producto.
- Se combina con: Conversaciones y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/daily-trend - Acceso en UI:
Analytics > Conversations > Daily Trend - Componente(s):
DailyTrendView.tsx
Como funciona
- Seleccione el período y los filtros.
- Consulte las gráficas por día.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro, asistente de IA y canal.
Backend
- Servicios:
analytics(método: find; reporte de tendencias diarias).
Relaciones
- Requiere: Conversaciones y canales de mensajería.
Notas
- Gráficas:
Daily Conversations Volume,Daily Channel Distribution,Daily Assignment Rates,Daily Unread Messages,Daily Follow-upsyDaily Assignment Breakdown.
id: conversations-home modulo: analytics app: crm nombre: Entrada de conversaciones tipo: vista
Entrada de conversaciones
La ruta de conversaciones carga directamente el tablero Conversations Overview.
Que se logra
- Resultado: Lleva a las vistas que responden cómo evoluciona y se distribuye la atención conversacional.
- Caso de uso: Un equipo de soporte abre esta entrada para revisar la operación de sus canales.
- Se combina con: Conversaciones y filtros de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/conversations - Acceso en UI:
Analytics > Conversations - Componente(s):
ConversationOverviewView.tsx
Como funciona
- Abra
Conversations. - Revise el mismo contenido de
Conversations Overview.
Reglas y validaciones
- Aplica los filtros compartidos de conversaciones.
Backend
- Servicios:
analytics(método: find).
Relaciones
- Requiere: Resumen de conversaciones.
Notas
- Esta ruta no contiene una vista distinta; renderiza el resumen.
id: conversations-monthly-trend modulo: analytics app: crm nombre: Tendencia mensual de conversaciones tipo: vista
Tendencia mensual de conversaciones
Agrupa por mes el volumen, canales, asignación, no leídos y seguimientos.
Que se logra
- Resultado: Responde cómo evoluciona mes a mes la demanda de conversaciones.
- Caso de uso: Una empresa de turismo anticipa temporadas de alta consulta para planear turnos de atención.
- Se combina con: Conversaciones y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/monthly-trend - Acceso en UI:
Analytics > Conversations > Monthly Trend - Componente(s):
MonthlyTrendView.tsx
Como funciona
- Ajuste el período y filtros.
- Compare los valores mensuales de las gráficas.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro, asistente de IA y canal.
Backend
- Servicios:
analytics(método: find; reporte de tendencias mensuales).
Relaciones
- Requiere: Conversaciones y canales de mensajería.
Notas
- Gráficas:
Total Conversations,Channel Distribution,Assignment Rates,Unread Messages,Follow-upsyAssignment Breakdown.
id: conversations-overview modulo: analytics app: crm nombre: Resumen de conversaciones tipo: vista
Resumen de conversaciones
Resume volumen, asignación, actividad, mensajes sin leer y distribución por canal.
Que se logra
- Resultado: Responde cuántas conversaciones entran y cuál es la fotografía general de la atención.
- Caso de uso: Un negocio de delivery revisa el volumen atendido antes de ajustar la capacidad de su equipo.
- Se combina con: Conversaciones, miembros y filtros globales.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/overview - Acceso en UI:
Analytics > Conversations > Overview - Componente(s):
ConversationOverviewView.tsx
Como funciona
- Ajuste los filtros superiores.
- Revise las tarjetas y el bloque
Channels.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro del equipo, asistente de IA y canal.
Backend
- Servicios:
analytics(método: find; reporte de resumen de conversaciones).
Relaciones
- Requiere: Conversaciones y asistentes de IA.
Notas
- Muestra
Total Conversations,Assignment,Today's Activity,Unread Messagesy tarjetas deWhatsApp,InstagramyMessenger.
id: conversations-stages modulo: analytics app: crm nombre: Etapas de conversaciones tipo: vista
Etapas de conversaciones
Analiza el rendimiento de conversaciones por etapa de pipeline.
Que se logra
- Resultado: Responde en qué etapas se concentran las conversaciones y dónde se estanca la atención.
- Caso de uso: Una inmobiliaria detecta leads que permanecen demasiado tiempo en la etapa de primera respuesta.
- Se combina con: Conversaciones y automatizaciones.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/stages - Acceso en UI:
Analytics > Conversations > Stages Analysis - Componente(s):
ConversationStagesView.tsx
Como funciona
- Seleccione filtros y, si procede, un pipeline.
- Revise gráficas, análisis y detalle por etapa.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro, asistente de IA, canal y pipeline.
Backend
- Servicios:
analytics(método: find; reporte de etapas del pipeline).
Relaciones
- Requiere: Conversaciones y pipelines.
Notas
- Muestra
Total Conversations,Open Conversations,Avg Workload Distribution,Avg Days in Stage, gráficas de embudo, asignación, rendimiento y canales,Stages Efficiency AnalysisyStage Performance Details.
id: conversations-team modulo: analytics app: crm nombre: Equipo de conversaciones tipo: vista
Equipo de conversaciones
Muestra carga, antigüedad y estado de conversaciones asignadas por miembro.
Que se logra
- Resultado: Responde cuántas conversaciones gestiona cada agente y cómo se distribuye la carga.
- Caso de uso: Un contact center identifica asesores sobrecargados para redistribuir nuevas conversaciones.
- Se combina con: Conversaciones y miembros.
Donde esta
- Ruta:
/[orgId]/analytics/conversations/team - Acceso en UI:
Analytics > Conversations > Team - Componente(s):
ConversationTeamView.tsx
Como funciona
- Elija
UnreadoWaiting. - Ordene la tabla por sus encabezados y use
Load moresi hay más miembros.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro, asistente de IA, canal y pipeline.
- La vista usa páginas de hasta 50 miembros.
Backend
- Servicios:
analytics(método: find; reporte por miembro).
Relaciones
- Requiere: Conversaciones, miembros y pipelines.
Notas
- Muestra
Members,Assigned,Unread 24h+oReply 24h+,Load skewy la tablaTeam members.
id: deals-home modulo: analytics app: crm nombre: Entrada de deals tipo: vista
Entrada de deals
La ruta existe, pero su componente no retorna contenido visible.
Que se logra
- Resultado: Actualmente no muestra un reporte ni datos visibles; la ruta existe como punto de navegación sin contenido.
- Caso de uso: Un equipo B2B debe abrir
Overviewpara revisar semanalmente las oportunidades de su pipeline. - Se combina con: Resumen de deals, Pipelines y filtros de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/deals - Acceso en UI:
Analytics > Deals - Componente(s):
page.tsx
Como funciona
- Abra
Deals.
Reglas y validaciones
- La ruta no redirige ni carga una vista analítica en el código actual.
Backend
- Servicios: ninguno invocado por esta ruta.
Relaciones
- Requiere: Resumen de deals.
Notas
- La ayuda de Nova la describe como entrada del dominio, pero el código actual no renderiza esa interfaz.
id: deals-lost-analysis modulo: analytics app: crm nombre: Análisis de deals perdidos tipo: vista
Análisis de deals perdidos
Estudia volumen, valor, tiempo, causas y deals perdidos recientes.
Que se logra
- Resultado: Responde cuántos deals se pierden y cuáles son los motivos o patrones de pérdida.
- Caso de uso: Una concesionaria detecta que el precio explica la mayoría de oportunidades perdidas y ajusta su oferta.
- Se combina con: Deals, Pipelines y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/deals/lost-analysis - Acceso en UI:
Analytics > Deals > Lost Analysis - Componente(s):
DealLostAnalysisView.tsx
Como funciona
- Ajuste filtros de Deals.
- Revise resumen, tendencias, motivos y tablas.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; análisis y tendencias de deals perdidos).
Relaciones
- Requiere: Deals perdidos y pipelines.
Notas
- Incluye
LostSummaryCards, tendencias diarias y mensuales,TimeRangeDistributionChart,LostReasonsTableyRecentLossesTable; las dos últimas ofrecenExport Excel.
id: deals-overview modulo: analytics app: crm nombre: Resumen de deals tipo: vista
Resumen de deals
Resume métricas comerciales, distribución por pipeline y proporción de resultados.
Que se logra
- Resultado: Responde cuál es el valor y volumen general de oportunidades abiertas, ganadas o perdidas.
- Caso de uso: Una consultora revisa la salud comercial del período antes de proyectar ingresos.
- Se combina con: Deals, Pipelines y filtros globales.
Donde esta
- Ruta:
/[orgId]/analytics/deals/overview - Acceso en UI:
Analytics > Deals > Overview - Componente(s):
DealOverviewView.tsx,DealMetrics.tsx
Como funciona
- Ajuste filtros del dominio Deals.
- Consulte tarjetas y gráficas.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; métricas, pipeline y razón open/won/lost).
Relaciones
- Requiere: Deals y pipelines.
Notas
- Incluye
DealMetrics,DealsPipelineChartyWinLossChart.
id: deals-products modulo: analytics app: crm nombre: Productos de deals tipo: vista
Productos de deals
Muestra la distribución y el valor de los productos asociados a deals.
Que se logra
- Resultado: Responde qué productos aparecen con mayor frecuencia o valor dentro de los deals.
- Caso de uso: Un distribuidor identifica los productos que impulsan más oportunidades comerciales.
- Se combina con: Deals, Productos y Pipelines.
Donde esta
- Ruta:
/[orgId]/analytics/deals/products - Acceso en UI:
Analytics > Deals > Products - Componente(s):
DealProductsView.tsx,ProductsDistributionChart.tsx,ProductsValueChart.tsx
Como funciona
- Ajuste los filtros de Deals.
- Revise las dos gráficas de producto.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; distribución y valor por producto).
Relaciones
- Requiere: Deals, productos y pipelines.
Notas
- Gráficas:
ProductsDistributionChartyProductsValueChart.
id: deals-progress modulo: analytics app: crm nombre: Progreso de deals tipo: vista
Progreso de deals
Compara la evolución diaria y mensual de cantidad, estado y valor de deals.
Que se logra
- Resultado: Responde cuánto avanza el valor de los deals a través del embudo durante el período.
- Caso de uso: Un SaaS observa si sus oportunidades están progresando hacia cierre o permanecen inmóviles.
- Se combina con: Deals, Pipelines y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/deals/progress - Acceso en UI:
Analytics > Deals > Progress - Componente(s):
DealProgressView.tsx,DealDailyTrendsChart.tsx,DealMonthlyTrendsChart.tsx
Como funciona
- Ajuste filtros.
- Revise tendencias diarias y mensuales.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; tendencias diarias y mensuales de deals).
Relaciones
- Requiere: Deals y pipelines.
Notas
- Gráficas:
DealDailyTrendsChartyDealMonthlyTrendsChart.
id: deals-stages modulo: analytics app: crm nombre: Etapas de deals tipo: vista
Etapas de deals
Analiza distribución, conversión, velocidad y cuellos de botella por etapa.
Que se logra
- Resultado: Responde cuántos deals y qué valor se concentran en cada etapa del pipeline.
- Caso de uso: Una agencia identifica cuellos de botella en la etapa de propuesta y prioriza seguimientos.
- Se combina con: Deals y Pipelines.
Donde esta
- Ruta:
/[orgId]/analytics/deals/stages - Acceso en UI:
Analytics > Deals > Stages - Componente(s):
DealStagesView.tsx
Como funciona
- Seleccione un pipeline para el análisis detallado.
- Revise las tarjetas, gráficas, análisis y tabla de etapas.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
- Con varios pipelines, el embudo y el detalle solicitan elegir uno específico.
Backend
- Servicios:
analytics(método: find; etapas, velocidad y cuellos de botella).
Relaciones
- Requiere: Deals y pipelines.
Notas
- Muestra
Total Deals,Total Value,Avg Conversion Rate,Avg Days in Stage,Stage Velocity Analysis,Stage Performance Details, embudo, distribución y eficiencia.
id: deals-team modulo: analytics app: crm nombre: Equipo de deals tipo: vista
Equipo de deals
Muestra la evolución mensual y estadísticas de deals por miembro.
Que se logra
- Resultado: Responde cuántos deals maneja, gana o pierde cada miembro del equipo comercial.
- Caso de uso: Una empresa de software compara la producción comercial de sus account executives.
- Se combina con: Deals, miembros y Pipelines.
Donde esta
- Ruta:
/[orgId]/analytics/deals/team - Acceso en UI:
Analytics > Deals > Team - Componente(s):
DealTeamView.tsx,TeamMonthlyChart.tsx,TeamStatsChart.tsx
Como funciona
- Ajuste filtros de Deals.
- Consulte las gráficas disponibles por miembro.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; estadísticas mensuales y de equipo).
Relaciones
- Requiere: Deals, miembros y pipelines.
Notas
- Muestra
TeamMonthlyChartyTeamStatsChart.TeamPerformanceChartyTeamValueChartestán importados pero no se renderizan.
id: deals-won-analysis modulo: analytics app: crm nombre: Análisis de deals ganados tipo: vista
Análisis de deals ganados
Estudia volumen, valor, tiempo de cierre y deals ganados recientes.
Que se logra
- Resultado: Responde cuántos deals se ganan, por qué valor y con qué patrones de cierre.
- Caso de uso: Un proveedor B2B identifica qué tipo de oportunidad termina convirtiéndose con mayor frecuencia.
- Se combina con: Deals, Productos y Pipelines.
Donde esta
- Ruta:
/[orgId]/analytics/deals/won-analysis - Acceso en UI:
Analytics > Deals > Won Analysis - Componente(s):
DealWonAnalysisView.tsx
Como funciona
- Ajuste filtros de Deals.
- Revise el resumen, las tendencias, distribución y la tabla.
Reglas y validaciones
- Filtros: rango de fechas, pipeline, estado y miembro del equipo.
Backend
- Servicios:
analytics(método: find; análisis y tendencias de deals ganados).
Relaciones
- Requiere: Deals ganados y pipelines.
Notas
- Incluye
WonSummaryCards,WonDailyTrendsChart,WonMonthlyTrendsChart,TimeRangeDistributionChartyRecentWinsTable; esta última ofreceExport Excel.
id: export-analytics modulo: analytics app: crm nombre: Exportar datos de Analytics tipo: vista
Exportar datos de Analytics
Algunas tablas y gráficas permiten descargar sus datos como archivo Excel.
Que se logra
- Resultado: Los datos de la vista analítica se pueden llevar fuera de Apex para compartirlos o trabajarlos después.
- Caso de uso: Una agencia exporta el desempeño de deals para preparar el informe mensual de un cliente.
- Se combina con: Todas las vistas de Analytics.
Donde esta
- Ruta: vistas de tendencias, equipo, completitud y análisis de deals.
- Acceso en UI: botón
Export Exceldentro del componente correspondiente. - Componente(s):
DailyTrendsChart.tsx,MonthlyTrendsChart.tsx,TeamPerformanceTable.tsx,CompletionByTypeChart.tsx,RecentWinsTable.tsx,LostReasonsTable.tsx,RecentLossesTable.tsx
Como funciona
- Abra una vista que muestre
Export Excel. - Aplique filtros si necesita limitar los datos.
- Seleccione
Export Excel.
Reglas y validaciones
- La disponibilidad no es global: aparece solo en los componentes enumerados.
Backend
- Servicios: ninguno; la exportación se prepara en el navegador con los datos cargados.
Relaciones
- Requiere: Tendencias de actividades, equipo de actividades, completitud de actividades o análisis de deals.
Notas
- No se detectó una exportación transversal para todas las vistas de Analytics.
id: global-filters modulo: analytics app: crm nombre: Filtros de Analytics tipo: vista
Filtros de Analytics
Los tableros disponen de filtros específicos por dominio para acotar los resultados.
Que se logra
- Resultado: Responde una misma pregunta analítica para el período, equipo o alcance elegido sin cambiar de reporte.
- Caso de uso: Un gerente limita todas las vistas al trimestre y a una sede antes de tomar decisiones.
- Se combina con: Todas las vistas de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/{conversations,deals,quotes,activities,attribution}/** - Acceso en UI: barras superiores de cada dominio.
- Componente(s):
TopBar.tsx,DateRangeSelector.tsx
Como funciona
- Abra una vista de Analytics.
- Ajuste el rango de fechas y los selectores disponibles.
- La vista vuelve a consultar sus métricas y gráficas.
Reglas y validaciones
- Conversaciones: rango, estado, miembro, asistente de IA, canal y en algunas vistas pipeline.
- Deals: rango, pipeline, estado y miembro.
- Quotes: rango, estado, miembro y producto.
- Actividades: rango, tipo de actividad y miembro.
- Atribución: rango y dimensión.
Backend
- Servicios:
analytics(método: find).
Relaciones
- Requiere: las vistas de Analytics.
Notas
- No todos los selectores están presentes en todas las vistas; consulte su ficha individual.
id: period-comparison modulo: analytics app: crm nombre: Comparativa de períodos tipo: vista
Comparativa de períodos
El resumen de quotes calcula indicadores de cambio frente al período anterior.
Que se logra
- Resultado: Responde si el desempeño actual mejora o empeora frente a otro período equivalente.
- Caso de uso: Un e-commerce compara las conversaciones de esta semana con la anterior tras una promoción.
- Se combina con: Conversaciones, Deals, Quotes y Actividades.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/overview - Acceso en UI:
Analytics > Quotes > Overview > QuotesMetrics - Componente(s):
QuotesMetrics.tsx
Como funciona
- Seleccione un rango de fechas en Quotes.
- Revise el indicador de cambio de las tarjetas.
Reglas y validaciones
- Se compara el rango seleccionado con el período anterior.
Backend
- Servicios:
analytics(método: find; métricas del resumen de estimates).
Relaciones
- Requiere: Resumen de quotes.
Notas
- No se detectó un selector de comparación manual común a todos los tableros.
id: quotes-accepted-analysis modulo: analytics app: crm nombre: Análisis de quotes aceptadas tipo: vista
Análisis de quotes aceptadas
Analiza valor, tiempo de aceptación, tendencia y quotes aceptadas recientes.
Que se logra
- Resultado: Responde cuántas quotes son aceptadas y qué productos o valores participan en esas aceptaciones.
- Caso de uso: Un proveedor industrial identifica las propuestas que sus clientes aprueban con mayor frecuencia.
- Se combina con: Quotes, Productos y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/accepted-analysis - Acceso en UI:
Analytics > Quotes > Accepted Analysis - Componente(s):
QuotesAcceptedView.tsx
Como funciona
- Ajuste fecha, miembro o producto.
- Revise tarjetas, tendencia y tabla.
Reglas y validaciones
- Filtros: rango de fechas, miembro y producto.
Backend
- Servicios:
analytics(método: find; análisis de estimates aceptados).
Relaciones
- Requiere: Quotes aceptadas y productos.
Notas
- Incluye
AcceptedSummaryCards,AcceptedTrendsChartyRecentAcceptedTable.
id: quotes-declined-analysis modulo: analytics app: crm nombre: Análisis de quotes rechazadas y vencidas tipo: vista
Análisis de quotes rechazadas y vencidas
Analiza conteo, valor, motivos, tendencia y quotes recientes rechazadas o vencidas.
Que se logra
- Resultado: Responde cuántas quotes se rechazan o vencen y qué resultados requieren seguimiento.
- Caso de uso: Una empresa de servicios detecta propuestas vencidas para que ventas retome el contacto.
- Se combina con: Quotes, Actividades y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/declined-analysis - Acceso en UI:
Analytics > Quotes > Declined Analysis - Componente(s):
QuotesDeclinedView.tsx
Como funciona
- Ajuste fecha, miembro o producto.
- Revise las tarjetas, tendencias y tablas.
Reglas y validaciones
- Filtros: rango de fechas, miembro y producto.
Backend
- Servicios:
analytics(método: find; análisis de estimates rechazados o vencidos).
Relaciones
- Requiere: Quotes rechazadas, vencidas y productos.
Notas
- Incluye
DeclinedSummaryCards,DeclinedTrendsChart,Declined Reasons BreakdownyRecent Declined & Expired Quotes.
id: quotes-home modulo: analytics app: crm nombre: Entrada de quotes tipo: vista
Entrada de quotes
Redirige al resumen de quotes.
Que se logra
- Resultado: Lleva al análisis de propuestas para responder su estado, progreso y aceptación comercial.
- Caso de uso: Un estudio creativo inicia aquí la revisión de cotizaciones enviadas durante el mes.
- Se combina con: Quotes y filtros de Analytics.
Donde esta
- Ruta:
/[orgId]/analytics/quotes - Acceso en UI:
Analytics > Quotes - Componente(s):
page.tsx
Como funciona
- Abra
Quotes. - El sistema redirige a
Overview.
Reglas y validaciones
- No contiene filtros propios.
Backend
- Servicios: ninguno invocado por esta ruta.
Relaciones
- Requiere: Resumen de quotes.
Notas
- No añade métricas ni gráficas propias.
id: quotes-overview modulo: analytics app: crm nombre: Resumen de quotes tipo: vista
Resumen de quotes
Resume quotes por valor, estado y variación frente al período anterior.
Que se logra
- Resultado: Responde cuál es el volumen, valor y distribución general de las quotes del período.
- Caso de uso: Una constructora revisa cuánto valor tiene en propuestas antes de planear su flujo de ventas.
- Se combina con: Quotes, Deals y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/overview - Acceso en UI:
Analytics > Quotes > Overview - Componente(s):
QuotesOverviewView.tsx,QuotesMetrics.tsx,QuotesByStatusChart.tsx
Como funciona
- Ajuste los filtros.
- Revise tarjetas y distribución por estado.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro y producto.
Backend
- Servicios:
analytics(método: find; métricas del resumen y quotes por estado).
Relaciones
- Requiere: Quotes, productos y miembros.
Notas
- Muestra
QuotesMetricsyQuotesByStatusChart; las tarjetas incluyen comparación con el período anterior.
id: quotes-products modulo: analytics app: crm nombre: Productos de quotes tipo: vista
Productos de quotes
Desglosa quotes y valores por producto.
Que se logra
- Resultado: Responde qué productos aparecen más en las cotizaciones y en qué resultados comerciales.
- Caso de uso: Un mayorista descubre qué referencias concentran las propuestas aceptadas para priorizar inventario.
- Se combina con: Quotes, Productos y análisis de aceptación.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/products - Acceso en UI:
Analytics > Quotes > Products - Componente(s):
QuotesProductsView.tsx,ProductsDistributionChart.tsx,ProductsValueChart.tsx
Como funciona
- Ajuste filtros.
- Revise gráficas y
Product Details.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro y producto.
Backend
- Servicios:
analytics(método: find; estimates por producto).
Relaciones
- Requiere: Quotes y productos.
Notas
- La tabla
Product Detailsmuestra cantidad, aceptadas, valor, cantidad cotizada y tasa promedio.
id: quotes-progress modulo: analytics app: crm nombre: Progreso de quotes tipo: vista
Progreso de quotes
Presenta la evolución diaria y mensual de quotes.
Que se logra
- Resultado: Responde cómo avanza el valor de las quotes desde creación hasta su resultado.
- Caso de uso: Una agencia mide si el valor de sus propuestas está convirtiéndose o quedando pendiente.
- Se combina con: Quotes, Deals y comparación de períodos.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/progress - Acceso en UI:
Analytics > Quotes > Progress - Componente(s):
QuotesProgressView.tsx,QuotesDailyTrendsChart.tsx,QuotesMonthlyTrendsChart.tsx
Como funciona
- Ajuste filtros de Quotes.
- Consulte ambas tendencias.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro y producto.
Backend
- Servicios:
analytics(método: find; tendencias diaria y mensual de estimates).
Relaciones
- Requiere: Quotes.
Notas
- Gráficas:
QuotesDailyTrendsChartyQuotesMonthlyTrendsChart.
id: quotes-status modulo: analytics app: crm nombre: Estado y embudo de quotes tipo: vista
Estado y embudo de quotes
Muestra las etapas del embudo y sus métricas de conversión.
Que se logra
- Resultado: Responde cuántas quotes están en cada estado, incluidas aceptadas, rechazadas o vencidas.
- Caso de uso: Un despacho de arquitectura identifica cuántas propuestas necesitan seguimiento antes de expirar.
- Se combina con: Quotes y Actividades.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/status - Acceso en UI:
Analytics > Quotes > Status & Funnel - Componente(s):
QuotesStatusView.tsx,QuotesConversionMetrics.tsx,QuotesFunnelChart.tsx
Como funciona
- Ajuste fecha, miembro o producto.
- Revise métricas y embudo.
Reglas y validaciones
- Filtros: rango de fechas, miembro y producto.
Backend
- Servicios:
analytics(método: find; embudo de conversión de estimates).
Relaciones
- Requiere: Quotes y productos.
Notas
- Muestra
QuotesConversionMetricsyQuotesFunnelChart.
id: quotes-team modulo: analytics app: crm nombre: Equipo de quotes tipo: vista
Equipo de quotes
Compara desempeño y valor de quotes por miembro.
Que se logra
- Resultado: Responde qué miembros crean, administran o convierten más quotes.
- Caso de uso: Un equipo comercial compara el desempeño de sus asesores en la elaboración de propuestas.
- Se combina con: Quotes, miembros y Deals.
Donde esta
- Ruta:
/[orgId]/analytics/quotes/team - Acceso en UI:
Analytics > Quotes > Team - Componente(s):
QuotesTeamView.tsx,TeamPerformanceChart.tsx,TeamValueChart.tsx,TeamStatsTable.tsx
Como funciona
- Ajuste filtros.
- Revise gráficas y tabla por miembro.
Reglas y validaciones
- Filtros: rango de fechas, estado, miembro y producto.
Backend
- Servicios:
analytics(método: find; estimates por miembro).
Relaciones
- Requiere: Quotes y miembros.
Notas
- Muestra
TeamPerformanceChart,TeamValueChartyTeamStatsTable.
id: asistentes-ia app: crm nombre: Asistentes IA estado: shipped permiso: can_access_ai_assistant
Asistentes IA
Configura asistentes para Inbox, tickets, Nova y llamadas de voz. Cada tipo expone pestañas y modelos compatibles distintos.
Para que sirve
- Una clínica configura un asistente para responder consultas iniciales, consultar disponibilidad y derivar casos sensibles a recepción.
- Una inmobiliaria atiende prospectos desde Inbox, consulta propiedades o contactos del CRM y asigna la oportunidad al asesor disponible.
- Un ecommerce permite al asistente buscar productos, enviar información y continuar seguimientos cuando el comprador deja de responder.
- Un equipo de soporte clasifica tickets, ejecuta automatizaciones permitidas y entrega conversaciones complejas al miembro correcto.
- Una empresa de servicios publica un agente de voz en su web para atender llamadas, agendar o transferir a una persona.
Que lo hace diferente
- No es solo un chatbot: puede habilitar herramientas internas para buscar y crear contactos, deals, actividades, reservas, estimates, invoices, productos, notas, tareas y conversaciones, según la configuración de cada asistente.
- Puede consultar disponibilidad, crear o actualizar reservas, cotizar con estimates, buscar productos y enviar mensajes en los canales disponibles del CRM.
- El handoff puede conservar la asignación actual, usar el propietario del contacto o distribuir entre miembros según disponibilidad, pesos y reglas de fallback.
- Integra herramientas HTTP propias, servidores MCP con OAuth o API keys, y automatizaciones publicadas que el asistente puede invocar.
- Sus skills añaden conocimiento y condiciones de uso por asistente; las instrucciones y la configuración conservan historial recuperable.
- Los asistentes de voz se sincronizan con Telnyx; los modelos de texto se configuran mediante conexiones permitidas y el uso de IA se controla con Wallet.
Acceso
- Ruta principal:
/[orgId]/ai-assistant - Como se llega:
Sidebar > AI Assistant - Permiso requerido:
can_access_ai_assistant
Alcance tecnico
- Frontend:
ai-assistant/page.tsx,ai-assistant/[assistantId]/page.tsxycomponents/aiassistant. - Backend:
ai-assistants,ai-assistant-response,ai-assistant-response-v2,ai-assistant-skills,api-tools,mcp-tool-connection-proxyy servicios de voz. - Superficies publicas: el widget de voz generado se inserta en sitios externos después de sincronizar el asistente.
- Integraciones externas: OpenRouter, Telnyx, ElevenLabs, servidores MCP y S3 para logos del widget.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Gestión de asistentes | assistant-management.md | Crea, selecciona, duplica y elimina asistentes por tipo. |
| Instrucciones y modos | assistant-instructions.md | Define comportamiento con Guided Mode o Blank Canvas. |
| Asistente de redacción | instruction-writing-assistant.md | Ayuda a redactar, revisar o diagramar instrucciones antes de aplicarlas. |
| Modelo y ajustes básicos | assistant-model-settings.md | Configura nombre, modelo, zona horaria y conexión de IA permitida. |
| Herramientas internas | internal-tools.md | Habilita herramientas nativas de CRM, mensajería, productos, finanzas y otros módulos. |
| Herramientas API | api-tools.md | Crea, prueba y conecta herramientas HTTP personalizadas al asistente. |
| Servidores MCP | mcp-servers.md | Conecta servidores MCP y habilita herramientas remotas por asistente. |
| Skills del asistente | assistant-skills.md | Crea y mantiene conocimiento especializado activado bajo condiciones de uso. |
| Transferencia a personas | human-handoff.md | Define reglas para entregar conversaciones a miembros disponibles, propietarios o alternativas. |
| Transferencia a otro asistente | ai-handoff.md | Transfiere conversaciones a otro asistente con reglas y opciones de respuesta. |
| Seguimientos automáticos | follow-up.md | Configura reglas de seguimiento cuando el cliente deja de responder. |
| Automatizaciones invocables | assistant-automations.md | Asocia automatizaciones publicadas e instrucciones para que el asistente las ejecute. |
| Configuración avanzada | advanced-settings.md | Controla salida estructurada, respuesta, medios, análisis de imágenes y resumen. |
| Horario de disponibilidad | availability-schedule.md | Define atención semanal y acciones fuera de horario. |
| Playground de texto | playground.md | Prueba asistentes de conversación y Nova con contactos y conversaciones de Playground. |
| Configuración de voz | voice-configuration.md | Configura runtime, voz, transcripción, saludo, variables y sincronización de un asistente de voz. |
| Transferencia de voz | voice-handoff.md | Transfiere llamadas a agentes de voz, otros asistentes o destinos externos. |
| Widget web de voz | voice-web-widget.md | Personaliza y copia el embed del agente de voz para un sitio web. |
| Historial y restauración | assistant-history.md | Consulta snapshots, compara versiones y restaura instrucciones o configuración completa. |
| Configuración al enviar mensajes | message-time-configuration.md | Consulta la configuración histórica asociada a un mensaje de IA. |
| Configuración externa por MCP | mcp-assistant-configuration.md | Permite a clientes MCP autorizados consultar y modificar asistentes de conversación y tickets. |
Relaciones
- Depende de: modelos de IA, miembros de la organización, Conversaciones, Customer Service y Calling & SMS.
- Usado por: Inbox, tickets, Nova, seguimientos y llamadas de voz.
Limitaciones y notas
ai-chatyvoicenacen enBlank Canvas; conversación y tickets pueden iniciar enGuided Mode.- Nova oculta
Handoff,Follow UpyAutomations; voz no tieneFollow Up. - La creación y cada actualización guardan una versión de historial cuando la petición contiene un usuario autenticado.
id: advanced-settings modulo: asistentes-ia app: crm nombre: Configuración avanzada tipo: configuracion
Configuración avanzada
Controla salida estructurada, respuesta, medios, análisis de imágenes y resumen.
Que se logra
- Resultado: el equipo ajusta cómo el modelo razona, responde y devuelve resultados para adecuarlo a una tarea de atención concreta.
- Caso de uso: una tienda con catálogo visual configura análisis de imágenes para que el asistente interprete una foto enviada por el cliente antes de orientar la conversación.
- Se combina con: Instrucciones y modos, Modelo y ajustes básicos y Herramientas internas.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AdvancedModelOptionsDialog.tsx, JsonSchemaEditor.tsx
Como funciona
- Abre
Advancedy usaAdvanced Model Configuration. - Selecciona
VerbosityyReasoning Effort, o usaReseten cada ajuste yReset Allpara volver a valores base. - Cierra con
Savey pulsaUpdate Assistant.
Reglas y validaciones
Verbosityse aplica a modelos GPT-5 compatibles;Reasoning Effortofrece None, Low, Medium y High en los modelos que lo soportan.- Las opciones avanzadas requieren plan de pago; Free muestra el botón bloqueado.
- La configuración registrada también puede incluir temperatura, Top P, máximo de tokens, secuencias de parada, análisis de imágenes, mensajes múltiples, audio y claves JSON adicionales si se configuraron desde otras secciones.
Backend
- Servicios:
ai-assistants(patch) yai-assistants-change-history(find).
Relaciones
- Requiere: plan distinto de Free para guardar el diálogo.
- Dispara / afecta: detalle y razonamiento de las respuestas.
Notas
Por confirmar: qué controles de configuración avanzada siguen visibles en AssistantSettingsForm además del diálogo.
id: ai-handoff modulo: asistentes-ia app: crm nombre: Transferencia a otro asistente tipo: configuracion
Transferencia a otro asistente
Transfiere conversaciones a otro asistente con reglas y opciones de respuesta.
Que se logra
- Resultado: una conversación pasa al asistente especializado adecuado sin perder las decisiones de asignación ni el contexto del intercambio.
- Caso de uso: una aseguradora transfiere las preguntas de cotización a un asistente comercial y los siniestros a otro configurado para soporte.
- Se combina con: Gestión de asistentes, Transferencia a personas y Herramientas internas.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AIAssistantHandoffSection.tsx
Como funciona
- En
Handoff, añade una regla deAI Assistant Handoff. - Describe
When should this rule be triggered?y selecciona el asistente destino; el selector permite buscar por nombre o descripción. Puedes insertar variables de contacto en la condición y en el mensaje de handoff. - Configura el mensaje opcional,
Keep assigned human agent,Mark conversation as unread,Trigger AI reply immediatelyyAlso send current AI reply. - Si hay variables de contacto y el permiso de lectura del contacto está en No Access, aparece una alerta roja.
- Guarda mediante
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| asistente destino | lista | Si | Debe pertenecer a la misma organización. |
| instrucciones | texto largo | Si | Describe el escenario de transferencia. Acepta {{contact.*}}. |
| mensaje y opciones de respuesta | texto / casillas | No | El mensaje de handoff se interpola con el contacto. La respuesta actual y la nueva pueden generar dos mensajes. |
Reglas y validaciones
- Free permite una regla y los planes de pago más de una.
- Un asistente no puede transferirse a sí mismo; los asistentes de voz solo pueden transferir a otro asistente de voz.
Backend
- Servicios:
ai-assistants(patch),ai-assistant-responseyai-assistant-response-v2.
Relaciones
- Requiere: otro asistente válido de la organización.
- Dispara / afecta: el asistente asignado y el estado de lectura de la conversación.
Notas
Por confirmar: cómo se ordenan reglas simultáneamente aplicables.
id: api-tools modulo: asistentes-ia app: crm nombre: Herramientas API tipo: integracion
Herramientas API
Crea, prueba y conecta herramientas HTTP personalizadas al asistente.
Que se logra
- Resultado: el asistente puede consultar o enviar datos a un sistema externo mediante una operación HTTP definida y probada por la organización.
- Caso de uso: un distribuidor conecta su inventario para que el asistente confirme disponibilidad antes de responder a un comprador.
- Se combina con: Herramientas internas y Servidores MCP, para cubrir datos del CRM y sistemas externos.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): ApiToolsGallery.tsx
Como funciona
- En
Tools > API, crea o selecciona una herramienta. - Define
Name,Description, endpoint, métodoGEToPOST, esquema de parámetros y, según corresponda, parámetros URL, cuerpo, headers y ejemplo de respuesta. - Usa la prueba de la galería antes de asociarla al asistente y describe cuándo debe utilizarse.
- Guarda la asociación con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| nombre, endpoint y método | texto / lista | Si | Método GET o POST. |
| esquema de parámetros | editor | Si | Define datos de entrada. |
| URL, cuerpo, headers, respuesta | configuración | No | Ajustan la petición y prueba. |
Reglas y validaciones
- Una herramienta asociada puede aportar descripción, condición de uso y configuración por asistente.
Backend
- Servicios:
api-tools(find/create/patch/remove),api-tool-testing-proxy(create),ai-assistants(patch) y respuestas IA.
Relaciones
- Requiere: endpoint HTTP disponible.
- Dispara / afecta: llamadas externas solicitadas por el asistente.
Notas
Por confirmar: restricciones de red y tiempo de espera del proxy de pruebas.
id: assistant-automations modulo: asistentes-ia app: crm nombre: Automatizaciones invocables tipo: automatizacion
Automatizaciones invocables
Asocia automatizaciones publicadas e instrucciones para que el asistente las ejecute.
Que se logra
- Resultado: el asistente puede activar un proceso publicado del negocio y usar su resultado para responder o sustituir su respuesta.
- Caso de uso: un operador turístico deja que el asistente ejecute la automatización de solicitud de reserva cuando el cliente confirma fechas y cantidad de viajeros.
- Se combina con: Automatizaciones, Herramientas internas y Seguimientos automáticos.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AutomationsSection.tsx
Como funciona
- En
Automations, pulsaAdd Automation. - Selecciona una automatización no añadida previamente mediante el selector por carpetas y escribe
When To Use. - En la tarjeta, activa
Pass automation output as contextsi la IA debe esperar el resultado;Override AI Responsereemplaza la respuesta con un texto fijo. - Usa el ojo para ver el canvas o el enlace externo para editar el flujo. Guarda con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| automatización | selector | Si | No permite duplicar la misma. |
When To Use |
texto largo | Si | Indica al asistente cuándo invocarla. |
Pass automation output as context |
casilla | No | Espera y aporta la salida al modelo. |
Override AI Response |
texto | No | Sustituye la respuesta normal. |
Reglas y validaciones
- Free permite una automatización; los planes de pago permiten más.
Backend
- Servicios:
ai-assistants(patch),automations(find) y ejecución de automatizaciones desde la respuesta IA.
Relaciones
- Requiere: automatizaciones existentes.
- Dispara / afecta: ejecuciones solicitadas por el asistente.
Notas
Por confirmar: si el backend restringe la selección a automatizaciones publicadas.
id: assistant-history modulo: asistentes-ia app: crm nombre: Historial y restauración tipo: vista
Historial y restauración
Consulta snapshots, compara versiones y restaura instrucciones o configuración completa.
Que se logra
- Resultado: el equipo puede auditar quién cambió la configuración y volver a una versión conocida si una modificación afecta la calidad de atención.
- Caso de uso: una empresa SaaS compara el comportamiento anterior y actual después de actualizar las instrucciones de soporte y restaura solo las instrucciones si es necesario.
- Se combina con: Instrucciones y modos, Skills del asistente y Configuración al enviar mensajes.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AssistantHistoryDialog.tsx, AssistantVersionCompare.tsx
Como funciona
- Desde
Instructions, pulsa el icono de historial. - Expande una fecha y selecciona una versión para ver autor, fecha, idioma, instrucciones y configuración.
- Usa
Compare with CurrentoComparepara contrastarla con el estado actual. - Elige
Restore Instructions OnlyoRestore Complete Configuration; la pantalla se recarga al terminar.
Reglas y validaciones
- El historial se muestra en bloques de 50 entradas, ordenado de más reciente a más antiguo.
- Las restauraciones no crean otra entrada de historial para evitar registrar la restauración como un cambio ordinario.
Backend
- Servicios:
ai-assistants-change-history(find) yai-assistants-restore-from-changes-history(create).
Relaciones
- Requiere: versiones creadas por cambios autenticados del asistente.
- Dispara / afecta: instrucciones o toda la configuración del asistente seleccionado.
Notas
Por confirmar: los permisos específicos para consultar o restaurar el historial.
id: assistant-instructions modulo: asistentes-ia app: crm nombre: Instrucciones y modos tipo: configuracion
Instrucciones y modos
Define comportamiento con Guided Mode o Blank Canvas.
Que se logra
- Resultado: cada asistente responde y decide acciones con un comportamiento definido para el idioma, tono, reglas y proceso de atención del negocio.
- Caso de uso: una agencia define en
Guided Modecómo calificar leads y cuándo escalar una consulta; su equipo técnico usaBlank Canvaspara reglas más detalladas. - Se combina con: Asistente de redacción, Herramientas internas, Skills del asistente y Configuración avanzada.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): InstructionsSection.tsx, EasyModeForm.tsx
Como funciona
- Selecciona un asistente y abre
Instructions. - Elige
EnglishoSpanish. - En
Guided Mode, completa el formulario estructurado; el sistema regenera las instrucciones. EnBlank Canvas, redacta Markdown directamente o usaCodeyPreview. - Usa
Insert variablepara personalizar el texto con campos del contacto, por ejemplo{{contact.first_name}}o{{contact.custom_fields_by_key.membership}}. Esas variables se resuelven al responder. - Si insertas variables de contacto, el asistente necesita
Contact Readen Advanced > Access. Si el permiso sigue en No Access, aparece una alerta roja. - Usa el icono de brillo para pedir una propuesta al asistente de redacción y aplica el texto resultante.
- Guarda el panel ampliado con
Save Changeso los cambios generales conUpdate Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Instructions Language |
lista | No | English o Spanish. |
Instructions |
editor Markdown | No | Permite títulos, listas, tablas, enlaces, imágenes y variables {{contact.*}}. |
Guided Mode |
modo | No | Genera instrucciones desde marca, rol, objetivos, restricciones y flujos. |
Reglas y validaciones
- El cambio de
Guided ModeaBlank Canvaselimina la configuración guiada y no ofrece conversión inversa. - Nova usa
Blank Canvas; el historial permite restaurar las instrucciones de una versión. - Las variables de contacto requieren
access_permissions_contactenread. Sin ese permiso, los tokens se resuelven vacíos.
Backend
- Servicios:
ai-assistants(patch),ai-assistants-change-history(find) yai-assistants-restore-from-changes-history(create).
Relaciones
- Requiere: un asistente creado.
- Dispara / afecta: la respuesta de ese asistente en conversaciones, tickets, Nova o voz.
Notas
Por confirmar: el límite operativo de longitud de las instrucciones no está validado en el schema.
id: assistant-management modulo: asistentes-ia app: crm nombre: Gestión de asistentes tipo: configuracion
Gestión de asistentes
Crea asistentes de conversación, tickets, Helpdesk, Nova y voz; desde el panel también se seleccionan, duplican o eliminan.
Que se logra
- Resultado: la organización dispone de asistentes separados por canal o función, con configuración reutilizable para atención, soporte, análisis o voz.
- Caso de uso: una empresa de software crea un asistente para ventas en Inbox y otro para tickets, evitando que ambos operen con las mismas instrucciones.
- Se combina con: Instrucciones y modos, Herramientas internas, Transferencia a personas y Configuración de voz.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
Sidebar > AI Assistant > Conversation | Voice | Tickets | Nova > Add Assistant - Componente(s): AIAssistantView.tsx, AIAssistantSidebar.tsx
Como funciona
- Expande el grupo de tipo y pulsa
Add Assistant. - Escribe
Name, escogeAI Modelcuando el tipo no sea voz, seleccionaTimezoney elAssistant Type. - Para conversación, tickets y Helpdesk elige
Guided ModeoBlank Canvas; Nova y voz se crean siempre conBlank Canvas. - Pulsa
Create Assistant; el nuevo recurso queda seleccionado y se abre en/[orgId]/ai-assistant/[assistantId]. - Usa el lápiz para
Basic Settings, el icono de copia para duplicar y el icono de papelera junto aUpdate Assistantpara eliminar.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Name |
texto | Si | Identifica el asistente en su carpeta. |
AI Model |
lista | Si, salvo voz | La lista se filtra por compatibilidad del tipo. |
Timezone |
selector | Si | Inicia en UTC. |
Assistant Type |
lista | Si | Conversation, Ticket, Helpdesk, AI Chat o Voice. |
Instruction Mode |
selector | No | No aparece para Nova ni voz. |
Connection |
lista | Si | Solo Enterprise: System, Organization o Specific. |
Reglas y validaciones
- Los modelos eliminados no aparecen; Tickets/Helpdesk requieren modelos habilitados para tickets, Nova para AI Chat y voz para Voice.
- En planes no Enterprise, la conexión se fuerza a
System; una conexiónSpecificexigeSpecific OpenAI Secret Key. - Los planes Free limitan a un asistente por tipo y el resto de límites se señalan con
PremiumFeature.
Backend
- Servicios:
ai-assistants(find/get/create/patch/remove). - Efectos: genera
version_id, registra historial, sincroniza asistentes de voz con Telnyx y al eliminar desasigna el asistente de conversaciones.
Relaciones
- Requiere:
can_access_ai_assistanty modelos de IA configurados. - Dispara / afecta: Inbox, Customer Service, Nova y voz.
Notas
Por confirmar: el comportamiento del tipo helpdesk no tiene una carpeta separada en el panel lateral.
id: assistant-model-settings modulo: asistentes-ia app: crm nombre: Modelo y ajustes básicos tipo: configuracion
Modelo y ajustes básicos
Configura nombre, modelo, zona horaria y conexión de IA permitida.
Que se logra
- Resultado: el asistente usa el modelo, zona horaria y conexión de IA aprobados para su función y nivel de acceso.
- Caso de uso: una empresa con varias marcas asigna modelos distintos a ventas y soporte, y restringe un asistente empresarial a una conexión específica.
- Se combina con: Gestión de asistentes, Configuración avanzada y Horario de disponibilidad.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): BasicSettingsSection.tsx
Como funciona
- En el encabezado de
Assistant Settings, pulsa el icono de lápiz. - Edita
Name,AI ModelyTimezone. - En Enterprise, elige
Connection; si eligesSpecific, introduceSpecific OpenAI Secret Key. - Pulsa
Doney termina conUpdate Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Name |
texto | Si | Nombre visible del asistente. |
AI Model |
lista | Si, salvo voz | Presenta contexto, modalidades y coste cuando el modelo informa esos datos. |
Timezone |
selector | Si | Predeterminado UTC. |
Connection |
lista | Enterprise | System, Organization o Specific. |
Specific OpenAI Secret Key |
secreto | Con Specific | Se puede mostrar u ocultar. |
Reglas y validaciones
- La lista de modelos depende del tipo; voz no muestra este selector.
- Fuera de Enterprise se conserva
System, aunque el registro previo tuviera otra conexión.
Backend
- Servicios:
ai-assistants(patch),ai-models(find) yorganizations(get).
Relaciones
- Requiere: modelos publicados para el tipo de asistente.
- Dispara / afecta: proveedor y coste de las respuestas del asistente.
Notas
Por confirmar: la interfaz no muestra el criterio exacto que clasifica una organización como Enterprise.
id: assistant-skills modulo: asistentes-ia app: crm nombre: Skills del asistente tipo: configuracion
Skills del asistente
Crea y mantiene conocimiento especializado activado bajo condiciones de uso.
Que se logra
- Resultado: el asistente recibe procedimientos y conocimiento específico solo en los escenarios en que debe aplicarlos.
- Caso de uso: una firma contable crea un skill para explicar requisitos de facturación cuando un cliente pregunta por ese trámite.
- Se combina con: Instrucciones y modos, Herramientas internas e Historial y restauración.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): SkillsSection.tsx
Como funciona
- Abre
Skillsy pulsaAdd Skill. - Escribe
Skill Name, describeWhen To Usey redactaSkill Content. - Usa
Insert variableenWhen To UseoSkill Contentpara personalizar con campos del contacto ({{contact.first_name}},{{contact.custom_fields_by_key.<key>}}). - Alterna entre
MarkdownyCode; en modo código puedes abrirPreview. - Pulsa
Add Skill; para cambiar una existente expándela, edita sus campos y pulsaSave Changes. Eliminar requiere confirmarRemove. - Si hay variables de contacto y el asistente no tiene Contact Read, aparece una alerta roja. Activa el permiso y guarda con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Skill Name |
texto | Si | Nombre visible de la tarjeta. |
When To Use |
texto largo | Si | Condición que orienta el uso. Acepta variables {{contact.*}}. |
Skill Content |
editor Markdown | Si | Conocimiento que recibe el asistente. Acepta variables {{contact.*}}. |
Reglas y validaciones
- La creación se bloquea hasta completar los tres campos.
- El listado se carga por asistente, hasta 50 skills ordenadas por creación.
Backend
- Servicios:
ai-assistant-skills(find/create/patch/remove).
Relaciones
- Requiere: asistente seleccionado.
- Dispara / afecta: contexto de respuesta del asistente.
Notas
Por confirmar: selección o prioridad de skills cuando sus condiciones se solapan.
id: availability-schedule modulo: asistentes-ia app: crm nombre: Horario de disponibilidad tipo: configuracion
Horario de disponibilidad
Define atención semanal y acciones fuera de horario.
Que se logra
- Resultado: el asistente atiende en las franjas definidas y ejecuta una respuesta o derivación previsible cuando la organización está cerrada.
- Caso de uso: un centro médico informa fuera de horario el siguiente periodo de atención o asigna la solicitud a un miembro de guardia.
- Se combina con: Transferencia a personas, Seguimientos automáticos y Modelo y ajustes básicos.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): ScheduleSection.tsx
Como funciona
- Abre
Advanced > Scheduley eligeAlways AvailableoBased on Schedule. - Para horario, añade franjas
From/toen cada día y usaCopy to All Dayscuando corresponda. - Fuera de horario, selecciona
Send Messagey redactaNot Available Message, oAssign to Team Member. - En handoff, define mensaje, desasignación de IA, no leído, disponibilidad, distribución general y distribución por día.
- Pulsa
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Availability Mode |
radio | Si | Siempre disponible o por agenda. |
Weekly Schedule |
franjas horarias | Condicional | Un día sin franja queda no disponible. |
Out of Schedule Action |
selector | Condicional | Mensaje o transferencia. |
| distribución de equipo | miembros y porcentajes | Condicional | El total de miembros debe ser 100%. |
Reglas y validaciones
- Elegir
Always Availableborra las franjas semanales de la configuración. - El handoff con disponibilidad exige fallback válido, igual que la transferencia humana.
Backend
- Servicios:
ai-assistants(patch) y respuestas de asistente para aplicar la acción fuera de horario.
Relaciones
- Requiere: miembros activos para transferir.
- Dispara / afecta: respuesta o asignación de conversaciones entrantes.
Notas
Por confirmar: la zona horaria efectiva usada por el evaluador de agenda.
id: follow-up modulo: asistentes-ia app: crm nombre: Seguimientos automáticos tipo: automatizacion
Seguimientos automáticos
Configura reglas de seguimiento cuando el cliente deja de responder.
Que se logra
- Resultado: el asistente reanuda oportunidades o solicitudes sin respuesta mediante el canal, plantilla, automatización o mensaje de IA elegido.
- Caso de uso: un concesionario envía un recordatorio de prueba de manejo por WhatsApp tras un periodo sin respuesta y limita los intentos.
- Se combina con: Plantillas de Email y WhatsApp, Automatizaciones invocables y Conversaciones.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): FollowUpSection.tsx
Como funciona
- Activa
Enable Follow Upy defineMaximum Follow Upsentre 1 y 10. - Añade una regla con
When To Assigny el número de minutos enTime After. - Agrega acciones de tipo
Template,AutomationoAI Generated Message. - Para template, selecciona Email o WhatsApp y una plantilla; para automatización selecciona el flujo; para IA escribe sus instrucciones.
- Pulsa
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Maximum Follow Ups |
número | Si | Mínimo 1; interfaz máximo 10. |
When To Assign |
texto largo | Si | Condición de la regla. |
Time After |
minutos | Si | Puede ser 0. |
Follow Up Actions |
lista | No | Template, Automation o AI Generated Message. |
Reglas y validaciones
- Free admite una regla; los planes de pago más de una.
- Las plantillas de correo se cargan desde
support-ticket-email-templates; las de WhatsApp se eligen con el selector de plantillas aprobado. - El procesador incrementa el contador de seguimiento y evita generar dos mensajes de IA si la regla ya incluye
AI Generated Message.
Backend
- Servicios:
ai-assistants(patch),process-follow-ups(create),ai-conversation-follow-up(create) y plantillas/automatizaciones seleccionadas.
Relaciones
- Requiere: asistente de conversación o tickets.
- Dispara / afecta: conversaciones y tickets asignados al asistente.
Notas
Por confirmar: el planificador que decide cuándo encolar cada siguiente regla.
id: human-handoff modulo: asistentes-ia app: crm nombre: Transferencia a personas tipo: configuracion
Transferencia a personas
Define reglas para entregar conversaciones a miembros disponibles, propietarios o alternativas.
Que se logra
- Resultado: las conversaciones que requieren intervención humana llegan a una persona elegible con la asignación, etapa y señales de atención definidas.
- Caso de uso: una inmobiliaria distribuye solicitudes de visita entre asesores disponibles, pero conserva al asesor propietario cuando ya existe relación con el contacto.
- Se combina con: Horario de disponibilidad, Seguimientos automáticos, Conversaciones y pipelines de deals.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): HumanHandoffSection.tsx
Como funciona
- En
Handoff, pulsaAdd Ruley expande la regla. - Define un
Rule Namede hasta 10 caracteres con minúsculas, números o guiones bajos, y redactaWhen should rule be triggered?. Puedes insertar variables de contacto ({{contact.first_name}}) en la condición y en elCustom Handoff Message. Si usas variables, el asistente necesita Contact Read. - Añade miembros en
Add agenty reparte suWeight;Auto Distribute Weightrecalcula pesos al agregar o modificar integrantes. - Decide si conserva un miembro ya asignado, asigna al propietario del contacto, desasigna el agente IA y marca la conversación como no leída.
- Opcionalmente selecciona
PipelineyStage, y configura disponibilidad y fallback. Guarda conUpdate Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Rule Name |
texto | Si | Debe ser único dentro del asistente. |
When should rule be triggered? |
texto largo | Si | Indica al modelo cuándo transferir. Acepta {{contact.*}}. |
Custom Handoff Message |
texto largo | No | Mensaje al cliente; se interpola con el contacto actual. |
Team Members / Weight |
lista / porcentaje | Condicional | El total debe ser 100%. |
Assign to contact owner |
casilla | No | Permite regla sin miembros. |
Only assign to available advisors |
casilla | No | Exige elegir fallback. |
Reglas y validaciones
- Free permite una regla; los planes de pago permiten más.
- Si se respeta disponibilidad, el fallback puede dejar sin asignar, mantener IA, usar un usuario de respaldo o el propietario del contacto. Un fallback de usuario debe pertenecer a la organización.
- Para asistentes de voz, cada miembro elegido debe ser un agente de voz activo.
Backend
- Servicios:
ai-assistants(patch) yai-assistant-response/ai-assistant-response-v2(procesan el handoff).
Relaciones
- Requiere: miembros activos; pipeline y etapa son opcionales.
- Dispara / afecta: asignación, estado de lectura y etapa de la conversación.
Notas
Por confirmar: la prioridad cuando coinciden varias reglas.
id: instruction-writing-assistant modulo: asistentes-ia app: crm nombre: Asistente de redacción tipo: accion
Asistente de redacción
Ayuda a redactar, revisar o diagramar instrucciones antes de aplicarlas.
Que se logra
- Resultado: el responsable puede convertir una necesidad operativa en instrucciones revisables sin reemplazar directamente la configuración vigente.
- Caso de uso: una clínica describe cómo debe manejar consultas de urgencia y recibe una propuesta antes de aplicarla al asistente de recepción.
- Se combina con: Instrucciones y modos y Herramientas internas, cuyas definiciones se incluyen en el contexto de la propuesta.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AssistantInstructionsAIAssistant.tsx
Como funciona
- En el editor de
Instructions, pulsa el icono de brillo. - Describe el cambio que quieres hacer; el asistente recibe las instrucciones actuales, la configuración del asistente y las definiciones de sus herramientas internas activadas.
- Revisa la propuesta y aplícala al editor; después guarda las instrucciones o pulsa
Update Assistant.
Reglas y validaciones
- En el panel expandido, la propuesta se aplica a ese borrador y requiere
Save Changes.
Backend
- Servicios: servicio de composición de instrucciones y
ai-assistants(patch).
Relaciones
- Requiere: asistente seleccionado.
- Dispara / afecta: texto de
Instructions; no guarda automáticamente.
Notas
Por confirmar: el modelo y el servicio backend exactos usados por el compositor.
id: internal-tools modulo: asistentes-ia app: crm nombre: Herramientas internas tipo: configuracion
Herramientas internas
Activa herramientas nativas que el modelo puede invocar al atender una conversación o solicitud.
Que se logra
- Resultado: el asistente puede convertir una conversación en acciones verificables sobre datos de la organización, no solo redactar una respuesta.
- Caso de uso: una empresa de reservas permite al asistente consultar horarios, crear una reserva y registrar una nota del cliente sin salir de la conversación.
- Se combina con: Instrucciones y modos, Seguimientos automáticos y Automatizaciones invocables.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant > Tools > Internal - Componente(s): AssistantSettingsForm.tsx
Como funciona
- Abre
Toolsy seleccionaInternal. - Activa
Enable Allo habilita únicamente las herramientas necesarias por grupo. - Pulsa
Update Assistantpara persistir la selección.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Internal tools |
interruptores | No | El estado principal habilita el uso del catálogo. |
| herramientas | interruptores por grupo | No | Se guardan individualmente por asistente. |
Reglas y validaciones
- El catálogo expone herramientas de Contactos (crear, buscar, leer, actualizar), Deals (crear, buscar, leer, actualizar, añadir productos), Tickets (crear, consultar, buscar y buscar conocimiento), Empresas (crear, buscar, leer, actualizar) y Mensajería (buscar conversaciones, leer conversación o mensajes, buscar mensajes, iniciar WhatsApp, buscar/enviar templates y enviar mensajes).
- También incluye Pipelines y configuración (pipelines, monedas, custom fields), Productos (buscar y leer), Actividades/Notas (crear, actualizar o eliminar), Billing (PDF de estimates e invoices), voz (voces guardadas y síntesis), Smart Links, Email Broadcast, Automatizaciones y Reservas.
- Activar una herramienta no concede permisos adicionales al asistente; limita qué acciones puede solicitar al backend.
Backend
- Servicios:
ai-assistant-internal-tools-catalog(find),ai-assistants(patch),ai-assistant-response-v2(create).
Relaciones
- Requiere: asistente seleccionado.
- Dispara / afecta: las llamadas disponibles durante la generación de respuestas.
Notas
Por confirmar: el orden y rótulos exactos de grupos en la galería, que no están en el catálogo backend.
id: mcp-assistant-configuration modulo: asistentes-ia app: crm nombre: Configuración externa por MCP tipo: integracion
Configuración externa por MCP
Permite a clientes MCP autorizados consultar y modificar asistentes de conversación y tickets.
Que se logra
- Resultado: un cliente MCP autorizado puede administrar asistentes de conversación y tickets desde su propio entorno sin repetir la configuración manualmente en la interfaz.
- Caso de uso: una empresa con un agente interno sincroniza las instrucciones y herramientas aprobadas de su asistente de soporte mediante MCP.
- Se combina con: Servidores MCP, Skills del asistente, Herramientas API e Historial y restauración.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): mcp-internal-tools (backend)
Como funciona
- Conecta un cliente MCP autorizado a las herramientas internas de AchieveApex.
- Consulta asistentes y sus capacidades; recupera configuración, skills, herramientas API e historial.
- Crea asistentes o modifica instrucciones, ajustes, handoff, follow-up, herramientas internas/API y servidores MCP mediante las herramientas expuestas.
Reglas y validaciones
- La superficie no tiene pantalla propia: las operaciones están expuestas por
mcp-internal-tools. - Las herramientas conservan el alcance de la organización autenticada y los validadores de
ai-assistants.
Backend
- Servicios:
mcp-internal-tools(create),ai-assistants,ai-assistant-skills,api-toolsyai-assistants-change-history.
Relaciones
- Requiere: cliente MCP autenticado y autorizado.
- Dispara / afecta: la misma configuración disponible en
AI Assistant.
Notas
Por confirmar: política de autorización por herramienta MCP.
id: mcp-servers modulo: asistentes-ia app: crm nombre: Servidores MCP tipo: integracion
Servidores MCP
Conecta servidores MCP y habilita herramientas remotas por asistente.
Que se logra
- Resultado: cada asistente puede usar un conjunto seleccionado de herramientas de un servidor MCP externo con las credenciales configuradas por la organización.
- Caso de uso: una empresa de logística conecta su servidor MCP para que el asistente consulte el estado de un envío durante la atención.
- Se combina con: Herramientas API, Herramientas internas y Configuración externa por MCP.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): MCPServerConnectionDialog.tsx, MCPServerCard.tsx
Como funciona
- En
Tools > MCP, pulsa conectar servidor y completaURL,LabelyDescription. - Elige
OAuth 2.1,Bearer Token / API Key,Custom HeadersoNo Authentication. - Para headers, añade cada par
Header/Value; para API key escribe el token. - Con OAuth,
Connectdescubre el servidor de autorización, registra el cliente, abre una ventana y canjea el código con PKCE. - Tras conectar, selecciona las herramientas remotas y guarda con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
URL, Label |
texto | Si | Requeridos para conectar. |
Authentication |
lista | Si | OAuth, API key, headers o sin autenticación. |
| token o headers | secreto / lista | Condicional | Obligatorios según autenticación. |
Reglas y validaciones
No Authenticationmuestra advertencia; OAuth requiere que el servidor admita registro dinámico de cliente.- Si expira OAuth, la configuración puede indicar que necesita reautorización.
Backend
- Servicios:
mcp-tool-connection-proxy(create),ai-assistants(patch) yai-assistant-response-v2(ejecución).
Relaciones
- Requiere: servidor MCP confiable y, para OAuth, autorización del proveedor.
- Dispara / afecta: herramientas disponibles durante la respuesta del asistente.
Notas
Por confirmar: la validación backend de URL y el tiempo de espera de la conexión.
id: message-time-configuration modulo: asistentes-ia app: crm nombre: Configuración al enviar mensajes tipo: vista
Configuración al enviar mensajes
Consulta la configuración histórica asociada a un mensaje de IA.
Que se logra
- Resultado: el equipo puede explicar una respuesta concreta con la versión de instrucciones, modelo, herramientas y reglas que estaban vigentes al enviarse.
- Caso de uso: un responsable de soporte revisa por qué un asistente escaló un ticket y comprueba la configuración histórica, sin depender de la versión actual.
- Se combina con: Historial y restauración, Instrucciones y modos y Herramientas internas.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AssistantConfigurationAtTimeDialog.tsx
Como funciona
- Abre la configuración histórica desde el mensaje de IA que la expone.
- El diálogo busca la versión de historial vigente en ese momento y carga el modelo asociado.
- Revisa instrucciones, conexión, modelo, opciones avanzadas, permisos, handoffs, automatizaciones, herramientas y agenda como una instantánea de solo lectura.
Reglas y validaciones
- No edita ni restaura; sirve para explicar con qué configuración se emitió una respuesta.
Backend
- Servicios:
ai-assistants-change-history(find) yai-models(get).
Relaciones
- Requiere: un mensaje asociado a una versión de configuración.
- Dispara / afecta: no modifica el asistente ni el mensaje.
Notas
Por confirmar: el punto exacto de UI que abre este diálogo para cada canal.
id: playground modulo: asistentes-ia app: crm nombre: Playground de texto tipo: vista
Playground de texto
Prueba asistentes de conversación y Nova con contactos y conversaciones de Playground.
Que se logra
- Resultado: el equipo puede verificar respuestas, asignaciones y acciones del asistente en una conversación aislada antes de usarlo con clientes.
- Caso de uso: un ecommerce prueba una instrucción de devolución con un contacto de ejemplo y confirma si el asistente transfiere el caso como se espera.
- Se combina con: Instrucciones y modos, Herramientas internas y Gestión de asistentes.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): AIAssistantPlayground.tsx
Como funciona
- Selecciona un asistente y abre
Playground; enGuided Modeprimero cambia el panel derecho aPlayground. - Selecciona o crea el contacto y la conversación de prueba.
- Envía mensajes y revisa en tiempo real los cambios de conversación, asistente asignado y usuario asignado.
- Usa
System Promptsolo si eres superadmin para inspeccionar el prompt compuesto.
Reglas y validaciones
- Las conversaciones creadas por Playground son registros de conversación; no se asignan a canales externos por esta pantalla.
- El panel escucha eventos
created,patchedyremovedde conversaciones.
Backend
- Servicios:
contacts,conversations,ai-assistants,usersy respuesta del asistente.
Relaciones
- Requiere: asistente de conversación o Nova seleccionado.
- Dispara / afecta: contactos y conversaciones de prueba.
Notas
Por confirmar: mecanismo exacto que distingue una conversación de Playground de una conversación productiva.
id: voice-configuration modulo: asistentes-ia app: crm nombre: Configuración de voz tipo: configuracion
Configuración de voz
Configura runtime, voz, transcripción, saludo, variables y sincronización de un asistente de voz.
Que se logra
- Resultado: la organización despliega un agente telefónico configurado para escuchar, hablar, usar herramientas y responder bajo una identidad de voz definida.
- Caso de uso: una clínica crea un agente que saluda, transcribe solicitudes de cita y consulta herramientas de reserva antes de confirmar el siguiente paso.
- Se combina con: Herramientas internas, Transferencia de voz, Widget web de voz y Calling & SMS.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): VoiceSection.tsx
Como funciona
- Crea o selecciona un asistente de tipo Voice y abre
Voice. - Elige runtime, proveedor, modelo y voz; configura saludo, idioma y modelo de transcripción, interrupciones y tiempos de espera.
- Ajusta herramientas, variables dinámicas, audio de fondo, retención de datos y webhooks cuando el runtime los muestre.
- Pulsa
Update Assistant; el servicio sincroniza la configuración con Telnyx y expone estado pending, synced o error.
Reglas y validaciones
- Los runtimes admitidos son
telnyx_builtin,custom_llmyopenai_realtime_sip. - El backend valida la automatización indicada para variables dinámicas y resuelve la clave de voz antes de sincronizar.
Backend
- Servicios:
ai-assistants(get/patch),telnyx-ai-assistants,telnyx-ai-models,telnyx-ai-voices,telnyx-ai-transcription-languagesyvoice-assistant-playground.
Relaciones
- Requiere: modelo disponible para voz y configuración de Telnyx.
- Dispara / afecta: llamadas, widget de voz y handoffs de voz.
Notas
Por confirmar: campos visibles por cada runtime, ya que VoiceSection.tsx supera el límite de lectura disponible en esta revisión.
id: voice-handoff modulo: asistentes-ia app: crm nombre: Transferencia de voz tipo: configuracion
Transferencia de voz
Transfiere llamadas a agentes de voz, otros asistentes o destinos externos.
Que se logra
- Resultado: una llamada que requiere otra atención se redirige al número, SIP o destino configurado con una regla que el agente de voz puede reconocer.
- Caso de uso: una firma legal transfiere llamadas sobre casos urgentes a la línea de guardia y las consultas administrativas al conmutador.
- Se combina con: Configuración de voz, Calling & SMS y Transferencia a personas.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): ExternalHandoffTargetsSection.tsx
Como funciona
- En el asistente de voz abre
Handoff > External Handoff Targets. - Elige
Original Caller NumberoCompany Number; para empresa seleccionaFrom NumberoAutomatic. - Añade
External Target, identifica suInternal Name,Caller LabelyWhen To Use. - Selecciona
External Numbercon país y número E.164, oSIP URI; estableceTimeout (seconds), mensaje opcional yEnabled. - Guarda con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Destination Type |
lista | Si | External Number o SIP URI. |
| número / SIP URI | texto | Si | Según el destino. |
Timeout |
número | No | Entre 5 y 120 segundos; inicia en 30. |
Enabled |
interruptor | No | Desactiva una regla sin eliminarla. |
Reglas y validaciones
- Solo asistentes de voz pueden guardar destinos externos.
- IDs, etiquetas y destinos no pueden repetirse. El número debe ser E.164 válido, coincidir con el país indicado y estar permitido por el canal de voz activo; la URI debe ser SIP/SIPS válida.
Backend
- Servicios:
ai-assistants(patch),voice-channels(find) y flujos de voz.
Relaciones
- Requiere: canal de voz activo para aplicar países permitidos.
- Dispara / afecta: transferencias de llamadas del asistente de voz.
Notas
Por confirmar: el comportamiento del timeout al no contestar el destino.
id: voice-web-widget modulo: asistentes-ia app: crm nombre: Widget web de voz tipo: integracion
Widget web de voz
Personaliza y copia el embed del agente de voz para un sitio web.
Que se logra
- Resultado: un sitio externo ofrece una entrada de voz identificada con la marca de la organización y conectada al asistente sincronizado.
- Caso de uso: una escuela de idiomas inserta el widget en su página de cursos para que visitantes hablen con el agente y soliciten información.
- Se combina con: Configuración de voz, Sitios y S3 para el logo cargado.
Donde esta
- Ruta:
/[orgId]/ai-assistant - Acceso en UI:
AI Assistant - Componente(s): WebWidgetEmbedSection.tsx
Como funciona
- En un asistente de voz abre
Voice > Embed on your website. - Cuando exista el ID tras la sincronización, pulsa
Copy embed code. - En
Widget appearanceajusta tema, posición, estado inicial y textos del widget. - Sube un logo de imagen de hasta 5 MB o pega una URL pública; usa
Clear appearance fieldspara limpiar los campos administrados. - Persiste el aspecto con
Update Assistant.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Theme |
lista | No | Default, light o dark. |
Position |
lista | No | Default, fixed o static. |
| logo y textos | URL / texto | No | Incluye inicio, espera e interrupción. |
Reglas y validaciones
- Sin ID del recurso de voz, no se genera embed y la UI pide guardar y esperar sincronización.
- Solo se aceptan archivos de imagen de 5 MB o menos.
Backend
- Servicios:
ai-assistants(patch),s3-url-signing(create) y sincronización Telnyx. - Efectos: el logo se sube al almacenamiento de archivos de la organización.
Relaciones
- Requiere: asistente de voz sincronizado.
- Dispara / afecta: el widget Telnyx insertado en un sitio externo.
Notas
Por confirmar: las opciones adicionales aceptadas por el widget de Telnyx.
id: automatizaciones app: crm nombre: Automatizaciones estado: shipped permiso: can_access_automations
Automatizaciones
Constructor visual de flujos que responde a triggers, ejecuta acciones de CRM y conserva el detalle de cada ejecución.
Para que sirve
- Una clínica: cuando se crea una reserva, envía un WhatsApp de confirmación, crea una actividad de recordatorio y notifica al doctor.
- Una inmobiliaria: cuando entra un formulario de un inmueble, busca o crea el contacto, lo distribuye entre asesores y abre un deal.
- Un e-commerce: cuando un cliente comenta una palabra clave en un Reel, inicia una conversación, identifica su interés y continúa el seguimiento comercial.
- Un equipo SaaS de soporte: cuando un ticket incumple su SLA, lo reasigna, deja una nota interna y alerta al responsable.
- Una agencia B2B: cuando un deal pasa a propuesta, busca los productos solicitados, crea un estimate y agenda el seguimiento.
- Un centro de reservas: antes de una cita, envía un recordatorio; si la llamada llega al buzón de voz, envía un SMS y crea una tarea de reintento.
- Un organizador de eventos: cuando un asistente hace check-in, crea una oportunidad para ventas y envía un mensaje posterior.
- Una tienda conectada: cuando confirma un pago en su plataforma externa, llama un webhook de Apex para actualizar el contacto y disparar la comunicación correspondiente.
Que lo hace diferente
- Los triggers nacen de módulos propios: CRM, conversaciones, reservas, eventos, Helpdesk, formularios, llamadas de voz y cambios de miembros del equipo; no requieren replicar esos datos en una herramienta externa.
- Las acciones operan entidades y canales nativos: contactos, deals, estimates, reservas, tickets, actividades, WhatsApp, SMS, Gmail y Google Calendar.
- Puede controlar el comportamiento del asistente IA dentro de una conversación, incluyendo cortar su contexto o reanudarlo con una instrucción del flujo.
- Incluye acciones para obtener y establecer atribución de contactos y enviar conversiones a Meta CAPI desde hitos comerciales que ocurren en Apex.
- El nodo
Chat With AIpermite clasificar, resumir o redactar una salida que pasa directamente a las siguientes ramas y acciones. - El editor permite probar, publicar y activar el flujo, y cada ejecución puede revisarse visualmente nodo por nodo con sus entradas y salidas.
- También admite un trigger webhook con URL propia, para conectar eventos externos al mismo proceso que usa los datos del CRM.
- El código revisado no establece una tarifa universal por tarea de automatización:
Chat With AIcobra Wallet según modelo y tokens, y la búsqueda semántica de productos cobra por su consulta de embeddings.
Acceso
- Ruta principal:
/[orgId]/automations - Como se llega:
Sidebar > Tools > Automations - Permiso requerido:
can_access_automations
Alcance tecnico
- Frontend:
automations/page.tsx,automations/[automationId]/page.tsx,automations-executionsy componentes desrc/components/automations. - Backend:
automations,automations-categories,automations-webhooks,automations-executions,automation-run,process-automation-triggery serviciosautomation-node-*. - Superficies publicas: URLs de webhook de automatizaciones.
- Integraciones externas: Meta, WhatsApp, Telnyx, Gmail, Google Calendar, S3 y AWS SES según nodo.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Trigger: contacto creado | trigger-contact-created.md | Inicia al crear un contacto y permite filtros de creador, propietario, empresa, tipo y etiquetas. |
| Trigger: contacto actualizado | trigger-contact-updated.md | Inicia cuando cambia un contacto y permite filtros del contacto afectado. |
| Trigger: deal creado | trigger-deal-created.md | Inicia al crear un deal y permite filtros de pipeline y etapa. |
| Trigger: deal actualizado | trigger-deal-updated.md | Inicia al actualizar un deal, normalmente para cambios de pipeline o etapa. |
| Trigger: actividad creada | trigger-activity-created.md | Inicia al crear una actividad con filtros por creador, asignado, tipo y estado. |
| Trigger: actividad actualizada | trigger-activity-updated.md | Inicia por cambios de actividad y permite seleccionar cambios de campos. |
| Trigger: fecha de actividad | trigger-activity-date-based.md | Inicia cuando llega una fecha de actividad o un tiempo antes o después. |
| Trigger: miembro agregado | trigger-team-member-added.md | Inicia cuando un usuario se agrega a la organización. |
| Trigger: miembro actualizado | trigger-team-member-updated.md | Inicia por cambios de membresía o perfil de un miembro. |
| Trigger: miembro eliminado | trigger-team-member-removed.md | Inicia cuando se retira un miembro de la organización. |
| Trigger: conversación iniciada | trigger-conversation-created.md | Inicia al crear una conversación con filtros de canal, pipeline y asignación. |
| Trigger: conversación actualizada | trigger-conversation-updated.md | Inicia por cambios de conversación y permite filtros de canal, pipeline y asignación. |
| Trigger: reserva creada | trigger-reservation-created.md | Inicia al crear una reserva y filtra por servicio y estado. |
| Trigger: reserva actualizada | trigger-reservation-updated.md | Inicia al cambiar una reserva y filtra por servicio y estado. |
| Trigger: fecha de reserva | trigger-reservation-date-based.md | Inicia cuando llega una fecha de reserva o un tiempo antes o después. |
| Trigger: nuevo pedido | trigger-order-created.md | Inicia al colocar un pedido y filtra por fuente, catálogo y propietario. |
| Trigger: pedido pagado | trigger-order-paid.md | Inicia una vez cuando el pedido queda totalmente pagado. |
| Trigger: entrega del pedido actualizada | trigger-order-fulfillment-updated.md | Inicia cuando cambia el estado de entrega, con filtro por nuevo estado. |
| Trigger: pedido cancelado | trigger-order-cancelled.md | Inicia cuando se cancela un pedido. |
| Trigger: checkout abandonado | trigger-checkout-abandoned.md | Inicia un tiempo después de la última actividad de un checkout de catálogo sin completar. |
| Trigger: registro de evento creado | trigger-event-registration-created.md | Inicia cuando un invitado se registra en un evento. |
| Trigger: registro de evento actualizado | trigger-event-registration-updated.md | Inicia al actualizar un registro de invitado, por ejemplo estado o pago. |
| Trigger: invitado registrado | trigger-event-guest-checked-in.md | Inicia cuando se hace check-in de un invitado. |
| Trigger: formulario enviado | trigger-form-submitted.md | Inicia cuando se envía un formulario publicado. |
| Trigger: ticket de Helpdesk creado | trigger-helpdesk-ticket-created.md | Se ejecuta al crear un ticket de Helpdesk que cumpla los filtros configurados. |
| Trigger: ticket de Helpdesk actualizado | trigger-helpdesk-ticket-updated.md | Se ejecuta cuando un ticket cambia y satisface las transiciones y filtros configurados. |
| Trigger: SLA de Helpdesk incumplido | trigger-helpdesk-ticket-sla-breached.md | Se ejecuta cuando el programador de SLA detecta que un ticket incumplió un objetivo de primera respuesta, siguiente respuesta o resolución. |
| Trigger: comentario en publicación de Facebook | trigger-facebook-post-comment.md | Se ejecuta para comentarios de una Page de Facebook que coinciden con una publicación y reglas de palabras. |
| Trigger: comentario en publicación o Reel de Instagram | trigger-instagram-post-reel-comment.md | Se ejecuta para comentarios entrantes de Instagram que coinciden con una publicación/Reel y reglas de palabras. |
| Trigger: respuesta a historia de Instagram | trigger-instagram-story-reply.md | Se ejecuta cuando alguien responde una historia de Instagram y la respuesta satisface los filtros. |
| Trigger: llamada de voz iniciada | trigger-voice-call-created.md | Se ejecuta al crear una llamada de voz no interna que cumple los filtros. |
| Trigger: llamada de voz actualizada | trigger-voice-call-updated.md | Se ejecuta cuando una llamada elegible cambia en alguno de los campos configurados. |
| Trigger: llamada de voz finalizada | trigger-voice-call-ended.md | Se ejecuta cuando finaliza una llamada elegible que cumple los filtros. |
| Trigger: filtrado de llamada detectado | trigger-voice-call-screening-detected.md | Se ejecuta al detectar buzón de voz o preclasificación en una llamada saliente elegible. |
| Trigger: webhook | trigger-webhook.md | Genera una URL HTTPS única para que sistemas externos inicien el flujo. |
| Control de flujo | flow-control.md | Condiciones, variables, tablas de consulta, transformación JavaScript, HTTP y finalización de ramas. |
| Mensajería de conversaciones | conversation-messages.md | Obtiene, busca, inicia conversaciones y envía mensajes, plantillas o actualizaciones. |
| Control de IA en conversación | conversation-ai-control.md | Corta contexto o reasigna una conversación a IA con instrucción de reanudación. |
| Chat con IA | chat-with-ai.md | Ejecuta una interacción de IA dentro de un flujo para generar una salida utilizable. |
| Acciones de voz | voice-actions.md | Programa llamadas IA salientes y establece variables dinámicas de voz. |
| Acciones de contactos | contact-actions.md | Crea, actualiza, busca y obtiene contactos; incluye distribución ponderada de miembros. |
| Acciones de deals | deal-actions.md | Crea, actualiza, consulta deals, productos y watchers, o agrega watchers. |
| Creación de estimates | estimate-actions.md | Crea estimates con líneas, moneda, plantilla y datos relacionados. |
| Acciones de empresas | company-actions.md | Crea y consulta empresas del CRM. |
| Acciones de actividades | activity-actions.md | Crea, consulta, actualiza o elimina actividades e integra Google Calendar y correo. |
| Acciones de reservas | reservation-actions.md | Consulta disponibilidad, crea, actualiza y obtiene reservas. |
| Acciones de tickets | ticket-actions.md | Actualiza tickets y realiza acciones de Helpdesk como asignar, responder, anotar o vigilar. |
| Notas internas | notes-actions.md | Crea notas internas asociadas a contactos o deals. |
| Búsqueda de productos | product-search.md | Busca el catálogo por texto, semántica IA o combinación de ambos. |
| Conversiones de Meta | meta-conversions.md | Obtiene o establece atribución de contacto y envía conversiones a Meta CAPI. |
| Acciones de Series | series-actions.md | Suscribe o desuscribe contactos de Series. |
| Monitoreo de ejecuciones | execution-monitoring.md | Lista, filtra, consulta, reproduce y crea ejecuciones manuales. |
| Visor de ejecución | execution-viewer.md | Representa visualmente una ejecución y permite inspeccionar entradas, configuración y salidas. |
| Editor visual | automation-editor.md | Edita el lienzo, triggers, nodos, anotaciones, publicación, prueba, copia y descarga. |
| Organización en carpetas | automation-folders.md | Crea carpetas y organiza automatizaciones desde la lista lateral. |
| Trigger legado: mensaje de WhatsApp | trigger-legacy-whatsapp-message.md | Monitorea mensajes entrantes de WhatsApp en automatizaciones existentes. | | Trigger legado: URL de WhatsApp | trigger-legacy-whatsapp-url.md | Inicia una automatización existente al coincidir una URL de WhatsApp. | | Trigger legado: mensaje de Messenger | trigger-legacy-messenger-message.md | Monitorea mensajes de Messenger en automatizaciones existentes. | | Trigger legado: comentario de Facebook | trigger-legacy-facebook-comment.md | Inicia con comentarios en publicaciones de Facebook configuradas. | | Trigger legado: clic en anuncio de Facebook | trigger-legacy-facebook-ad-click.md | Inicia al detectar clics en el anuncio configurado. | | Trigger legado: URL ref de Messenger | trigger-legacy-messenger-ref-url.md | Responde a una URL de referencia de Messenger existente. | | Trigger legado: código QR | trigger-legacy-qr-code.md | Inicia al detectar la interacción configurada de código QR. | | Trigger legado: mensaje de Instagram | trigger-legacy-instagram-message.md | Monitorea mensajes directos de Instagram en automatizaciones existentes. | | Trigger legado: comentario en vivo de Instagram | trigger-legacy-instagram-live-comment.md | Inicia con comentarios de un Instagram Live configurado. | | Trigger legado: URL ref de Instagram | trigger-legacy-instagram-ref-url.md | Responde a una URL de referencia de Instagram existente. | | Trigger legado: suscripción a secuencia | trigger-legacy-sequence-subscription.md | Inicia al suscribir un contacto a una secuencia existente. | | Trigger legado: baja de secuencia | trigger-legacy-sequence-unsubscription.md | Inicia al retirar un contacto de una secuencia existente. | | Trigger legado: fecha y hora | trigger-legacy-date-time.md | Programa un trigger único o recurrente para automatizaciones existentes. | | Trigger legado: mensaje de Facebook Shop | trigger-legacy-facebook-shop-message.md | Monitorea mensajes de tienda con filtros de tipo, palabra y tiempo. | | Trigger legado: widget web | trigger-legacy-website-widget.md | Inicia por vista, interacción, envío o cierre de un widget web configurado. | | Trigger legado: modal de Messenger | trigger-legacy-messenger-modal.md | Inicia por eventos de un modal de Messenger en un sitio web. | | Trigger legado: landing page | trigger-legacy-landing-page.md | Inicia al visitar la URL de landing page configurada. |
Relaciones
- Depende de: CRM, Conversaciones, Tickets, Reservations, Events, Series y Calling & SMS.
- Usado por: Asistentes IA, canales y operaciones automatizadas.
Limitaciones y notas
Los cambios del lienzo requieren Publish; el interruptor Active controla si el flujo publicado responde a triggers. El nodo Delay está marcado como Coming Soon.
Inventario de archivos
| Archivo | Contenido |
|---|---|
README.md |
Índice del módulo |
activity-actions.md |
Acciones de actividades y correo |
automation-editor.md |
Lienzo y publicación |
automation-folders.md |
Carpetas de automatizaciones |
chat-with-ai.md |
Nodo de IA |
company-actions.md |
Acciones de empresas |
contact-actions.md |
Acciones de contactos |
conversation-ai-control.md |
Control de IA de conversación |
conversation-messages.md |
Acciones de conversaciones |
deal-actions.md |
Acciones de deals |
estimate-actions.md |
Creación de estimates |
execution-monitoring.md |
Historial de ejecuciones |
execution-viewer.md |
Detalle de ejecución |
flow-control.md |
Nodos de control |
meta-conversions.md |
Atribución y conversiones Meta |
notes-actions.md |
Notas internas |
product-search.md |
Búsqueda de productos |
reservation-actions.md |
Acciones de reservas |
series-actions.md |
Suscripciones de Series |
ticket-actions.md |
Acciones de tickets |
trigger-activity-created.md |
Trigger de actividad creada |
trigger-activity-date-based.md |
Trigger de fecha de actividad |
trigger-activity-updated.md |
Trigger de actividad actualizada |
trigger-contact-created.md |
Trigger de contacto creado |
trigger-contact-updated.md |
Trigger de contacto actualizado |
trigger-conversation-created.md |
Trigger de conversación creada |
trigger-conversation-updated.md |
Trigger de conversación actualizada |
trigger-deal-created.md |
Trigger de deal creado |
trigger-deal-updated.md |
Trigger de deal actualizado |
trigger-event-guest-checked-in.md |
Trigger de check-in |
trigger-event-registration-created.md |
Trigger de registro de evento |
trigger-event-registration-updated.md |
Trigger de actualización de registro |
trigger-form-submitted.md |
Trigger de formulario |
trigger-legacy-date-time.md |
Trigger legado de fecha |
trigger-legacy-facebook-ad-click.md |
Trigger legado de anuncio |
trigger-legacy-facebook-comment.md |
Trigger legado de comentario |
trigger-legacy-facebook-shop-message.md |
Trigger legado de tienda |
trigger-legacy-instagram-live-comment.md |
Trigger legado de Live |
trigger-legacy-instagram-message.md |
Trigger legado de mensaje |
trigger-legacy-instagram-ref-url.md |
Trigger legado de URL |
trigger-legacy-landing-page.md |
Trigger legado de landing |
trigger-legacy-messenger-message.md |
Trigger legado de Messenger |
trigger-legacy-messenger-modal.md |
Trigger legado de modal |
trigger-legacy-messenger-ref-url.md |
Trigger legado de URL |
trigger-legacy-qr-code.md |
Trigger legado de QR |
trigger-legacy-sequence-subscription.md |
Trigger legado de suscripción |
trigger-legacy-sequence-unsubscription.md |
Trigger legado de baja |
trigger-legacy-website-widget.md |
Trigger legado de widget |
trigger-legacy-whatsapp-message.md |
Trigger legado de mensaje |
trigger-legacy-whatsapp-url.md |
Trigger legado de URL |
trigger-reservation-created.md |
Trigger de reserva creada |
trigger-reservation-date-based.md |
Trigger de fecha de reserva |
trigger-reservation-updated.md |
Trigger de reserva actualizada |
trigger-order-created.md |
Trigger de nuevo pedido |
trigger-order-paid.md |
Trigger de pedido pagado |
trigger-order-fulfillment-updated.md |
Trigger de entrega del pedido |
trigger-order-cancelled.md |
Trigger de pedido cancelado |
trigger-checkout-abandoned.md |
Trigger de checkout abandonado |
trigger-team-member-added.md |
Trigger de miembro agregado |
trigger-team-member-removed.md |
Trigger de miembro eliminado |
trigger-team-member-updated.md |
Trigger de miembro actualizado |
trigger-webhook.md |
Trigger por webhook |
trigger-helpdesk-ticket-created.md |
Trigger: ticket de Helpdesk creado |
trigger-helpdesk-ticket-updated.md |
Trigger: ticket de Helpdesk actualizado |
trigger-helpdesk-ticket-sla-breached.md |
Trigger: SLA de Helpdesk incumplido |
trigger-facebook-post-comment.md |
Trigger: comentario en publicación de Facebook |
trigger-instagram-post-reel-comment.md |
Trigger: comentario en publicación o Reel de Instagram |
trigger-instagram-story-reply.md |
Trigger: respuesta a historia de Instagram |
trigger-voice-call-created.md |
Trigger: llamada de voz iniciada |
trigger-voice-call-updated.md |
Trigger: llamada de voz actualizada |
trigger-voice-call-ended.md |
Trigger: llamada de voz finalizada |
trigger-voice-call-screening-detected.md |
Trigger: filtrado de llamada detectado |
voice-actions.md |
Acciones de voz |
id: activity-actions modulo: automatizaciones app: crm nombre: Acciones de actividades tipo: accion
Acciones de actividades
Agrupa acciones para actividades, Google Calendar y envíos de correo.
Que se logra
- Resultado: Crea y mantiene tareas, eventos de calendario y comunicaciones de seguimiento para que el equipo actúe en el momento adecuado.
- Caso de uso: Una correduría: cuando un deal pasa a propuesta, crea una tarea para el asesor, un evento de Google Calendar y un email de seguimiento.
- Se combina con:
Trigger: deal actualizado,Deal actionsy Google Calendar/Gmail.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateActivityNode.tsx, CreateGoogleCalendarEventNode.tsx, SendGmailEmailNode.tsx
Como funciona
- Elegir en
Add Node > Activitiesuna acción:Create Activity,Get Activities,Get Activity,Update Activity,Delete Activity,Get Google Calendar Events,Create Google Calendar Event,Send Gmail Email,Send Email (Broadcast)oUnsubscribe from email broadcast. - Completar los IDs, fechas, destinatarios o contenido solicitados por el nodo.
- Conectar la salida con los pasos que consumen la actividad, evento o resultado de envío.
Reglas y validaciones
- Google Calendar y Gmail solo muestran integraciones marcadas como disponibles para automatizaciones.
Get Google Calendar Eventsusa calendario, fechas y máximo de resultados;Create Google Calendar Eventadmite asistentes y Google Meet.- El correo broadcast utiliza un remitente SES verificado y HTML propio o plantilla.
Backend
- Servicios:
automation-node-system-create-activity,automation-node-system-get-activities,automation-node-system-get-activity,automation-node-system-update-activity,automation-node-system-delete-activity,automation-node-system-get-google-calendar-events,automation-node-system-create-google-calendar-event,automation-node-system-send-gmail-email,automation-node-system-send-email-broadcast,automation-node-system-unsubscribe-from-email-broadcast - Efectos: crea, actualiza o elimina actividades; crea o consulta eventos; envía correo o registra una baja.
Relaciones
- Requiere: integraciones activas cuando el nodo las usa.
- Dispara / afecta: Actividades, Google Calendar, Gmail y correo broadcast.
Notas
El campo de contenido de Send Gmail Email admite versión HTML y texto plano, además de CC y BCC.
id: automation-editor modulo: automatizaciones app: crm nombre: Editor visual tipo: vista
Editor visual
Construye el flujo publicado de una automatización mediante nodos y conexiones, y permite probarlo antes de depender de un trigger.
Que se logra
- Resultado: Permite diseñar, probar, publicar y activar un proceso conectado con los datos y acciones nativas de Apex.
- Caso de uso: Una clínica configura: cuando se crea una reserva, envía WhatsApp de confirmación, crea una actividad de recordatorio y notifica al profesional.
- Se combina con: Triggers, familias de nodos,
Monitoreo de ejecucionesyVisor de ejecución.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automations > seleccionar una automatización - Componente(s): AutomationsView.tsx
Como funciona
- Crear o abrir una automatización desde
Automations. - Pulsar el nodo
Startpara añadir uno o más triggers; usar el+de una conexión o arrastrar desde un handle vacío para abrirAdd Node. - Elegir un nodo del catálogo, conectarlo con la rama anterior y pulsarlo para completar su diálogo o panel lateral.
- Seleccionar nodos para copiarlos, pegarlos o eliminarlos; el editor impide formar ciclos.
- Añadir notas adhesivas o anotaciones de dibujo desde las herramientas del lienzo.
- Pulsar
Publishpara guardar nodos y conexiones. UsarRun Executioncon un payload guardado o JSON para probar y abrir el visor. - Activar
Activepara que el flujo publicado responda a triggers;Duplicatecrea una copia yDownloaddescarga el flujo.
Reglas y validaciones
Publishguarda el lienzo actual; el interruptorActivehabilita o deshabilita respuestas a triggers.- El editor bloquea conexiones circulares.
Delayaparece comoComing Soony no se puede añadir. - Las variables se basan en la última ejecución: primero entrada del nodo, luego el ancestro completado más próximo y, como último origen, payload inicial.
Backend
- Servicios:
automations(get/patch),automation-run(create),automations-executions(create/find),automation-node-executions(find) yautomation-node-*(create) - Efectos: publicar cambia el flujo que utilizan las ejecuciones; la prueba crea una ejecución y redirige a su visor.
Relaciones
- Requiere: permiso
can_access_automations. - Dispara / afecta: triggers, ejecuciones y las acciones configuradas en cada nodo.
Notas
Una automatización bloqueada por detección de bucle se puede reactivar desde la barra solo por administradores o propietarios.
id: automation-folders modulo: automatizaciones app: crm nombre: Organización en carpetas tipo: vista
Organización en carpetas
Crea carpetas para agrupar automatizaciones y filtra la lista mediante la carpeta elegida.
Que se logra
- Resultado: Ordena flujos por equipo, proceso o área para que una organización grande pueda mantener el inventario operativo.
- Caso de uso: Una franquicia: agrupa automatizaciones de ventas, reservas y soporte para que cada responsable encuentre y mantenga su conjunto de flujos.
- Se combina con:
Editor visualy el listado deAutomations.
Donde esta
- Ruta:
/[orgId]/automations - Acceso en UI:
Automations > barra lateral de carpetas - Componente(s):
AutomationSidebar.tsx
Como funciona
- Entrar a
Automationsy abrir la barra lateral. - Crear una carpeta desde su control de alta e indicar el nombre.
- Asignar una carpeta al crear o editar una automatización.
- Elegir una carpeta para mostrar solamente los flujos de ese grupo.
Reglas y validaciones
- Una carpeta no modifica la publicación, el interruptor
Activeni el flujo de sus automatizaciones.
Backend
- Servicios:
automations-categories(find/create/patch/remove),automations(find/create/patch) - Efectos: la categoría asignada determina la agrupación mostrada en la lista.
Relaciones
- Requiere: permiso
can_access_automations. - Dispara / afecta: organización visual de la lista.
Notas
Por confirmar: si eliminar una carpeta reasigna automáticamente las automatizaciones contenidas.
id: chat-with-ai modulo: automatizaciones app: crm nombre: Chat con IA tipo: accion
Chat con IA
Envía instrucciones y datos del flujo a un modelo de IA y devuelve su respuesta para los pasos siguientes.
Que se logra
- Resultado: Obtiene una salida de IA dentro del flujo para clasificar, resumir o redactar contenido que los nodos posteriores pueden usar.
- Caso de uso: Un e-commerce: cuando llega una consulta libre, la IA identifica intención y redacta una respuesta; luego el flujo envía el mensaje y crea un deal si hay interés.
- Se combina con:
Mensajería de conversaciones,Flow ControlyContact actions.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): nodes/ChatWithAiNode/*
Como funciona
- Elegir
Chat With AIenAdd Node > AI. - Escribir las instrucciones y el mensaje, e insertar variables del trigger o nodos anteriores.
- Elegir el modelo disponible y guardar el nodo.
Reglas y validaciones
- La salida del modelo queda disponible para nodos posteriores.
Backend
- Servicios:
automation-node-system-chat-with-ai(create),automation-node-executions(create) - Efectos: realiza una solicitud de IA y adjunta la respuesta al payload de ejecución.
Relaciones
- Requiere: configuración de IA disponible para la organización.
- Dispara / afecta: datos de la ejecución y saldo de Wallet si el proveedor factura uso.
Notas
Cada ejecución registra en Wallet el consumo de entrada y salida de IA según los precios configurados para el modelo seleccionado; por eso el costo cambia con el modelo y los tokens utilizados.
id: company-actions modulo: automatizaciones app: crm nombre: Acciones de empresas tipo: accion
Acciones de empresas
Crea empresas o recupera una empresa concreta para usar sus datos en el flujo.
Que se logra
- Resultado: Crea o consulta empresas para que los nuevos leads y operaciones queden asociados a su cuenta comercial.
- Caso de uso: Una agencia B2B: cuando llega un formulario corporativo, crea la empresa si no existe y vincula el contacto antes de abrir una oportunidad.
- Se combina con:
Trigger: formulario enviado,Contact actionsyDeal actions.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateCompanyNode.tsx, GetCompanyDialog.tsx
Como funciona
- Elegir
Create CompanyoGet CompanyenAdd Node > Companies. - Para crear, indicar
Company Namey unOwneropcional; para consultar, proporcionarCompany ID. - Usar el registro creado o consultado en nodos posteriores.
Reglas y validaciones
- El nombre es obligatorio al crear una empresa; el ID es obligatorio al consultarla durante la ejecución.
Backend
- Servicios:
automation-node-system-create-company,automation-node-system-get-company - Efectos: crea una empresa o devuelve sus datos al payload de ejecución.
Relaciones
- Requiere: datos válidos de empresa o un ID existente.
- Dispara / afecta: Companies y nodos posteriores.
Notas
El propietario puede mapearse desde una variable.
id: contact-actions modulo: automatizaciones app: crm nombre: Acciones de contactos tipo: accion
Acciones de contactos
Agrupa los nodos que crean, buscan, consultan o actualizan contactos y distribuyen asignaciones.
Que se logra
- Resultado: Crea, localiza y actualiza contactos, incluida la distribución ponderada entre miembros, para mantener un CRM accionable.
- Caso de uso: Una inmobiliaria: al enviar un formulario, busca el contacto, actualiza sus datos y distribuye el lead entre asesores según pesos configurados.
- Se combina con:
Trigger: formulario enviado,Acciones de dealsyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateContactDialog.tsx, UpdateContactNode.tsx, TeamMemberDistributionDialog.tsx
Como funciona
- Elegir
Create Contact,Update Contact,Find Contact,Get ContactoTeam Member DistributionenAdd Node > Contacts. - Completar los identificadores o criterios con texto fijo o variables del flujo.
- Conectar la salida con el nodo que consumirá el contacto o usuario resultante.
Campos y opciones
| Nodo | Campos configurables reales | Efecto |
|---|---|---|
Create Contact |
nombre, email, teléfono, país, propietario, empresa, etiquetas y campos personalizados | crea un contacto |
Update Contact |
ID, nombre, email, teléfono, propietario, empresa, etiquetas y campos personalizados | actualiza el contacto indicado |
Find Contact |
valor, alcance All Fields/Email/Phone/Name, país opcional y máximo 1–50 | devuelve coincidencias |
Get Contact |
ID del contacto | devuelve un contacto |
Team Member Distribution |
miembros, peso de cada uno y Auto distribute weight |
selecciona un miembro por distribución ponderada |
Reglas y validaciones
Find Contactexige un valor de búsqueda y limita el resultado a 50.- La distribución ponderada exige que los pesos sumen 100 %.
Backend
- Servicios:
automation-node-system-create-contact,automation-node-system-update-contact,automation-node-system-find-contact,automation-node-system-get-contact,automation-node-system-team-member-distributionyautomation-node-executions(create) - Efectos: crea o actualiza contactos y entrega los registros o usuario seleccionado a la ejecución.
Relaciones
- Requiere: permiso para Automatizaciones y datos válidos del contacto.
- Dispara / afecta: Contactos y nodos posteriores que reciben sus datos.
Notas
Los IDs que proceden de un trigger pueden dejarse vacíos al guardar y asignarse desde variables antes de probar.
id: conversation-ai-control modulo: automatizaciones app: crm nombre: Control de IA en conversación tipo: accion
Control de IA en conversación
Controla el contexto y la reanudación de un asistente IA dentro de una conversación.
Que se logra
- Resultado: Controla cuándo el asistente IA pierde el contexto anterior o vuelve a atender una conversación con una instrucción específica.
- Caso de uso: Un soporte técnico: cuando el ticket se resuelve, corta el contexto de IA; si el cliente responde de nuevo, reanuda la IA con instrucciones de postventa.
- Se combina con:
Trigger: conversación actualizada,Mensajería de conversacionesy Asistentes IA.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): ConversationAIContextCutDialog.tsx, ResumeConversationWithAiNode.tsx
Como funciona
- Elegir
Cut AI ContextoResume with AIenAdd Node > Conversations. - Indicar la conversación con un ID o variable.
- Para reanudar, escribir una instrucción, elegir un asistente o
Keep current, y decidir si responde de inmediato.
Reglas y validaciones
Resume with AIadmiteSend a message nowyReset AI context.- Si no envía ahora, la instrucción queda pendiente y se consume con el siguiente mensaje entrante.
Backend
- Servicios:
automation-node-system-conversation-ai-context-cut,automation-node-system-resume-conversation-with-ai - Efectos: borra memoria de IA o asigna/reanuda un asistente; puede producir una respuesta proactiva.
Relaciones
- Requiere: una conversación con IA accesible.
- Dispara / afecta: asignación, memoria y respuestas de asistentes IA.
Notas
Las plantillas de reanudación requieren seleccionar un asistente concreto.
id: conversation-messages modulo: automatizaciones app: crm nombre: Mensajería de conversaciones tipo: accion
Mensajería de conversaciones
Reúne los nodos para buscar, abrir, actualizar y enviar mensajes en conversaciones de los canales conectados.
Que se logra
- Resultado: Opera conversaciones omnicanal desde el flujo: busca contexto, inicia chats y envía mensajes, SMS o plantillas de WhatsApp.
- Caso de uso: Una tienda: cuando se abandona un formulario, inicia WhatsApp, envía una plantilla aprobada y actualiza la conversación para que ventas la retome.
- Se combina con:
Triggers de conversación,Chat With AIyControl de IA en conversación.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): nodes/Conversation.tsx, SendConversationMessageNode.tsx
Como funciona
- En
Add Node > Conversations, elegirSend Message,Get Conversation,Find Conversation,Check Instagram Follower,Initiate WhatsApp,Initiate SMS,Send WhatsApp TemplateoUpdate Conversation. - Mapear el ID de contacto o conversación desde un trigger o nodo anterior.
- Configurar contenido, canal, plantilla o campos de conversación y publicar el flujo.
Campos y opciones
| Nodo | Campos configurables reales | Efecto |
|---|---|---|
Send Message |
conversación, tipo text/image/audio/video/document, texto y archivo S3 | envía mensaje o medio |
Get Conversation |
ID de conversación | devuelve conversación |
Find Conversation |
contacto, plataforma y máximo 1–50 | busca conversaciones |
Check Instagram Follower |
ID de conversación | consulta seguimiento y consentimiento Meta |
Initiate WhatsApp |
ID de contacto | abre o reanuda chat WhatsApp |
Initiate SMS |
contacto y número saliente | inicia chat SMS |
Send WhatsApp Template |
destinatario, contacto o conversación, plantilla y variables | envía plantilla aprobada |
Update Conversation |
ID, pipeline, etapa, usuario, asistente IA, estado, etiquetas y campos personalizados | actualiza conversación |
Reglas y validaciones
- El seguimiento de Instagram exige consentimiento de mensajería; un comentario aislado no es suficiente.
- Para SMS el número saliente debe estar activo. Los adjuntos de
Send Messagese cargan a S3.
Backend
- Servicios:
automation-node-system-send-conversation-message,automation-node-system-get-conversation,automation-node-system-find-conversation,automation-node-system-check-instagram-follower,automation-node-system-whatsapp-conversation-initiate,automation-node-system-sms-conversation-initiate,automation-node-system-send-whatsapp-template,automation-node-system-update-conversation - Efectos: envía comunicaciones, inicia hilos o actualiza el enrutamiento de una conversación.
Relaciones
- Requiere: canales configurados y destinatarios válidos.
- Dispara / afecta: Conversaciones, Mensajes, WhatsApp, SMS e Instagram.
Notas
El selector de variables permite guardar IDs vacíos que se resolverán durante una ejecución.
id: deal-actions modulo: automatizaciones app: crm nombre: Acciones de deals tipo: accion
Acciones de deals
Agrupa las acciones para crear y modificar deals y consultar sus productos o contactos observadores.
Que se logra
- Resultado: Crea, consulta y actualiza oportunidades, productos y watchers para que el pipeline avance con señales reales del cliente.
- Caso de uso: Una empresa B2B: cuando un lead responde a una campaña, crea un deal, asigna watchers y añade los productos consultados al seguimiento comercial.
- Se combina con:
Trigger: contacto creado,Búsqueda de productosyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateDealNode.tsx, UpdateDealDialog.tsx, GetDealsDialog.tsx
Como funciona
- Elegir un nodo en
Add Node > Deals. - Definir IDs y campos con valores fijos o variables de pasos anteriores.
- Publicar y utilizar la salida de la acción en la siguiente rama.
Campos y opciones
| Nodo | Campos configurables reales | Efecto |
|---|---|---|
Create Deal |
nombre, valor, moneda, contacto, empresa, pipeline, etapa, propietario, fecha, etiquetas y campos personalizados | crea un deal |
Update Deal |
ID y los mismos campos; acción de etiquetas preserve/replace/remove/remove_all | actualiza un deal |
Get Deal |
ID | devuelve un deal |
Get Deals |
contacto, empresa, estado, pipeline y etapa | devuelve deals filtrados |
Get Deal Products |
ID del deal | devuelve sus líneas de producto |
Get Deal Watchers |
ID del deal | devuelve observadores y cantidad |
Add Deal Watcher |
deal, contacto, rol y notas | agrega o restaura un observador |
Reglas y validaciones
Add Deal Watcherno admite el contacto principal del deal y restaura una relación eliminada en lugar de duplicarla.
Backend
- Servicios:
automation-node-system-create-deal,automation-node-system-update-deal,automation-node-system-get-deal,automation-node-system-get-deals,automation-node-system-get-deal-products,automation-node-system-get-deal-watchers,automation-node-system-add-deal-watcher - Efectos: crea o modifica deals y sus observadores, o devuelve datos de consulta para nodos posteriores.
Relaciones
- Requiere: IDs accesibles de la organización.
- Dispara / afecta: Deals, líneas de producto y observadores.
Notas
Los nodos que reciben un ID en tiempo de ejecución validan ese valor en backend al ejecutarse.
id: estimate-actions modulo: automatizaciones app: crm nombre: Creación de estimates tipo: accion
Creación de estimates
Crea un estimate de ventas con sus líneas de producto y configuración documental.
Que se logra
- Resultado: Genera una cotización desde los datos ya capturados por el flujo, con sus líneas, moneda y plantilla.
- Caso de uso: Una empresa de servicios: cuando un prospecto acepta una propuesta por WhatsApp, crea un estimate con el servicio solicitado y lo deja listo para seguimiento.
- Se combina con:
Deal actions,Búsqueda de productosyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateEstimateDialog.tsx
Como funciona
- Elegir
Create EstimateenAdd Node > Estimates. - Indicar
Contact ID, moneda, fechas, estado, propietario y plantilla documental. - Añadir líneas de producto manualmente o pegar el arreglo en modo JSON; completar descuentos, notas y campos personalizados.
Reglas y validaciones
- El contacto es obligatorio y las líneas pueden configurarse en modo manual o JSON.
Backend
- Servicios:
automation-node-system-create-estimate - Efectos: crea el estimate y sus líneas para la organización.
Relaciones
- Requiere: contacto y moneda de la organización.
- Dispara / afecta: Estimates y documentos de ventas.
Notas
Por confirmar: qué estados de estimate admite el servicio en todas las configuraciones.
id: execution-monitoring modulo: automatizaciones app: crm nombre: Monitoreo de ejecuciones tipo: vista
Monitoreo de ejecuciones
Lista las ejecuciones de automatizaciones y permite abrir su recorrido, reintentar una ejecución o iniciar una prueba manual.
Que se logra
- Resultado: Da trazabilidad operativa para localizar ejecuciones, revisar su estado y volver a lanzar casos cuando la interfaz lo permite.
- Caso de uso: Un negocio de soporte: filtra ejecuciones fallidas de SLA, abre cada una y reintenta el caso después de corregir el dato del ticket.
- Se combina con:
Visor de ejecuciónyEditor visual.
Donde esta
- Ruta:
/[orgId]/automations-executions - Acceso en UI:
Automations > View Executions - Componente(s): AutomationsExecutionsView y páginas de ejecuciones
Como funciona
- Abrir
View Executionsdesde la lista o desde el editor. - Filtrar por automatización, estado o periodo y elegir una fila.
- Abrir la ejecución para inspeccionar el recorrido completo en
Automation execution viewer. - Usar el control de reintento cuando la ejecución lo permita, o lanzar
Run Executiondesde el editor con un payload de prueba.
Reglas y validaciones
- Las ejecuciones manuales no esperan un trigger externo.
- El historial se asocia a una automatización concreta, incluida la enviada como filtro en la URL.
Backend
- Servicios:
automations-executions(find/get/create/patch),automation-node-executions(find),automation-run(create) - Efectos: crear o reintentar produce ejecuciones y estados de nodo que se pueden abrir en el visor.
Relaciones
- Requiere: permiso
can_access_automations. - Dispara / afecta: acciones de las ramas ejecutadas.
Notas
Por confirmar: qué estados concretos habilitan el botón de reintento en todas las variantes de la pantalla.
id: execution-viewer modulo: automatizaciones app: crm nombre: Visor de ejecución tipo: vista
Visor de ejecución
Reconstruye en el lienzo el flujo ejecutado y muestra el estado, la entrada, la configuración y la salida de cada nodo.
Que se logra
- Resultado: Permite explicar qué ocurrió en una ejecución concreta, qué nodo siguió el flujo y qué datos produjo.
- Caso de uso: Un equipo de operaciones: ante una reserva sin confirmación, revisa paso a paso si falló la búsqueda de horario, el mensaje o la creación de la reserva.
- Se combina con:
Monitoreo de ejecucionesyEditor visual.
Donde esta
- Ruta:
/[orgId]/automations-executions/viewer/[executionID] - Acceso en UI:
Automation execution viewer - Componente(s): AutomationExecutionViewer y NodeExecutionPanel
Como funciona
- Abrir una ejecución desde
View Executionso después deRun Execution. - Revisar los nodos y conectores coloreados según el resultado de cada paso.
- Pulsar un nodo para abrir su panel y comparar el payload recibido, su configuración y el resultado producido.
- Identificar el paso con error para corregir el flujo o los valores de una futura prueba.
Reglas y validaciones
- El visor usa el flujo guardado con la ejecución y no depende del estado actual del editor.
- Los datos de variables se muestran por paso para poder seguir una rama condicional.
Backend
- Servicios:
automations-executions(get),automation-node-executions(find),automations(get) - Efectos: no ejecuta ni modifica el flujo; solo presenta el registro de la ejecución.
Relaciones
- Requiere: una ejecución accesible de la organización.
- Dispara / afecta: no produce acciones adicionales.
Notas
Por confirmar: si el visor conserva el flujo de ejecuciones muy antiguas cuando su automatización ya fue eliminada.
id: flow-control modulo: automatizaciones app: crm nombre: Control de flujo tipo: accion
Control de flujo
Agrupa los nodos que dirigen una rama o transforman datos entre acciones.
Que se logra
- Resultado: Define ramas, variables, búsquedas de referencia, transformaciones y llamadas HTTP para adaptar el flujo a cada caso.
- Caso de uso: Un operador turístico: según destino y disponibilidad, bifurca el flujo, transforma los datos del viajero y termina solo la rama que no aplica.
- Se combina con: Cualquier trigger y los nodos de CRM, conversaciones, reservas o integraciones HTTP.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): NodeSelectionMenu.tsx, ConditionSidebar.tsx, JavaScriptDialog.tsx
Como funciona
- En
Add Node > Flow Control, elegirCondition,HTTP,JavaScript Transform,Lookup Value,Set VariableoEnd. - Conectar el nodo a la rama;
Conditionabre sus salidas para cada resultado. - Abrir el nodo y completar sus datos antes de publicar.
Campos y opciones
| Nodo | Campos configurables reales | Efecto |
|---|---|---|
Condition |
reglas y grupos lógicos | envía la ejecución a la salida que coincide |
HTTP |
etiqueta, método GET/POST/PUT/DELETE/PATCH, URL, encabezados, parámetros y cuerpo | realiza una solicitud externa |
JavaScript Transform |
etiqueta, plantilla y código transform(input) |
devuelve datos transformados para el paso siguiente |
Lookup Value |
etiqueta, clave, filas clave/valor, valor predeterminado y coincidencia sensible a mayúsculas | busca una equivalencia |
Set Variable |
etiqueta, nombre y valor | añade o reemplaza una variable de la ejecución |
End |
etiqueta y Output Data (JSON) |
termina esa rama y puede devolver un payload |
Reglas y validaciones
JavaScript Transformsolo admite una funcióntransform; bloquea imports, consola y temporizadores.Endbloquea guardar si su JSON no es válido.Delayaparece comoComing Soony no puede agregarse.
Backend
- Servicios:
automation-node-http,automation-node-system-javascript,automation-node-system-lookup-value,automation-node-system-set-variable,automation-node-system-endyautomation-node-executions(create) - Efectos: la condición controla la rama; HTTP llama sistemas externos; los demás enriquecen, transforman o cierran el payload.
Relaciones
- Requiere: una automatización y valores disponibles en la ejecución.
- Dispara / afecta: la información disponible para los nodos posteriores.
Notas
El selector de variables toma datos de la última ejecución y no mezcla datos de ejecuciones distintas.
id: meta-conversions modulo: automatizaciones app: crm nombre: Conversiones de Meta tipo: accion
Conversiones de Meta
Recupera o registra atribución de Meta y envía una conversión mediante Meta CAPI.
Que se logra
- Resultado: Centraliza la atribución del contacto y registra una conversión en Meta CAPI desde el momento comercial que ocurre en Apex.
- Caso de uso: Una tienda que capta prospectos por anuncios: cuando un deal se gana, recupera la fuente del contacto y envía a Meta la conversión para medir campañas.
- Se combina con:
Contact actions,Deal actionsyFlow Control.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): GetContactSourcesDialog.tsx, SendMetaConversionDialog.tsx
Como funciona
- Elegir
Get Contact Sources,Set Contact SourceoSend Meta ConversionenAdd Node > Meta Conversions. - Para buscar atribución, mapear el contacto y escoger WhatsApp, Facebook o ambos; se puede preferir una conversación.
- Para registrar una fuente, indicar contacto, tipo, UTM, canal, IDs Meta y metadata JSON.
- Para convertir, elegir cómo localizar atribución, evento, canal y, para
Purchase, moneda y valor.
Reglas y validaciones
Send Meta Conversionpuede omitir contactos sin anuncio Meta cuando se activaSkip if no Meta ad found.- El resultado de
Get Contact Sourcesexponemeta_source_id, recomendado para enviar la conversión.
Backend
- Servicios:
automation-node-system-get-contact-sources,automation-node-system-set-contact-sources,automation-node-system-send-meta-conversion - Efectos: crea/actualiza atribución y envía el evento de conversión a Meta.
Relaciones
- Requiere: configuración de conversiones de Meta y atribución o identificador de contacto.
- Dispara / afecta: Contact Sources y Meta Conversions.
Notas
Purchase exige moneda y valor.
id: notes-actions modulo: automatizaciones app: crm nombre: Notas internas tipo: accion
Notas internas
Crea una nota interna asociada a un contacto o a un deal.
Que se logra
- Resultado: Deja contexto interno estructurado en el contacto o deal sin depender de que un usuario transcriba información.
- Caso de uso: Una inmobiliaria: tras una conversación calificada, guarda en el deal una nota con el presupuesto y la zona de interés para el asesor.
- Se combina con:
Mensajería de conversaciones,Contact actionsyDeal actions.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateNoteNode.tsx
Como funciona
- Elegir
Create NoteenAdd Node > Notes. - Seleccionar
Note Typeentre deal y contact. - Indicar el ID correspondiente y escribir
Note Content, con variables si es necesario.
Reglas y validaciones
- El contenido de la nota es obligatorio y solo se muestra el ID que corresponde al tipo elegido.
Backend
- Servicios:
automation-node-system-create-note - Efectos: crea una nota interna vinculada al contacto o deal.
Relaciones
- Requiere: un contacto o deal existente.
- Dispara / afecta: historial del contacto o deal.
Notas
La nota no envía notificaciones desde este nodo.
id: product-search modulo: automatizaciones app: crm nombre: Búsqueda de productos tipo: accion
Búsqueda de productos
Busca productos del catálogo y expone las coincidencias a los pasos siguientes.
Que se logra
- Resultado: Encuentra productos del catálogo dentro de una automatización para continuar el flujo con una opción comercial relevante.
- Caso de uso: Un distribuidor: cuando un prospecto pregunta por una categoría, busca productos por texto o semántica y usa el resultado antes de crear el deal.
- Se combina con:
Chat With AI,Deal actionsyCreate Estimate.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): SearchProductDialog.tsx
Como funciona
- Elegir
Search ProductenAdd Node > Products. - Escribir
Search Term, elegirAI + Text Search,AI Semantic Search OnlyoText Search Only, y definir entre 1 y 50 resultados. - Usar los productos devueltos, incluidos sus campos personalizados, en una condición, estimate o mensaje.
Reglas y validaciones
- El término de búsqueda es obligatorio; los modos que usan IA pueden generar costo.
Backend
- Servicios:
automation-node-system-search-product - Efectos: consulta el catálogo mediante texto, búsqueda semántica o ambas.
Relaciones
- Requiere: productos de la organización.
- Dispara / afecta: datos disponibles en la ejecución.
Notas
La búsqueda semántica registra en Wallet un consumo basado en los tokens de la consulta de embeddings y el cargo incluye el margen configurado por la plataforma. La búsqueda de texto no realiza esa consulta de embeddings.
id: reservation-actions modulo: automatizaciones app: crm nombre: Acciones de reservas tipo: accion
Acciones de reservas
Consulta disponibilidad y administra reservas desde un flujo.
Que se logra
- Resultado: Consulta disponibilidad y crea, actualiza o recupera reservas como parte de una respuesta operativa automática.
- Caso de uso: Una clínica: cuando un paciente confirma por WhatsApp, consulta horarios, crea la reserva y responde con la cita confirmada.
- Se combina con:
Trigger: reserva creada/actualizada,Mensajería de conversacionesy Reservations.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateReservationDialog.tsx, UpdateReservationDialog.tsx
Como funciona
- Elegir
Get Reservations Available Slots,Create Reservation,Update ReservationoGet ReservationenAdd Node > Reservations. - Definir servicio, fecha o ID de reserva usando datos fijos o variables.
- Utilizar los slots devueltos antes de crear una reserva.
Reglas y validaciones
- La consulta de slots exige servicio y fecha; el recurso preferido es opcional.
- La actualización requiere ID y permite cambiar servicio, contacto, fecha, tamaño, recurso, estado, notas y campos personalizados.
Backend
- Servicios:
automation-node-system-get-reservations-available-slots,automation-node-system-create-reservations,automation-node-system-update-reservations,automation-node-system-get-reservation - Efectos: crea o modifica reservas y devuelve la disponibilidad o el registro solicitado.
Relaciones
- Requiere: servicios de reservas configurados.
- Dispara / afecta: Reservations y sus recursos.
Notas
Por confirmar: los estados disponibles dependen de la configuración de Reservations.
id: series-actions modulo: automatizaciones app: crm nombre: Acciones de Series tipo: accion
Acciones de Series
Inscribe un contacto en una Series o lo retira de una Series concreta o de todas.
Que se logra
- Resultado: Inscribe o retira contactos de una serie desde un flujo, para que las secuencias se ajusten al estado real del cliente.
- Caso de uso: Una academia: cuando un alumno reserva una demo, se suscribe a la serie de preparación; si compra, se le retira de la serie de captación.
- Se combina con:
Trigger: reserva creada,Contact actionsy Series.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): SubscribeToSeriesDialog.tsx, UnsubscribeFromSeriesDialog.tsx
Como funciona
- Elegir
Subscribe to SeriesoUnsubscribe from SeriesenAdd Node > Series. - Mapear
Contact ID. - Elegir una Series para suscribir o retirar; para la baja, activar
Unsubscribe from all seriessi debe aplicarse a todas.
Reglas y validaciones
- La suscripción exige una Series y el nodo omite la acción si la Series está inactiva.
Backend
- Servicios:
automation-node-system-subscribe-to-series,automation-node-system-unsubscribe-from-series - Efectos: crea o elimina la suscripción de la Series.
Relaciones
- Requiere: contacto y Series existentes.
- Dispara / afecta: Campaigns > Series.
Notas
La baja puede ejecutarse sin elegir una Series cuando se activa la opción para todas.
id: ticket-actions modulo: automatizaciones app: crm nombre: Acciones de tickets tipo: accion
Acciones de tickets
Actualiza tickets y ejecuta acciones de Helpdesk sobre ellos.
Que se logra
- Resultado: Convierte cambios de soporte en acciones repetibles: asignación, respuesta, notas y seguimiento del ticket sin intervención manual.
- Caso de uso: Una mesa de ayuda SaaS: cuando entra un ticket prioritario, lo asigna al equipo de guardia, añade una nota interna y responde con el primer paso.
- Se combina con:
Trigger: ticket de Helpdesk creado/actualizadoyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): UpdateTicketDialog.tsx, HelpdeskTicketActionDialog.tsx
Como funciona
- Elegir
Update TicketenTickets, oUpdate Helpdesk Ticket,Assign Helpdesk Ticket,Add Helpdesk Note,Send Helpdesk ReplyoAdd Helpdesk WatcherenHelpdesk. - Mapear el ID del ticket y completar la acción: estado, prioridad, responsable, asistente IA, pipeline, nota, respuesta u observador.
- Publicar el flujo y revisar la ejecución desde el visor.
Reglas y validaciones
Update Ticketpermite cambiar estado, prioridad, usuario, asistente IA, pipeline y etapa.
Backend
- Servicios:
automation-node-system-update-ticket,automation-node-system-helpdesk-ticket-action - Efectos: actualiza, asigna, anota, responde o añade un observador al ticket.
Relaciones
- Requiere: ticket accesible y valores válidos para la acción.
- Dispara / afecta: Tickets y Helpdesk.
Notas
Por confirmar: la lista exhaustiva de campos para cada variante de Helpdesk Ticket Action está distribuida entre sus acciones internas.
id: trigger-activity-created modulo: automatizaciones app: crm nombre: Trigger: actividad creada tipo: automatizacion
Trigger: actividad creada
Se ejecuta tras crear una actividad que coincida con los filtros de autor, responsable, tipo y finalización.
Que se logra
- Resultado: Convierte una actividad nueva en una respuesta coordinada de ventas u operación.
- Caso de uso: Una agencia: cuando se crea una llamada de seguimiento, envía al responsable un email y añade un watcher al deal relacionado.
- Se combina con:
Acciones de actividades,Acciones de dealsyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ActivityCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Created by User |
selector | No | Miembro que creó la actividad. |
Assigned to User |
selector | No | Responsable asignado. |
Activity Type |
selector | No | Call, Meeting, Task, Deadline, Email o Lunch. |
Completion Status |
selector | No | Not Completed o Completed. |
Reglas y validaciones
- Todos los filtros son opcionales.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
activities/hooks/automationActivityOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-activity-date-based modulo: automatizaciones app: crm nombre: Trigger: fecha de actividad tipo: automatizacion
Trigger: fecha de actividad
Se ejecuta cuando llega el inicio o fin de una actividad, o un intervalo antes o después, y la actividad pasa los filtros.
Que se logra
- Resultado: Ejecuta una acción antes o después de una fecha de actividad para recordar reuniones y activar seguimiento.
- Caso de uso: Una agencia: 15 minutos antes de una reunión, envía WhatsApp al contacto; después de la fecha, crea una tarea de seguimiento si la actividad no se completó.
- Se combina con:
Acciones de actividades,Mensajería de conversacionesyAcciones de deals.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ActivityDateBasedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Activity date |
selector | Sí | Start date and time o End date and time. |
When to run |
selector | Sí | Before, On o After. |
Amount y Unit |
número y selector | Condicional | Para antes/después: entero positivo en Minutes, Hours o Days. |
Created by user |
selector | No | Miembro que creó la actividad. |
Assigned to user |
selector | No | Miembro asignado. |
Activity type |
selector | No | Call, Meeting, Task, Deadline, Email o Lunch. |
Completion status |
selector | No | Not completed o Completed. |
Reglas y validaciones
- Con
Onno se guarda intervalo. - Fecha y hora se leen en la zona horaria de la organización. Sin hora válida, no dispara.
- El proceso se ejecuta por ventanas de un minuto, no antes del instante objetivo; deduplica entregas.
- Sin estado explícito, antes/en usa actividades no completadas; después no filtra por completada.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
cron-activity-date-based;src/lib/date-based-automation-triggers/run.js. - Efectos: una coincidencia inicia el flujo publicado con el registro de actividad como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Una modificación de la fecha u hora que cambie el minuto objetivo puede originar una nueva ejecución.
- El recordatorio de producto de 10 minutos (
schedule-activity-reminder) es independiente de este trigger.
id: trigger-activity-updated modulo: automatizaciones app: crm nombre: Trigger: actividad actualizada tipo: automatizacion
Trigger: actividad actualizada
Se ejecuta cuando cambia una actividad y coincide con un cambio monitorizado.
Que se logra
- Resultado: Reacciona a un cambio relevante de una tarea, reunión o llamada para cerrar el siguiente paso del proceso.
- Caso de uso: Una asesoría: cuando una actividad queda completada, crea la siguiente tarea y actualiza el deal para evitar seguimientos perdidos.
- Se combina con:
Acciones de actividadesyAcciones de deals.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ActivityUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Subject, tipo, responsable, finalización, fechas/horas y referencias a deal, contacto o empresa. |
From / To |
valor o Any Value |
No | Para tipo, responsable y finalización usa opciones; los demás admiten texto. |
Created by User |
selector | No | Miembro que creó la actividad. |
Assigned to User |
selector | No | Responsable asignado. |
Activity Type |
selector | No | Call, Meeting, Task, Deadline, Email o Lunch. |
Completion Status |
selector | No | Not Completed o Completed. |
Reglas y validaciones
- Las reglas de cambio se aplican sobre valores anterior y nuevo.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
activities/hooks/automationActivityOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-checkout-abandoned modulo: automatizaciones app: crm nombre: Trigger: checkout abandonado tipo: automatizacion
Trigger: checkout abandonado
Trigger por fecha que se ejecuta una vez por checkout del catálogo que sigue abierto un tiempo después de la última actividad del comprador.
Que se logra
- Resultado: recupera ventas enviando al comprador un link que restaura su carrito.
- Caso de uso: una tienda de cosméticos envía por WhatsApp, una hora después, el
recovery_urlcon un mensaje personalizado. - Se combina con:
Mensajería de conversacionesyAcciones de actividades(correo).
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Order Events > Checkout abandoned - Componente(s):
OrderTriggerConfig.tsx(CheckoutAbandonedConfig)
Como funciona
- En el nodo
Start, agregaCheckout abandoned. - Indica cuánto esperar tras la última actividad (cantidad y unidad) y, opcionalmente, un catálogo.
- Conecta un nodo de WhatsApp o correo que use
recovery_url, guarda y publica.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Amount / Unit | número y selector | Sí | Minutos, horas o días después de last_activity_at. |
| Catalog | selector | No | Limita a un catálogo. |
Reglas y validaciones
- Solo checkouts
open, sin pedido y con correo o teléfono del comprador. - Dispara una vez por checkout y trigger.
- El payload incluye
recovery_url, artículos, total, moneda y datos del comprador.
Backend
- Servicios:
automations-webhooks,automation-run,checkouts. - Hooks relevantes:
src/lib/date-based-automation-triggers/checkout-abandoned.js,src/lib/date-based-automation-triggers/run.js.
Relaciones
- Requiere: catálogo con checkout habilitado y automatización publicada.
- Dispara / afecta: nodos conectados desde
Start.
id: trigger-contact-created modulo: automatizaciones app: crm nombre: Trigger: contacto creado tipo: automatizacion
Trigger: contacto creado
Se ejecuta después de crear un contacto que coincida con los filtros configurados.
Que se logra
- Resultado: Activa la calificación y el primer contacto desde el momento en que entra un lead al CRM.
- Caso de uso: Una inmobiliaria: cuando se crea un contacto con etiqueta de campaña, lo distribuye a un asesor, crea un deal y envía un WhatsApp de bienvenida.
- Se combina con:
Acciones de contactos,Acciones de dealsyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ContactCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Created by user |
selector | No | Miembro que creó el contacto. |
Contact owner |
selector | No | Miembro responsable. |
Company |
buscador | No | Empresa vinculada. |
System type |
selector | No | Conversation, Lead o Contact. |
Required tags |
selección múltiple | No | Basta con que tenga una de las etiquetas elegidas. |
Reglas y validaciones
- El hook busca webhooks activos de tipo
new-contactde la organización.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
contacts/hooks/automationContactOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-contact-updated modulo: automatizaciones app: crm nombre: Trigger: contacto actualizado tipo: automatizacion
Trigger: contacto actualizado
Se ejecuta cuando una actualización del contacto cumple al menos uno de los cambios de campo definidos y los filtros adicionales.
Que se logra
- Resultado: Mantiene los procesos comerciales alineados con cambios en el perfil o la clasificación del contacto.
- Caso de uso: Una academia: cuando un contacto cambia a interesado en un programa, lo suscribe a una serie y crea una actividad para admisiones.
- Se combina con:
Acciones de contactos,Acciones de SeriesyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ContactUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Campos: First Name, Last Name, Email, Phone, Company, creador, propietario, tipo y lista de WhatsApp. |
From / To |
valor o Any Value |
No | Compara el valor anterior y el nuevo. |
Created by user |
selector | No | Miembro que creó el contacto. |
Contact owner |
selector | No | Miembro responsable. |
Company |
buscador | No | Empresa vinculada. |
System type |
selector | No | Conversation, Lead o Contact. |
Required tags |
selección múltiple | No | Basta con que tenga una de las etiquetas elegidas. |
Reglas y validaciones
- Cada regla compara un campo antes y después; los filtros adicionales se aplican al contacto resultante.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
contacts/hooks/automationContactOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-conversation-created modulo: automatizaciones app: crm nombre: Trigger: conversación iniciada tipo: automatizacion
Trigger: conversación iniciada
Se ejecuta al crear una conversación que coincide con canal, pipeline o asignaciones.
Que se logra
- Resultado: Responde de forma consistente desde que se inicia una conversación nueva en un canal conectado.
- Caso de uso: Una tienda: cuando llega una conversación de Instagram, consulta el contacto, deja que la IA clasifique la intención y asigna el caso a ventas.
- Se combina con:
Mensajería de conversaciones,Chat With AIyAcciones de contactos.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
NewConversationConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Channel |
selector | No | WhatsApp, Instagram, Messenger o Webchat. |
Trigger for any pipeline |
interruptor | No | Al desactivarlo permite elegir Pipeline y Pipeline Stage. |
Assigned user |
selector | No | Miembro asignado. |
Assigned AI assistant |
selector | No | Asistente asignado a la conversación. |
Reglas y validaciones
- La etapa solo se ofrece después de elegir un pipeline.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
conversations/hooks/automationConversationOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-conversation-updated modulo: automatizaciones app: crm nombre: Trigger: conversación actualizada tipo: automatizacion
Trigger: conversación actualizada
Se ejecuta cuando una conversación cambia en una transición configurada.
Que se logra
- Resultado: Activa acciones por cambios de conversación, como asignación, pipeline o estado, sin revisar manualmente la bandeja.
- Caso de uso: Un equipo de soporte: cuando una conversación se asigna a escalamiento, corta el contexto de IA y crea una actividad para el especialista.
- Se combina con:
Control de IA en conversaciónyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ConversationUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | Sí | Assigned user, Assigned AI assistant, pipeline, etapa, estado o canal. |
From / To |
selector o Any Value |
No | Valores anterior y nuevo de cada regla. |
Channel |
selector | No | WhatsApp, Instagram, Messenger o Webchat. |
Trigger for any pipeline |
interruptor | No | Al desactivarlo permite elegir Pipeline y Pipeline Stage. |
Assigned user |
selector | No | Miembro asignado. |
Assigned AI assistant |
selector | No | Asistente asignado a la conversación. |
Reglas y validaciones
- Debe existir al menos un
Field Changeválido; el backend rechaza configuraciones vacías y omite webhooks heredados sin cambios.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
conversations/hooks/automationConversationOnUpdated.js;automations-webhooks/hooks/validate-conversation-updated-config.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-deal-created modulo: automatizaciones app: crm nombre: Trigger: deal creado tipo: automatizacion
Trigger: deal creado
Se ejecuta después de crear un deal que coincide con su pipeline, responsable, estado, moneda o importe.
Que se logra
- Resultado: Inicia la ejecución comercial al abrir una oportunidad en el pipeline.
- Caso de uso: Una consultora: cuando se crea un deal en el pipeline de ventas, añade un watcher, crea una tarea de descubrimiento y avisa al responsable.
- Se combina con:
Acciones de dealsyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
NewDealConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Trigger for any pipeline |
interruptor | No | Al desactivarlo se habilitan Pipeline y Pipeline Stage. |
Deal owner / Created by user |
selector | No | Miembros de la organización. |
Status |
selector | No | Open, Won o Lost. |
Currency |
selector | No | USD, EUR, GBP o COP. |
Minimum amount / Maximum amount |
número | No | Rango inclusivo del importe. |
Reglas y validaciones
- Si se elige un pipeline, la etapa se limita a sus etapas.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
deals/hooks/automationDealOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-deal-updated modulo: automatizaciones app: crm nombre: Trigger: deal actualizado tipo: automatizacion
Trigger: deal actualizado
Se ejecuta si una actualización del deal satisface uno de los cambios monitorizados y los filtros del deal actual.
Que se logra
- Resultado: Automatiza el siguiente paso según el avance o retroceso de una oportunidad.
- Caso de uso: Un proveedor B2B: cuando un deal pasa a propuesta, genera un estimate, agenda seguimiento y envía al contacto el mensaje correspondiente.
- Se combina con:
Creación de estimates,Acciones de actividadesyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
DealUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Deal owner, creador, pipeline, etapa, estado, moneda, importe o nombre. |
From / To |
valor o Any Value |
No | Evalúa la transición del campo seleccionado. |
Trigger for any pipeline |
interruptor | No | Al desactivarlo se habilitan Pipeline y Pipeline Stage. |
Deal owner / Created by user |
selector | No | Miembros de la organización. |
Status |
selector | No | Open, Won o Lost. |
Currency |
selector | No | USD, EUR, GBP o COP. |
Minimum amount / Maximum amount |
número | No | Rango inclusivo del importe. |
Reglas y validaciones
- Un cambio de campo debe modificar efectivamente el valor; las reglas se evalúan como alternativas.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
deals/hooks/automationDealOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-event-guest-checked-in modulo: automatizaciones app: crm nombre: Trigger: asistente registrado en check-in tipo: automatizacion
Trigger: asistente registrado en check-in
Se ejecuta una sola vez cuando se registra el check-in de un asistente, desde QR, tabla de invitados o API.
Que se logra
- Resultado: Activa la atención posterior a la asistencia efectiva, no solo al registro.
- Caso de uso: Una feria comercial: cuando un invitado hace check-in, crea un deal para el equipo de ventas y envía un mensaje de agradecimiento posterior.
- Se combina con:
Acciones de deals,Mensajería de conversacionesy Events.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
EventGuestCheckedInConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Event |
buscador | No | Evento del asistente. |
Ticket type ID |
número | No | Restringe a un tipo de entrada concreto. |
Reglas y validaciones
- El hook comprueba que el check-in se haya producido por primera vez, por lo que los parches posteriores no relanzan el flujo.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
event-registrations/hooks/automationEventGuestOnCheckedIn.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-event-registration-created modulo: automatizaciones app: crm nombre: Trigger: registro de evento creado tipo: automatizacion
Trigger: registro de evento creado
Se ejecuta al crear una inscripción de evento que coincida con evento, estado u origen.
Que se logra
- Resultado: Orquesta la bienvenida desde el momento en que un invitado se registra a un evento.
- Caso de uso: Un organizador de seminarios: cuando alguien se registra, envía confirmación, crea una actividad de seguimiento y añade una nota al contacto.
- Se combina con:
Mensajería de conversaciones,Acciones de actividadesy Events.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
EventRegistrationCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Event |
buscador | No | Evento concreto o Any Event. |
Status |
selector | No | Approved, Pending approval, Waitlist, Invited, Declined o Cancelled. |
Source |
texto | No | Origen de la inscripción. |
Reglas y validaciones
- El payload inicial es la inscripción creada.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
event-registrations/hooks/automationEventRegistrationOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-event-registration-updated modulo: automatizaciones app: crm nombre: Trigger: registro de evento actualizado tipo: automatizacion
Trigger: registro de evento actualizado
Se ejecuta cuando una inscripción cambia y coincide con una transición o filtro.
Que se logra
- Resultado: Adecúa el proceso del evento a cambios de registro, como estado o pago.
- Caso de uso: Una conferencia: cuando un registro cambia a confirmado, envía las instrucciones de acceso y crea una actividad para el anfitrión.
- Se combina con:
Mensajería de conversaciones,Acciones de actividadesy Events.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
EventRegistrationUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Status, Payment status, Ticket type, Source o Event. |
From / To |
valor o Any Value |
No | Estado, fuente y evento tienen selector; otros aceptan texto. |
Event |
buscador | No | Evento concreto o Any Event. |
Status |
selector | No | Approved, Pending approval, Waitlist, Invited, Declined o Cancelled. |
Source |
texto | No | Origen de la inscripción. |
Reglas y validaciones
- Solo inicia cuando una regla detecta un cambio real.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
event-registrations/hooks/automationEventRegistrationOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-facebook-post-comment modulo: automatizaciones app: crm nombre: Trigger: comentario en publicación de Facebook tipo: automatizacion
Trigger: comentario en publicación de Facebook
Se ejecuta para comentarios entrantes de una Page de Facebook que coinciden con una publicación y reglas de palabras.
Que se logra
- Resultado: Convierte comentarios públicos de Facebook en una ruta de atención o captación, con respuesta pública opcional y un mensaje privado por Messenger.
- Caso de uso: Una marca: cuando alguien comenta una palabra clave en una publicación, busca el contacto, inicia la conversación de Messenger y puede responder en el comentario.
- Se combina con:
Mensajería de conversaciones,Acciones de contactosy Facebook / Messenger.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Facebook > Post Comment - Componente(s):
FacebookCommentConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y, si hace falta, la respuesta pública: textos predefinidos o
AI generated(modelo + prompt con el comentario recibido). - Guardar con
SaveoUpdate. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| publicación concreta / cualquier publicación | selector | No | Elige contenido de la Page conectada. |
| palabras incluidas y excluidas | lista | No | Comparación sin distinguir mayúsculas/minúsculas. |
| respuestas públicas | radio | No | No, varias respuestas aleatorias, o AI generated. |
| respuestas aleatorias | lista y lenguaje | No | Se envía una respuesta predefinida al azar en English o Spanish. |
| respuesta AI | modelo + prompt | No | La IA escribe la respuesta pública con el comentario recibido. Se cobra al wallet. |
Reglas y validaciones
- Ignora eventos enviados por la misma Page.
- Una publicación concreta solo puede quedar configurada en una automatización; Any post sí puede coexistir.
- La respuesta pública se envía al llegar el comentario, no desde nodos posteriores. Para redactarla con IA hay que usar
Yes, AI generateden el trigger. - Cada respuesta
AI generatedcobra el wallet de la organización. Si no hay saldo, se omite la respuesta pública y el resto de la automatización sigue. - Las respuestas públicas requieren permiso de la Page para gestionar comentarios. Si Meta la rechaza, el mensaje privado de Messenger sigue.
Backend
- Servicios:
automation-triggers-facebook(configuración),process-automation-trigger(inicio),automations-executions(ejecución). - Hooks relevantes:
messenger-channel-webhook;process-facebook-comment. - Efectos: una coincidencia inicia el flujo publicado con el comentario, el contacto y la conversación de Messenger.
Relaciones
- Requiere: una automatización publicada, el trigger activo y una Page de Facebook conectada.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Crea o encuentra contacto y conversación de Messenger antes de iniciar la ejecución.
- Meta permite una respuesta privada por comentario, dentro de 7 días.
id: trigger-form-submitted modulo: automatizaciones app: crm nombre: Trigger: formulario enviado tipo: automatizacion
Trigger: formulario enviado
Se ejecuta al crear un envío de formulario.
Que se logra
- Resultado: Convierte un envío de formulario en un proceso inmediato de captación y seguimiento.
- Caso de uso: Una agencia: cuando un prospecto envía el formulario de cotización, busca o crea el contacto, abre un deal y asigna una actividad al vendedor.
- Se combina con:
Acciones de contactos,Acciones de dealsy Forms.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
FormSubmissionConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Form |
selector | No | Un formulario concreto o Any form; se muestran también los no publicados. |
Reglas y validaciones
- El filtro por formulario se evalúa antes de iniciar el flujo.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
form-submissions/hooks/automation-form-submission-on-created.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-helpdesk-ticket-created modulo: automatizaciones app: crm nombre: Trigger: ticket de Helpdesk creado tipo: automatizacion
Trigger: ticket de Helpdesk creado
Se ejecuta al crear un ticket de Helpdesk que cumpla los filtros configurados.
Que se logra
- Resultado: Establece una respuesta inicial homogénea al entrar un ticket de soporte.
- Caso de uso: Un SaaS: cuando se crea un ticket de prioridad alta, lo asigna a guardia, añade una nota interna y envía una primera respuesta al cliente.
- Se combina con:
Acciones de ticketsyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
HelpdeskTicketCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Source |
selector | No | manual, ai, email, widget, portal, form, api o automation. |
Priority |
selector | No | low, normal, high o urgent. |
Ticket type, Support group, Assigned agent, Company |
selector | No | Valores de la organización. |
Reglas y validaciones
- Los filtros vacíos aceptan cualquier ticket.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
helpdesk-tickets/hooks/lib/helpdesk-ticket-automation.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-helpdesk-ticket-sla-breached modulo: automatizaciones app: crm nombre: Trigger: SLA de Helpdesk incumplido tipo: automatizacion
Trigger: SLA de Helpdesk incumplido
Se ejecuta cuando el programador de SLA detecta que un ticket incumplió un objetivo de primera respuesta, siguiente respuesta o resolución.
Que se logra
- Resultado: Escala automáticamente los incumplimientos de atención antes de que queden sin dueño.
- Caso de uso: Un BPO: cuando se incumple el SLA de primera respuesta, reasigna el ticket, registra una nota y alerta al supervisor mediante conversación.
- Se combina con:
Acciones de tickets,Mensajería de conversacionesy Helpdesk.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
HelpdeskTicketSlaBreachedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Breach type |
selector | No | first_response_breached, next_response_breached o resolution_breached. |
Source, Priority, Ticket type, Support group, Assigned agent, Company |
selector | No | Filtros sobre el ticket incumplido. |
Reglas y validaciones
- El programador considera tickets
open,pendinguon holdque no están pausados por SLA. - El payload incluye el tipo de incumplimiento.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
helpdesk-tickets/hooks/lib/helpdesk-ticket-automation.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-helpdesk-ticket-updated modulo: automatizaciones app: crm nombre: Trigger: ticket de Helpdesk actualizado tipo: automatizacion
Trigger: ticket de Helpdesk actualizado
Se ejecuta cuando un ticket cambia y satisface las transiciones y filtros configurados.
Que se logra
- Resultado: Encadena acciones de soporte cuando un ticket cambia de responsable, estado o prioridad.
- Caso de uso: Una empresa logística: cuando el ticket cambia a escalado, añade un watcher, avisa al especialista y crea una actividad de seguimiento.
- Se combina con:
Acciones de ticketsyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
HelpdeskTicketUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Estado, prioridad, agente, grupo, tipo, origen, empresa, contacto, deal o asunto. |
Updated by |
selector | No | Agent, Contact, AI assistant o System. |
Source, Priority, Ticket type, Support group, Assigned agent, Company |
selector | No | Filtros sobre el ticket actualizado. |
Reglas y validaciones
- Sin reglas de cambio, responde a toda actualización que pase los filtros.
- El flujo recibe el ticket,
previous_tickety el tipo de ejecutor.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
helpdesk-tickets/hooks/lib/helpdesk-ticket-automation.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-instagram-post-reel-comment modulo: automatizaciones app: crm nombre: Trigger: comentario en publicación o Reel de Instagram tipo: automatizacion
Trigger: comentario en publicación o Reel de Instagram
Se ejecuta para comentarios entrantes de Instagram que coinciden con una publicación/Reel y reglas de palabras.
Que se logra
- Resultado: Convierte comentarios públicos en una ruta de atención o captación con las reglas de contenido configuradas.
- Caso de uso: Una marca: cuando alguien comenta una palabra clave en un Reel, busca el contacto, inicia una conversación y entrega el seguimiento comercial.
- Se combina con:
Mensajería de conversaciones,Acciones de contactose Instagram.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
InstagramPostReelCommentConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y, si hace falta, la respuesta pública: textos predefinidos o
AI generated(modelo + prompt con el comentario recibido). - Guardar con
SaveoUpdate. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Specific Post or Reel / Any post or Reel |
selector | No | Elige contenido de la cuenta conectada. |
| palabras incluidas y excluidas | lista | No | Comparación sin distinguir mayúsculas/minúsculas. |
| respuestas públicas | radio | No | No, varias respuestas aleatorias, o AI generated. |
| respuestas aleatorias | lista y lenguaje | No | Se envía una respuesta predefinida al azar en English o Spanish. |
| respuesta AI | modelo + prompt | No | La IA escribe la respuesta pública con el comentario recibido. Se cobra al wallet. |
Reglas y validaciones
- Ignora eventos enviados por la misma cuenta de Instagram.
- Una publicación concreta solo puede quedar configurada en una automatización;
Any post or Reelsí puede coexistir. - La respuesta pública se envía al llegar el comentario, no desde nodos posteriores. Para redactarla con IA hay que usar
Yes, AI generateden el trigger. - Cada respuesta
AI generatedcobra el wallet de la organización. Si no hay saldo, se omite la respuesta pública y el resto de la automatización sigue.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
instagram-channel-webhook/hooks/process-event.js;process-automation-trigger. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Crea o encuentra contacto y conversación antes de iniciar la ejecución.
id: trigger-instagram-story-reply modulo: automatizaciones app: crm nombre: Trigger: respuesta a historia de Instagram tipo: automatizacion
Trigger: respuesta a historia de Instagram
Se ejecuta cuando alguien responde una historia de Instagram y la respuesta satisface los filtros.
Que se logra
- Resultado: Procesa respuestas a historias como señales de interés que pueden entrar al CRM.
- Caso de uso: Un gimnasio: cuando alguien responde una historia sobre una promoción, clasifica el mensaje con IA y crea un deal si solicita información.
- Se combina con:
Chat With AI,Acciones de dealse Instagram.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
InstagramStoryReplyConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Specific Story / Any story |
selector | No | Solo se pueden elegir historias activas de las últimas 24 horas. |
| palabras incluidas y excluidas | lista | No | Comparación sin distinguir mayúsculas/minúsculas. |
| respuestas automáticas | lista y lenguaje | No | Se envía un DM aleatorio. |
Skip AI reply on this story |
interruptor | No | Evita una segunda respuesta del asistente asignado. |
Reglas y validaciones
- Ignora respuestas de la cuenta propia.
- Solo puede existir un trigger
Any storypor organización; una historia concreta mantiene su identificador aunque expire.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
instagram-channel-webhook/hooks/process-event.js;process-automation-trigger. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Crea o encuentra contacto y conversación antes de iniciar la ejecución.
id: trigger-legacy-date-time modulo: automatizaciones app: crm nombre: Trigger: fecha y hora tipo: automatizacion
Trigger: fecha y hora
Ficha de compatibilidad para el trigger legado de fecha y hora. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por fechas y horarios programados por flujos existentes; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-facebook-ad-click modulo: automatizaciones app: crm nombre: Trigger: clic en anuncio de Facebook tipo: automatizacion
Trigger: clic en anuncio de Facebook
Ficha de compatibilidad para el trigger legado de clic en anuncio de Facebook. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por clics detectados en anuncios de Facebook configurados; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-facebook-comment modulo: automatizaciones app: crm nombre: Trigger: comentario de Facebook tipo: automatizacion
Trigger: comentario de Facebook
Ficha de compatibilidad para el trigger legado de comentario de Facebook. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por comentarios de Facebook en publicaciones configuradas; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-facebook-shop-message modulo: automatizaciones app: crm nombre: Trigger: mensaje de Facebook Shop tipo: automatizacion
Trigger: mensaje de Facebook Shop
Ficha de compatibilidad para el trigger legado de mensaje de Facebook Shop. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por mensajes de Facebook Shop de configuraciones anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-instagram-live-comment modulo: automatizaciones app: crm nombre: Trigger: comentario en vivo de Instagram tipo: automatizacion
Trigger: comentario en vivo de Instagram
Ficha de compatibilidad para el trigger legado de comentario en vivo de Instagram. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por comentarios de Instagram Live de configuraciones anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-instagram-message modulo: automatizaciones app: crm nombre: Trigger: mensaje de Instagram tipo: automatizacion
Trigger: mensaje de Instagram
Ficha de compatibilidad para el trigger legado de mensaje de Instagram. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por mensajes directos de Instagram usados por automatizaciones anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-instagram-ref-url modulo: automatizaciones app: crm nombre: Trigger: URL de referencia de Instagram tipo: automatizacion
Trigger: URL de referencia de Instagram
Ficha de compatibilidad para el trigger legado de URL de referencia de Instagram. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por URLs de referencia de Instagram usadas por flujos anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-landing-page modulo: automatizaciones app: crm nombre: Trigger: landing page tipo: automatizacion
Trigger: landing page
Ficha de compatibilidad para el trigger legado de landing page. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por visitas a landing pages configuradas previamente; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-messenger-message modulo: automatizaciones app: crm nombre: Trigger: mensaje de Messenger tipo: automatizacion
Trigger: mensaje de Messenger
Ficha de compatibilidad para el trigger legado de mensaje de Messenger. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por mensajes entrantes de Messenger de configuraciones anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-messenger-modal modulo: automatizaciones app: crm nombre: Trigger: modal de Messenger tipo: automatizacion
Trigger: modal de Messenger
Ficha de compatibilidad para el trigger legado de modal de Messenger. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por eventos de modales de Messenger integrados antes; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-messenger-ref-url modulo: automatizaciones app: crm nombre: Trigger: URL de referencia de Messenger tipo: automatizacion
Trigger: URL de referencia de Messenger
Ficha de compatibilidad para el trigger legado de URL de referencia de Messenger. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por URLs de referencia de Messenger usadas por flujos anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-qr-code modulo: automatizaciones app: crm nombre: Trigger: código QR tipo: automatizacion
Trigger: código QR
Ficha de compatibilidad para el trigger legado de código QR. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por interacciones de código QR de integraciones anteriores; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-sequence-subscription modulo: automatizaciones app: crm nombre: Trigger: suscripción a secuencia tipo: automatizacion
Trigger: suscripción a secuencia
Ficha de compatibilidad para el trigger legado de suscripción a secuencia. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por altas a secuencias existentes; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-sequence-unsubscription modulo: automatizaciones app: crm nombre: Trigger: cancelación de suscripción a secuencia tipo: automatizacion
Trigger: cancelación de suscripción a secuencia
Ficha de compatibilidad para el trigger legado de cancelación de suscripción a secuencia. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por bajas de secuencias existentes; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-website-widget modulo: automatizaciones app: crm nombre: Trigger: widget de sitio web tipo: automatizacion
Trigger: widget de sitio web
Ficha de compatibilidad para el trigger legado de widget de sitio web. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por eventos de widgets web configurados anteriormente; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-whatsapp-message modulo: automatizaciones app: crm nombre: Trigger: mensaje de WhatsApp tipo: automatizacion
Trigger: mensaje de WhatsApp
Ficha de compatibilidad para el trigger legado de mensaje de WhatsApp. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por mensajes entrantes de WhatsApp en automatizaciones ya configuradas; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-legacy-whatsapp-url modulo: automatizaciones app: crm nombre: Trigger: URL de WhatsApp tipo: automatizacion
Trigger: URL de WhatsApp
Ficha de compatibilidad para el trigger legado de URL de WhatsApp. No aparece en el selector actual de Trigger Selection.
Que se logra
- Resultado: Conserva la continuidad de automatizaciones antiguas que se activaban por interacciones por URL de WhatsApp previamente configuradas; es un trigger legado, no una capacidad nueva para diseñar procesos.
- Caso de uso: Una empresa que ya tenía el flujo: cuando ocurre el evento legado configurado, entonces conserva el seguimiento existente, por ejemplo enviar un mensaje y crear una actividad.
- Se combina con:
Editor visualy las automatizaciones existentes que todavía usan este trigger legado.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
triggerConfigurations(configuración histórica)`
Como funciona
- Abrir una automatización existente que ya contenga este trigger.
- Revisar su configuración histórica desde el nodo
Startsi el componente aún está disponible. - Mantenerlo activo únicamente mientras la integración histórica continúe entregando ese evento.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Configuración histórica |
variable | No | Solo se conserva para automatizaciones existentes. |
Reglas y validaciones
- Es un trigger legacy: no se pueden crear nuevos desde la UI actual.
- El selector vigente no lo ofrece; su ejecución depende del hook o integración histórica que aún emita ese tipo de webhook.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Por confirmar: confirmar con telemetría o pruebas de integración cuáles de estos tipos legacy siguen recibiendo eventos en producción.
id: trigger-order-cancelled modulo: automatizaciones app: crm nombre: Trigger: pedido cancelado tipo: automatizacion
Trigger: pedido cancelado
Se ejecuta cuando un pedido pasa a Cancelled.
Que se logra
- Resultado: el equipo y el cliente quedan informados de la cancelación y se pueden revertir procesos asociados.
- Caso de uso: un distribuidor avisa al vendedor y crea una actividad para gestionar el reembolso manual.
- Se combina con:
Acciones de actividadesyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Order Events > Order cancelled - Componente(s):
OrderTriggerConfig.tsx(OrderCancelledConfig)
Como funciona
- En el nodo
Start, agregaOrder cancelled. - Filtra opcionalmente por fuente, catálogo o propietario y guarda.
- Activa el trigger y publica el flujo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Source / Catalog / Owner | selector | No | Filtros del pedido. |
Reglas y validaciones
- Al cancelar se libera el inventario reservado y se cancelan los enlaces de pago abiertos; los pagos recibidos no se reembolsan automáticamente.
Backend
- Servicios:
automations-webhooks,automation-run. - Hooks relevantes:
sync-order-lifecycle(orders).
Relaciones
- Requiere: automatización publicada con el trigger activo.
- Dispara / afecta: nodos conectados desde
Start.
id: trigger-order-created modulo: automatizaciones app: crm nombre: Trigger: nuevo pedido tipo: automatizacion
Trigger: nuevo pedido
Se ejecuta cuando se coloca un pedido: checkout del catálogo, asistente de IA, creación manual o conversión desde cotización o factura.
Que se logra
- Resultado: cada pedido nuevo inicia un flujo con el pedido, sus artículos, el contacto y el link público.
- Caso de uso: una tienda envía por WhatsApp la confirmación con el link
/o/{path}y crea una tarea para el equipo de bodega. - Se combina con:
Mensajería de conversaciones,Acciones de actividadesyAcciones de deals.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Order Events > New order placed - Componente(s):
OrderTriggerConfig.tsx(OrderCreatedConfig)
Como funciona
- En el nodo
Start, agregaNew order placed. - Filtra opcionalmente por fuente, catálogo o propietario y guarda.
- Activa el trigger y publica el flujo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Source | selector | No | Catalog, AI assistant, Manual, Estimate, Invoice, API, Automation. |
| Catalog | selector | No | Catálogo de origen. |
| Owner | selector | No | Miembro propietario del pedido. |
Reglas y validaciones
- Los borradores no disparan; dispara al pasar a
Open. - El payload incluye el pedido,
items,contactypublic_url.
Backend
- Servicios:
automations-webhooks,automation-run. - Hooks relevantes:
sync-order-lifecycle(orders),src/lib/orders/order-automation.js.
Relaciones
- Requiere: automatización publicada con el trigger activo.
- Dispara / afecta: nodos conectados desde
Start.
id: trigger-order-fulfillment-updated modulo: automatizaciones app: crm nombre: Trigger: entrega del pedido actualizada tipo: automatizacion
Trigger: entrega del pedido actualizada
Se ejecuta cuando cambia el estado de entrega de un pedido.
Que se logra
- Resultado: el cliente recibe avisos de envío o entrega sin que el equipo escriba cada mensaje.
- Caso de uso: una tienda envía por WhatsApp el número de guía cuando el pedido pasa a
Fulfilled. - Se combina con:
Mensajería de conversacionesyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Order Events > Order fulfillment updated - Componente(s):
OrderTriggerConfig.tsx(OrderFulfillmentUpdatedConfig)
Como funciona
- En el nodo
Start, agregaOrder fulfillment updated. - Opcionalmente elige el nuevo estado de entrega y filtra por fuente, catálogo o propietario.
- Guarda, activa el trigger y publica.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Fulfillment status | selector | No | Unfulfilled, Partially fulfilled, Fulfilled, Returned. |
| Source / Catalog / Owner | selector | No | Mismos filtros que los otros triggers de pedidos. |
Reglas y validaciones
- El payload incluye
previous_fulfillment_status. - AchieveApex ya envía un correo al comprador cuando un envío pasa a
Ready for pickup,In transitoDelivered; este trigger sirve para avisos adicionales, por ejemplo por WhatsApp.
Backend
- Servicios:
automations-webhooks,automation-run,order-fulfillments. - Hooks relevantes:
sync-order-after-fulfillment,src/lib/orders/order-state.js.
Relaciones
- Requiere: automatización publicada con el trigger activo.
- Dispara / afecta: nodos conectados desde
Start.
id: trigger-order-paid modulo: automatizaciones app: crm nombre: Trigger: pedido pagado tipo: automatizacion
Trigger: pedido pagado
Se ejecuta una vez cuando un pedido queda totalmente pagado, por pago online, enlace de pago o pago registrado.
Que se logra
- Resultado: el flujo arranca en el momento del cobro con el pedido completo.
- Caso de uso: un curso presencial confirma el cupo por WhatsApp y mueve el deal a
Woncuando el pedido se paga. - Se combina con:
Mensajería de conversacionesyAcciones de deals.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Order Events > Order paid - Componente(s):
OrderTriggerConfig.tsx(OrderPaidConfig)
Como funciona
- En el nodo
Start, agregaOrder paid. - Filtra opcionalmente por fuente, catálogo o propietario y guarda.
- Activa el trigger y publica el flujo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Source | selector | No | Fuente del pedido. |
| Catalog | selector | No | Catálogo de origen. |
| Owner | selector | No | Miembro propietario. |
Reglas y validaciones
- Dispara solo en la transición a
Paid; los pagos parciales no disparan.
Backend
- Servicios:
automations-webhooks,automation-run. - Hooks relevantes:
src/lib/orders/order-state.js(recalculo de pago).
Relaciones
- Requiere: automatización publicada con el trigger activo.
- Dispara / afecta: nodos conectados desde
Start.
id: trigger-reservation-created modulo: automatizaciones app: crm nombre: Trigger: reserva creada tipo: automatizacion
Trigger: reserva creada
Se ejecuta tras crear una reserva que cumple los filtros de servicio, estado, origen y creador.
Que se logra
- Resultado: Convierte una reserva nueva en una confirmación y preparación automática del servicio.
- Caso de uso: Una clínica: cuando se crea una reserva, envía WhatsApp de confirmación, crea una actividad previa y notifica al doctor.
- Se combina con:
Acciones de reservas,Mensajería de conversacionesyAcciones de actividades.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ReservationCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Created by User |
selector | No | Miembro que originó la reserva. |
Service |
buscador | No | Solo servicios activos. |
Status |
selector | No | Pending, Confirmed, Cancelled, Completed o No Show. |
Source |
texto | No | Por ejemplo manual, whatsapp_ai, instagram_ai, webchat, public_link o api. |
Reglas y validaciones
- La configuración se guarda en el webhook de la automatización.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
reservations/hooks/automationReservationOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-reservation-date-based modulo: automatizaciones app: crm nombre: Trigger: fecha de reserva tipo: automatizacion
Trigger: fecha de reserva
Se ejecuta cuando llega el inicio o fin de una reserva, o un intervalo antes o después, y la reserva pasa los filtros.
Que se logra
- Resultado: Ejecuta una acción antes o después de una fecha de reserva para prevenir ausencias y activar seguimiento.
- Caso de uso: Una clínica: 24 horas antes de la cita, envía WhatsApp de recordatorio; después de la atención, solicita confirmación de seguimiento.
- Se combina con:
Acciones de reservas,Mensajería de conversacionesyAcciones de voz.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ReservationDateBasedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Date field |
selector | Sí | Start date and time o End date and time. |
When to run |
selector | Sí | Before, On o After. |
Amount y Unit |
número y selector | Condicional | Para antes/después: entero positivo en Minutes, Hours o Days. |
Created by User |
selector | No | Miembro que originó la reserva. |
Service |
buscador | No | Solo servicios activos. |
Status |
selector | No | Pending, Confirmed, Cancelled, Completed o No Show. |
Source |
texto | No | Por ejemplo manual, whatsapp_ai, instagram_ai, webchat, public_link o api. |
Reglas y validaciones
- Con
Onno se guarda intervalo. - El proceso se ejecuta por ventanas de un minuto, no antes del instante objetivo; deduplica entregas.
- Sin estado explícito, antes/en usa
PendingyConfirmed; después usaConfirmedyCompleted.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
cron-reservation-date-based;src/lib/date-based-automation-triggers/run.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Una modificación de la fecha que cambie el minuto objetivo puede originar una nueva ejecución.
id: trigger-reservation-updated modulo: automatizaciones app: crm nombre: Trigger: reserva actualizada tipo: automatizacion
Trigger: reserva actualizada
Se ejecuta cuando una reserva cambia y cumple la transición elegida.
Que se logra
- Resultado: Sincroniza las comunicaciones y tareas cuando cambia el estado o servicio de una reserva.
- Caso de uso: Un salón: cuando se reprograma una reserva, actualiza la actividad asociada y envía al cliente el nuevo horario por SMS.
- Se combina con:
Acciones de reservas,Acciones de actividadesyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
ReservationUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Status, Source, Service, creador, estado de pago o tamaño del grupo. |
From / To |
valor o Any Value |
No | La fuente y tamaño se comparan como texto. |
Created by User |
selector | No | Miembro que originó la reserva. |
Service |
buscador | No | Solo servicios activos. |
Status |
selector | No | Pending, Confirmed, Cancelled, Completed o No Show. |
Source |
texto | No | Por ejemplo manual, whatsapp_ai, instagram_ai, webchat, public_link o api. |
Reglas y validaciones
- Una regla requiere que el valor anterior sea diferente del nuevo.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
reservations/hooks/automationReservationOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-team-member-added modulo: automatizaciones app: crm nombre: Trigger: miembro del equipo agregado tipo: automatizacion
Trigger: miembro del equipo agregado
Se ejecuta después de asociar un miembro a la organización.
Que se logra
- Resultado: Estandariza el alta de un nuevo miembro para que entre al proceso del equipo sin tareas manuales repetidas.
- Caso de uso: Una agencia: cuando se agrega un asesor, crea actividades de onboarding y notifica al líder para completar su habilitación.
- Se combina con:
Acciones de actividadesy miembros de organización.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
OrganizationUserTriggerConfig.tsx
Como funciona
- Añadir el trigger en el nodo
Starty abrir su configuración. - Elegir filtros de miembro, rol o rol de permisos y guardar con
Save Configuration. - Activar el trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Team Member |
selector | No | Miembro específico o Any Team Member. |
Role |
selector | No | Owner, Admin o Member. |
Permission Role |
selector | No | Rol granular de la organización o cualquier rol. |
Reglas y validaciones
- Evalúa los filtros contra la relación de membresía creada.
Backend
- Servicios:
organizations-users,automations-webhooks,automation-runyautomations-executions. - Hooks relevantes:
organizations-users/hooks/automationOrganizationUserOnCreated.js. - Efectos: entrega al flujo el miembro de la organización que produjo el evento.
Relaciones
- Requiere: automatización publicada, trigger activo y pertenencia a la organización.
- Dispara / afecta: el historial de ejecuciones y los nodos posteriores de la automatización.
Notas
- Los filtros vacíos permiten cualquier miembro o rol.
id: trigger-team-member-removed modulo: automatizaciones app: crm nombre: Trigger: miembro del equipo eliminado tipo: automatizacion
Trigger: miembro del equipo eliminado
Se ejecuta al quitar la relación de un miembro con la organización.
Que se logra
- Resultado: Inicia el cierre operativo derivado de retirar a una persona del equipo.
- Caso de uso: Una firma de servicios: cuando se elimina un miembro, crea tareas para que el supervisor revise la reasignación de sus asuntos.
- Se combina con:
Acciones de actividadesy miembros de organización.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
OrganizationUserTriggerConfig.tsx
Como funciona
- Añadir el trigger en el nodo
Starty abrir su configuración. - Elegir filtros de miembro, rol o rol de permisos y guardar con
Save Configuration. - Activar el trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Team Member |
selector | No | Miembro específico o Any Team Member. |
Role |
selector | No | Owner, Admin o Member. |
Permission Role |
selector | No | Rol granular de la organización o cualquier rol. |
Reglas y validaciones
- Conserva el payload de la membresía eliminada para que el flujo pueda usar el miembro afectado.
Backend
- Servicios:
organizations-users,automations-webhooks,automation-runyautomations-executions. - Hooks relevantes:
organizations-users/hooks/automationOrganizationUserOnDeleted.js. - Efectos: entrega al flujo el miembro de la organización que produjo el evento.
Relaciones
- Requiere: automatización publicada, trigger activo y pertenencia a la organización.
- Dispara / afecta: el historial de ejecuciones y los nodos posteriores de la automatización.
Notas
- Los filtros vacíos permiten cualquier miembro o rol.
id: trigger-team-member-updated modulo: automatizaciones app: crm nombre: Trigger: miembro del equipo actualizado tipo: automatizacion
Trigger: miembro del equipo actualizado
Se ejecuta cuando cambia una membresía o un dato monitorizado del usuario asociado.
Que se logra
- Resultado: Reacciona a cambios de membresía o perfil que requieren redistribuir o comunicar responsabilidades.
- Caso de uso: Un call center: cuando se actualiza un miembro, crea una tarea de revisión para su supervisor y notifica al equipo correspondiente.
- Se combina con:
Acciones de actividadesy miembros de organización.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
OrganizationUserTriggerConfig.tsx
Como funciona
- Añadir el trigger en el nodo
Starty abrir su configuración. - Elegir filtros de miembro, rol o rol de permisos y guardar con
Save Configuration. - Activar el trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | No | Usuario, rol, rol de permisos, nombre, apellido, email, avatar, teléfono o rol del sistema. |
From / To |
valor o Any Value |
No | Compara el valor anterior y el nuevo. |
Team Member |
selector | No | Miembro específico o Any Team Member. |
Role |
selector | No | Owner, Admin o Member. |
Permission Role |
selector | No | Rol granular de la organización o cualquier rol. |
Reglas y validaciones
- Las reglas de cambio se usan únicamente en la variante actualizada.
Backend
- Servicios:
organizations-users,automations-webhooks,automation-runyautomations-executions. - Hooks relevantes:
organizations-users/hooks/automationOrganizationUserOnUpdated.js;users/hooks/automationOrganizationUserProfileOnUpdated.js. - Efectos: entrega al flujo el miembro de la organización que produjo el evento.
Relaciones
- Requiere: automatización publicada, trigger activo y pertenencia a la organización.
- Dispara / afecta: el historial de ejecuciones y los nodos posteriores de la automatización.
Notas
- Los filtros vacíos permiten cualquier miembro o rol.
id: trigger-voice-call-created modulo: automatizaciones app: crm nombre: Trigger: llamada de voz iniciada tipo: automatizacion
Trigger: llamada de voz iniciada
Se ejecuta al crear una llamada de voz no interna que cumple los filtros.
Que se logra
- Resultado: Inicia seguimiento operativo al comienzo de una llamada de voz elegible.
- Caso de uso: Un equipo de cobranza: cuando se crea una llamada saliente, registra una actividad y prepara variables que la IA usará durante el contacto.
- Se combina con:
Acciones de voz,Acciones de actividadesy Calling & SMS.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
VoiceCallCreatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Direction |
selector | No | Inbound o Outbound. |
Call type |
selector | No | Customer o AI assistant. |
Phone number, Assigned AI assistant, Voice agent |
selector | No | Recursos de voz de la organización. |
Reglas y validaciones
- Las llamadas de tipo sistema no son elegibles.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
voice-calls/hooks/automationVoiceCallOnCreated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-voice-call-ended modulo: automatizaciones app: crm nombre: Trigger: llamada de voz finalizada tipo: automatizacion
Trigger: llamada de voz finalizada
Se ejecuta cuando finaliza una llamada elegible que cumple los filtros.
Que se logra
- Resultado: Convierte el cierre de una llamada en seguimiento comercial, soporte o registro de contexto.
- Caso de uso: Una empresa de servicios: cuando finaliza una llamada, agrega una nota al deal y agenda la siguiente actividad si requiere seguimiento.
- Se combina con:
Notas internas,Acciones de actividadesyAcciones de deals.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
VoiceCallEndedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Direction |
selector | No | Inbound o Outbound. |
Call type |
selector | No | Customer o AI assistant. |
Phone number, Assigned AI assistant, Voice agent |
selector | No | Recursos de voz de la organización. |
Minimum duration (seconds) |
número | No | Excluye llamadas más cortas. |
Reglas y validaciones
- Si no se indica duración mínima, acepta cualquier duración.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
voice-calls/hooks/automationVoiceCallOnEnded.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-voice-call-screening-detected modulo: automatizaciones app: crm nombre: Trigger: filtrado de llamada detectado tipo: automatizacion
Trigger: filtrado de llamada detectado
Se ejecuta al detectar buzón de voz o preclasificación en una llamada saliente elegible.
Que se logra
- Resultado: Maneja llamadas que llegan a buzón de voz o a una preclasificación para preservar la oportunidad de contacto.
- Caso de uso: Una clínica: cuando detecta buzón de voz en una llamada de recordatorio, envía un SMS y crea una tarea para volver a intentar.
- Se combina con:
Mensajería de conversaciones,Acciones de actividadesy Calling & SMS.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
VoiceCallScreeningDetectedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Direction |
selector | No | Inbound o Outbound. |
Call type |
selector | No | Customer o AI assistant. |
Phone number, Assigned AI assistant, Voice agent |
selector | No | Recursos de voz de la organización. |
Screening type |
selector | No | Voicemail o Pre-screening. |
Reglas y validaciones
- El filtro de dirección inicia en
Outbound; se puede cambiar en la UI.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
voice-calls/hooks/automationVoiceCallOnScreeningDetected.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-voice-call-updated modulo: automatizaciones app: crm nombre: Trigger: llamada de voz actualizada tipo: automatizacion
Trigger: llamada de voz actualizada
Se ejecuta cuando una llamada elegible cambia en alguno de los campos configurados.
Que se logra
- Resultado: Reacciona a cambios durante el ciclo de una llamada sin tener que revisar registros manualmente.
- Caso de uso: Una clínica: cuando la llamada cambia a un estado de atención, actualiza el contacto y crea una tarea para el asesor.
- Se combina con:
Acciones de contactos,Acciones de actividadesy Calling & SMS.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
VoiceCallUpdatedConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Field Changes |
lista repetible | Sí | Estado, modo del asistente, asistente asignado, contacto o tipo de filtrado. |
From / To |
selector o Any Value |
No | Compara valores anterior y nuevo. |
Direction |
selector | No | Inbound o Outbound. |
Call type |
selector | No | Customer o AI assistant. |
Phone number, Assigned AI assistant, Voice agent |
selector | No | Recursos de voz de la organización. |
Reglas y validaciones
- Requiere un campo de cambio.
- Los parches que solo actualizan datos internos de sincronización, grabación, coste o etiquetas se ignoran.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
voice-calls/hooks/automationVoiceCallOnUpdated.js. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- Los filtros vacíos equivalen a cualquier valor.
id: trigger-webhook modulo: automatizaciones app: crm nombre: Trigger: webhook externo tipo: automatizacion
Trigger: webhook externo
Inicia la automatización con el JSON enviado a una URL única generada para el webhook.
Que se logra
- Resultado: Permite que un sistema externo inicie un flujo con una URL propia de la automatización.
- Caso de uso: Un e-commerce: cuando su tienda confirma un pago, llama el webhook; Apex crea o actualiza el contacto y envía la confirmación por WhatsApp.
- Se combina con:
Flow Control,Acciones de contactosyMensajería de conversaciones.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Start node > Add Trigger - Componente(s):
WebhookConfig.tsx
Como funciona
- En el nodo
Start, agregar este trigger y abrir su configuración. - Definir los filtros disponibles y guardar con
Save Configuration. - Activar el interruptor del trigger y publicar el flujo con
Publish.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Generate Webhook URL |
acción | Sí | Crea la URL para la automatización. |
Copy |
acción | No | Copia la URL. |
Replace webhook URL |
acción | No | Invalida la URL anterior y genera otra. |
Reglas y validaciones
- El sistema externo debe enviar una petición
POSTcon cuerpo JSON. - Reemplazar la URL obliga a actualizar el sistema emisor.
Backend
- Servicios:
automations-webhooks(configuración),automation-run(inicio),automations-executions(ejecución). - Hooks relevantes:
automations-webhooks/hooks/create-replace-path.js;automation-run. - Efectos: una coincidencia inicia el flujo publicado con el registro o evento que produjo el trigger como datos iniciales.
Relaciones
- Requiere: una automatización publicada y el trigger activo.
- Dispara / afecta: los nodos conectados desde
Starty el historial de ejecuciones.
Notas
- El contenido JSON se convierte en los datos iniciales disponibles para los nodos del flujo.
id: voice-actions modulo: automatizaciones app: crm nombre: Acciones de voz tipo: accion
Acciones de voz
Programa llamadas IA salientes y prepara los valores que un asistente de voz utiliza durante la interacción.
Que se logra
- Resultado: Programa una llamada saliente con IA y le entrega variables dinámicas del contacto o del caso.
- Caso de uso: Una clínica dental: si un paciente no confirma su cita, programa una llamada de IA con su nombre y horario para recuperar la confirmación.
- Se combina con:
Trigger: fecha de reserva, Calling & SMS yContact actions.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Add Node - Componente(s): CreateVoiceOutboundRequestNode.tsx, SetVoiceDynamicVariablesNode.tsx
Como funciona
- Elegir
Outbound AI CalloSet Voice Dynamic VariablesenAdd Node > Voice. - Para una llamada, seleccionar número saliente y asistente, y aportar contacto o número alternativo.
- Elegir ejecución inmediata, relativa, fecha y hora exacta o expresión variable; añadir pares de variables si se necesitan.
Campos y opciones
| Nodo | Campos configurables reales | Efecto |
|---|---|---|
Outbound AI Call |
número, asistente, contacto, teléfono alternativo, agenda y variables dinámicas | programa una llamada Telnyx |
Set Voice Dynamic Variables |
variables, consulta de memoria y metadatos de conversación | prepara contexto de voz |
Reglas y validaciones
- La agenda relativa acepta minutos, horas o días.
- El número y el asistente son necesarios para programar una llamada.
Backend
- Servicios:
automation-node-system-create-voice-outbound-request,automation-node-system-set-voice-dynamic-variables - Efectos: crea una solicitud de llamada o modifica el contexto entregado al asistente de voz.
Relaciones
- Requiere: número de voz y asistente configurados.
- Dispara / afecta: Calling & SMS, Telnyx y Wallet.
Notas
Por confirmar: la tarifa exacta de Wallet de cada llamada no se expone en el diálogo del nodo.
id: campanas app: crm nombre: Campañas estado: shipped permiso: can_access_campaigns
Campañas
Permite crear, configurar, calendarizar y supervisar envíos masivos por WhatsApp, SMS, email, llamadas de IA y automatizaciones. Incluye audiencias reutilizables y la configuración de email broadcasting.
Para que sirve
- Una clínica usa campañas de WhatsApp para recordar citas a pacientes filtrados desde su CRM y registrar el resultado de cada entrega.
- Un e-commerce segmenta compradores y les envía promociones por email, SMS o WhatsApp desde una misma operación.
- Una inmobiliaria lanza llamadas de IA a leads que no respondieron para recuperar oportunidades de visita.
- Una franquicia inicia una automatización sobre una audiencia para asignar tareas y responsables de manera masiva.
Que lo hace diferente
- Combina segmentos construidos con datos del CRM con campañas por WhatsApp, SMS, email, llamadas de IA y automatizaciones.
- Las campañas de WhatsApp usan plantillas aprobadas por Meta y variables de cada contacto.
- Puede ejecutar llamadas salientes con asistentes IA, no solo mensajes de texto.
- Una campaña puede activar una automatización para cada contacto de la audiencia.
- El email usa dominios, remitentes y supresiones compartidos con Email Broadcasting.
- Los resultados distinguen entregas procesadas y fallos, incluidos contactos que no llegaron a enviarse.
Acceso
- Ruta principal:
/[orgId]/campaigns - Como se llega:
Sidebar > Campaigns - Permiso requerido:
can_access_campaigns
Alcance tecnico
- Frontend: rutas bajo
/[orgId]/campaigns,CampaignsView,CampaignForm,SegmentsViewy formularios por canal. - Backend:
campaigns,campaign-segments,campaign-segments-split, servicios de envío por canal y serviciosemail-broadcast-*. - Superficies publicas:
/email-broadcast-unsubscribe?t=.... - Integraciones externas: Meta WhatsApp Cloud API, Telnyx, AWS SES, S3, DynamoDB, SQS y wallet de la organización.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Gestionar campañas | campaign-management.md | Lista, crea, duplica, detiene y elimina campañas. |
| Configurar campaña | campaign-configuration.md | Reúne contenido, audiencia y horario antes del envío. |
| Elegir plantilla de WhatsApp | whatsapp-campaign-content.md | Selecciona plantillas aprobadas y sus variables. |
| Elegir plantilla de email | email-campaign-content.md | Vincula plantilla visual y remitente verificado. |
| Redactar campaña SMS/MMS | sms-campaign-content.md | Define remitente, texto y adjuntos. |
| Configurar llamadas con IA | ai-calling-campaign-content.md | Selecciona número, asistente y variables dinámicas. |
| Ejecutar automatización masiva | automation-campaign-content.md | Aplica una automatización a la audiencia. |
| Seleccionar audiencia | campaign-audience-selection.md | Asigna un segmento compatible y consulta su tamaño. |
| Programar y enviar | campaign-scheduling.md | Guarda borradores, agenda o inicia una campaña. |
| Consultar resultados | campaign-delivery-results.md | Muestra estados y resultados de campañas terminadas o en proceso. |
| Gestionar segmentos | campaign-segments.md | Crea, filtra, edita y elimina audiencias por canal. |
| Diseñar filtros de segmento | segment-filter-builder.md | Combina condiciones y grupos lógicos anidados. |
| Dividir un segmento | segment-splitting.md | Parte una audiencia en segmentos más pequeños. |
| Configurar email broadcasting | email-broadcasting-settings.md | Administra dominios, remitentes, envíos, supresiones y salud. |
| Cancelar suscripción de email | email-broadcast-unsubscribe.md | Permite al destinatario bloquear futuros emails de marketing. |
Relaciones
- Depende de: Contactos, Automatizaciones, plantillas de WhatsApp, Email Builder, canales de email y Calling & SMS.
- Usado por: Analytics, conversaciones, wallet y automatizaciones.
Limitaciones y notas
- Las campañas de plan Free están limitadas a una; los planes pagados no aplican ese límite desde la interfaz.
- Solo los estados
draftyscheduledpermiten edición. - Los resultados de WhatsApp consideran tanto mensajes aceptados como destinatarios que fallan antes del envío.
id: ai-calling-campaign-content modulo: campanas app: crm nombre: Configurar campaña de llamadas con IA tipo: configuracion
Configurar campaña de llamadas con IA
Prepara llamadas salientes personalizadas para cada contacto mediante un asistente de voz.
Que se logra
- Resultado: Una audiencia seleccionada recibe llamadas salientes realizadas por un asistente de IA con el número y contexto configurados.
- Caso de uso: Una clínica dental llama a pacientes que no confirmaron su cita para resolver dudas y recuperar confirmaciones.
- Se combina con: Asistentes IA, Contactos y campañas.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Template - Componente(s):
AiCallingForm.tsx
Como funciona
- Seleccione
Voice Phone Number. - Elija
AI Assistant. - Agregue variables dinámicas o cargue las detectadas en el asistente.
- Inserte campos del contacto y valores de respaldo cuando sea necesario.
Reglas y validaciones
- Requiere número de voz y asistente.
- No se muestran asistentes con ejecución OpenAI Realtime SIP.
- Las filas de variables sin clave se ignoran al guardar.
Backend
- Servicios:
campaigns(patch),campaign-voice-outbound-trigger(create). - Efectos: activa llamadas salientes por contacto.
Relaciones
- Requiere: Calling & SMS y AI Assistant de voz.
- Dispara / afecta: llamadas y consumo asociado de la organización.
Notas
- Las variables admiten campos de contacto y un valor alternativo.
id: automation-campaign-content modulo: campanas app: crm nombre: Ejecutar automatización masiva tipo: automatizacion
Ejecutar automatización masiva
Permite aplicar una automatización existente a todos los contactos de un segmento.
Que se logra
- Resultado: Una misma automatización se ejecuta para cada contacto de la audiencia, sin tener que iniciarla uno a uno.
- Caso de uso: Una inmobiliaria asigna masivamente los leads de una feria a un flujo que crea tareas y notifica al asesor responsable.
- Se combina con: Automatizaciones, Contactos y segmentos de campaña.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Template - Componente(s):
AutomationForm.tsx
Como funciona
- Abra una campaña del canal Automation.
- Seleccione una automatización.
- Elija una audiencia y programe la ejecución.
- Guarde, programe o inicie la campaña.
Reglas y validaciones
- Una automatización seleccionada es obligatoria.
- Se aplican las reglas generales de segmentos y horario de campaña.
Backend
- Servicios:
campaigns(patch),campaign-automation-trigger(create). - Efectos: inicia ejecuciones de automatización para la audiencia.
Relaciones
- Requiere: módulo Automatizaciones y segmentos de canal Automation.
- Dispara / afecta: ejecuciones de automatización por contacto.
Notas
- La configuración de la automatización se realiza en su módulo, no en la campaña.
id: campaign-audience-selection modulo: campanas app: crm nombre: Seleccionar audiencia de campaña tipo: configuracion
Seleccionar audiencia de campaña
Asigna un segmento compatible al canal de campaña y muestra su cantidad de contactos.
Que se logra
- Resultado: La campaña queda dirigida a un grupo medible de contactos compatible con el canal elegido.
- Caso de uso: Una tienda selecciona compradores recientes para anunciar una reposición por WhatsApp sin contactar a toda su base.
- Se combina con: Segmentos de campaña, Contactos y contenido de campaña.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Audience - Componente(s):
AudienceSelector.tsx,WhatsAppCampaignMessagingLimitBanner.tsx
Como funciona
- Abra
Select Segment. - Elija un segmento del mismo canal.
- Revise la cantidad estimada.
- Para WhatsApp, divida el segmento desde el aviso si supera el límite mostrado.
Reglas y validaciones
- Si no hay segmentos del canal, debe crearse uno en
Campaigns > Segments. - Las plantillas de autenticación excluyen contactos de WhatsApp sin teléfono.
Backend
- Servicios:
campaign-segments(find),campaigns(patch).
Relaciones
- Requiere: segmentos de campaña.
- Dispara / afecta: cálculo de destinatarios de envío.
Notas
- Tras dividir un segmento WhatsApp, el selector se actualiza.
id: campaign-configuration modulo: campanas app: crm nombre: Configurar una campaña tipo: configuracion
Configurar una campaña
Reúne el contenido específico del canal, la audiencia y la programación de una campaña.
Que se logra
- Resultado: Se deja una campaña coherente y lista para revisión, con canal, contenido, audiencia y entrega definidos.
- Caso de uso: Un centro de estética prepara una invitación de SMS solo para clientes de una sede antes de programarla.
- Se combina con: Segmentos, Email Builder, plantillas de WhatsApp y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaigns > abrir campaña draft o scheduled - Componente(s):
CampaignForm.tsx
Como funciona
- Edite el nombre desde el icono de lápiz si lo necesita.
- Configure el contenido en
Template. - Elija un segmento en
Audience. - Establezca fecha, hora y zona horaria en
Schedule. - Consulte la lista
Requirements, guarde como borrador, programe o useSend Nowcuando corresponda.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Nombre | texto | Sí | Mínimo dos caracteres. |
| Contenido | según canal | Sí | Cambia para WhatsApp, email, SMS, automatización o IA. |
| Segmento | selector | Sí | Debe corresponder al canal. |
| Fecha y hora | fecha y selector | Sí para programar | No acepta fechas pasadas. |
| Zona horaria | selector con búsqueda | Sí para programar | Se guarda junto con el horario. |
Reglas y validaciones
- Solo campañas
draftyscheduledson editables. - La programación requiere contenido válido, segmento y fecha/hora.
- SMS requiere además que la configuración de SMS esté preparada.
Backend
- Servicios:
campaigns(get/patch). - Efectos: cambiar a
scheduledconserva el instante elegido;presendinginicia el flujo de envío.
Relaciones
- Requiere: contenido por canal, segmentos y configuración de canales.
- Dispara / afecta: procesamiento y resultados de campañas.
Notas
- En móvil las secciones aparecen como pestañas
Template,AudienceySchedule.
id: campaign-delivery-results modulo: campanas app: crm nombre: Consultar resultados de campaña tipo: vista
Consultar resultados de campaña
Muestra el avance y el resultado de las campañas cuyo contenido ya no es editable.
Que se logra
- Resultado: El equipo puede comprobar cuántos destinatarios recibieron, fallaron o siguen procesándose en una campaña.
- Caso de uso: Un comercio identifica los contactos que no pudieron recibir una plantilla de WhatsApp y organiza una recuperación.
- Se combina con: Conversaciones, Contactos y campañas de WhatsApp.
Donde esta
- Ruta:
/[orgId]/campaigns/whatsapp/[id],/[orgId]/campaigns/sms/[id],/[orgId]/campaigns/ai-calling/[id]o/[orgId]/campaigns/automation/[id] - Acceso en UI:
Campaigns > abrir una campaña enviada o en proceso - Componente(s): vistas de detalle por canal
Como funciona
- Abra una campaña con estado de envío o terminada.
- Consulte destinatarios, éxitos y fallos.
- En WhatsApp consulte lotes y mensajes fallidos para investigar resultados.
Reglas y validaciones
- Las campañas enviadas, en envío, por lotes o completadas no se pueden editar desde el formulario.
Backend
- Servicios:
campaigns(get),campaigns-batches-information(find/get). - Efectos: el procesamiento actualiza estados y contadores hasta completar la campaña.
Relaciones
- Requiere: campañas iniciadas.
- Dispara / afecta: auditoría de envío por canal.
Notas
- En WhatsApp, los fallos incluyen mensajes fallidos posteriormente y destinatarios inválidos que no llegaron a enviarse.
id: campaign-management modulo: campanas app: crm nombre: Gestionar campañas tipo: vista
Gestionar campañas
Centraliza las campañas de la organización por canal y permite administrar su ciclo de vida.
Que se logra
- Resultado: El negocio mantiene controlado el ciclo de vida de sus envíos masivos, desde borrador hasta finalización.
- Caso de uso: Una franquicia duplica la campaña de apertura de una sede, ajusta su audiencia y evita reconstruirla desde cero.
- Se combina con: Segmentos, programación de campañas y resultados de entrega.
Donde esta
- Ruta:
/[orgId]/campaigns,/[orgId]/campaigns/whatsapp,/[orgId]/campaigns/sms,/[orgId]/campaigns/email,/[orgId]/campaigns/ai-callingy/[orgId]/campaigns/automation - Acceso en UI:
Sidebar > Campaigns - Componente(s):
CampaignsView.tsx,AddCampaignDialog.tsx
Como funciona
- Abra el hub o una lista específica de canal.
- Use
Create Campaign; en listas de canal este se define automáticamente y en el hub se escoge antes de crear. - Abra una campaña borrador o programada para configurarla; las demás abren su vista de resultados.
- Use
Refresh, cambie paginación, duplique, elimine borradores/programadas o detenga envíos activos.
Reglas y validaciones
- El nombre exige al menos dos caracteres.
- Plan Free permite una campaña; el resto de planes no tiene este límite en esta pantalla.
- Solo se pueden eliminar campañas
draftoscheduled. - Solo se pueden detener campañas
starting_sending,sendingobatched; se solicita confirmación.
Backend
- Servicios:
campaigns(find/get/create/patch/remove). - Efectos: duplicar crea un borrador sin horario; detener cambia el estado de la campaña.
Relaciones
- Requiere: configuración de contenido, audiencia y horario.
- Dispara / afecta: ejecución por canal y métricas de campaña.
Notas
- La tabla permite ordenar por creación y cambiar el número de filas visibles.
id: campaign-scheduling modulo: campanas app: crm nombre: Programar y enviar campañas tipo: accion
Programar y enviar campañas
Guarda el avance como borrador, agenda un envío o inicia una campaña programada de inmediato.
Que se logra
- Resultado: Una campaña puede salir de inmediato o quedar preparada para ejecutarse en la fecha definida.
- Caso de uso: Un gimnasio agenda un recordatorio de renovación para la mañana anterior al vencimiento de membresías.
- Se combina con: Configuración de campaña y resultados de entrega.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Schedule - Componente(s):
CampaignForm.tsx
Como funciona
- Seleccione fecha, hora y zona horaria.
- Confirme que la lista
Requirementsesté completa. - Use
Save Draftpara persistir sin agenda. - Use
Schedule Campaigny confirme el horario. - En una campaña programada, use
Send Nowpara iniciarla inmediatamente.
Reglas y validaciones
- No admite fechas anteriores.
- La hora se ofrece en intervalos de diez minutos.
- Requiere contenido, audiencia y horario; SMS también exige configuración lista.
Backend
- Servicios:
campaigns(patch),campaign-start-sending(create). - Efectos: el inicio prepara destinatarios y delega el envío al canal.
Relaciones
- Requiere: configuración de campaña completa.
- Dispara / afecta: lotes, entregas y métricas.
Notas
- La confirmación indica fecha, hora y zona horaria seleccionadas.
id: campaign-segments modulo: campanas app: crm nombre: Gestionar segmentos de campaña tipo: vista
Gestionar segmentos de campaña
Permite crear y mantener audiencias filtrables para campañas de cada canal.
Que se logra
- Resultado: El equipo conserva audiencias reutilizables basadas en criterios del CRM para usarlas en distintos envíos.
- Caso de uso: Una agencia crea un segmento de prospectos sin respuesta para campañas periódicas de seguimiento.
- Se combina con: Contactos, selección de audiencia y filtros de segmento.
Donde esta
- Ruta:
/[orgId]/campaigns/segments - Acceso en UI:
Campaigns > Segments - Componente(s):
SegmentsView.tsx,CreateSegmentDialog.tsx
Como funciona
- Filtre el listado por canal.
- Use
Create Segment, asigne nombre y canal. - Abra el editor para definir condiciones.
- Elimine segmentos desde la fila tras confirmar.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Name | texto | Sí | Identifica la audiencia. |
| Channel | selector | Sí | WhatsApp, SMS, AI Calling o Automation. |
Reglas y validaciones
- Los segmentos SMS incluyen contactos con teléfono y código de país válidos y excluyen opt-outs.
- La pantalla lista también segmentos de email existentes, aunque la creación disponible no ofrece ese canal.
Backend
- Servicios:
campaign-segments(find/create/patch/remove).
Relaciones
- Requiere: Contactos y datos disponibles para los filtros.
- Dispara / afecta: selección de audiencia en campañas.
Notas
- El listado admite paginación de 10 a 50 filas.
id: email-broadcast-unsubscribe modulo: campanas app: crm nombre: Cancelar suscripción de email tipo: publico
Cancelar suscripción de email
Permite a un destinatario dejar de recibir emails de marketing de un remitente y organización.
Que se logra
- Resultado: El destinatario puede bloquear futuros correos de marketing y el sistema registra esa preferencia.
- Caso de uso: Una marca de e-commerce respeta la baja solicitada desde un newsletter sin intervención manual del equipo.
- Se combina con: Email Broadcasting y campañas de email.
Donde esta
- Ruta:
/email-broadcast-unsubscribe?t=... - Acceso en UI: enlace de cancelación incluido en el email.
- Componente(s):
EmailBroadcastUnsubscribeClient.tsx
Como funciona
- El destinatario abre el enlace con su token.
- La página procesa la solicitud automáticamente.
- Muestra confirmación, estado de ya cancelado, enlace inválido o error.
Reglas y validaciones
- Sin token, el enlace se considera inválido.
- Si la dirección ya está suprimida, el resultado informa que ya estaba cancelada.
Backend
- Servicios:
email-broadcast-unsubscribe(create),email-broadcast-suppressions(create). - Efectos: agrega la dirección a la lista de supresiones de marketing.
Relaciones
- Requiere: un email de broadcasting con enlace de cancelación.
- Dispara / afecta: futuros envíos de campañas email.
Notas
- La página no exige iniciar sesión.
id: email-broadcasting-settings modulo: campanas app: crm nombre: Configurar Email Broadcasting tipo: configuracion
Configurar Email Broadcasting
Administra la capacidad de envío masivo de email mediante AWS SES.
Que se logra
- Resultado: La organización deja listos sus dominios, remitentes y reglas de supresión para enviar email comercial.
- Caso de uso: Una academia configura su dominio institucional y un remitente de admisiones antes de lanzar una campaña.
- Se combina con: Campañas de email, Email Builder y lista de supresión.
Donde esta
- Ruta:
/[orgId]/settings/email-channel - Acceso en UI:
Settings > Channels > Email Broadcasting - Componente(s):
EmailChannel.tsx,EmailChannelSetup.tsx,EmailChannelDomains.tsx,EmailChannelSenders.tsx,EmailBroadcastSendsHistory.tsx,EmailBroadcastSuppressionsPanel.tsx,EmailChannelHealth.tsx
Como funciona
- Active el canal desde el estado vacío.
- Añada un dominio y complete sus registros DNS; use
Load DNS / Verifypara comprobarlo. - Cree remitentes verificados en
Senders. - Consulte
Sends,Suppressionsy el estado de entregabilidad.
Reglas y validaciones
- Una campaña solo puede escoger remitentes verificados de un canal activo.
- Un dominio que falla después de DNS correcto puede requerir reiniciar la comprobación.
Backend
- Servicios:
email-blacklist-configurations,email-broadcast-sends,email-broadcast-suppressions. - Efectos: los envíos exitosos se cargan al wallet; fallidos o suprimidos no.
Relaciones
- Requiere: AWS SES y configuración DNS.
- Dispara / afecta: campañas de email y la cancelación de suscripción.
Notas
- El costo publicado es $0.80 por 1.000 envíos exitosos; el archivado opcional suma $0.05 por 1.000.
id: email-campaign-content modulo: campanas app: crm nombre: Configurar contenido de campaña de email tipo: configuracion
Configurar contenido de campaña de email
Asocia una plantilla de Email Builder y un remitente verificado a una campaña de email.
Que se logra
- Resultado: La campaña usa una plantilla visual y un remitente verificado para entregar un email preparado para producción.
- Caso de uso: Una tienda de ropa selecciona una plantilla de lanzamiento y su remitente de marketing para avisar una colección.
- Se combina con: Constructor de emails, Email Broadcasting y segmentos.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Template - Componente(s):
EmailForm.tsx
Como funciona
- Seleccione o busque una plantilla.
- Elija un canal de email activo y una dirección remitente verificada.
- Revise asunto, texto de previsualización y la vista MJML.
- Use
Edit Templatepara modificar el diseño.
Reglas y validaciones
- Requiere plantilla, canal de email y remitente antes de guardar o programar.
- Solo se ofrecen identidades verificadas del canal seleccionado.
Backend
- Servicios:
campaigns(patch),email-broadcast-sends(create). - Efectos: los envíos exitosos se cargan al wallet; las supresiones no se envían.
Relaciones
- Requiere: Email Builder, Email Broadcasting y segmento de email.
- Dispara / afecta: historial de envíos y lista de supresiones.
Notas
- El diseño se edita fuera de la configuración de campaña.
id: segment-filter-builder modulo: campanas app: crm nombre: Diseñar filtros de segmento tipo: configuracion
Diseñar filtros de segmento
Construye la lógica de selección de contactos con condiciones y grupos anidados.
Que se logra
- Resultado: Se obtiene una audiencia precisa al combinar condiciones de contactos y reglas lógicas.
- Caso de uso: Una concesionaria filtra contactos de una ciudad que pidieron cotización pero aún no tienen un deal ganado.
- Se combina con: Contactos, Deals, Quotes y segmentos de campaña.
Donde esta
- Ruta:
/[orgId]/campaigns/segments/[segmentId] - Acceso en UI:
Campaigns > Segments > editar segmento - Componente(s):
SegmentBuilder.tsx,SegmentPreview.tsx
Como funciona
- Agregue una condición y seleccione campo, operador y valor.
- Elija
Match ALLoMatch ANY. - Agregue grupos para lógica independiente, hasta tres niveles.
- Revise la vista previa de contactos y espere el guardado automático.
Reglas y validaciones
- Operadores y tipo de valor dependen del campo seleccionado.
- El nombre se guarda al salir del campo si no está vacío.
- La previsualización JSON/SQL solo está disponible para admin y superadmin.
Backend
- Servicios:
contacts-segments-schema-builder(create),campaign-segments(get/patch). - Efectos: guarda la consulta y prepara la audiencia que utilizarán las campañas.
Relaciones
- Requiere: Contactos, compañías y deals disponibles para los filtros.
- Dispara / afecta: tamaño y composición de segmentos.
Notas
- Los cambios se guardan con una espera de un segundo.
- En propiedades de la conversación se puede filtrar por último mensaje recibido (cuando el contacto escribió), último mensaje enviado, fecha de última interacción y fecha de creación de la conversación.
- "Último mensaje recibido" anterior a una fecha incluye a quienes nunca escribieron. Si el contacto escribió de nuevo después, esa fecha pasa a ser la más reciente y ya no representa un mes calendario completo.
id: segment-splitting modulo: campanas app: crm nombre: Dividir un segmento tipo: accion
Dividir un segmento
Crea segmentos más pequeños a partir de una audiencia ya definida.
Que se logra
- Resultado: Una audiencia grande se distribuye en grupos más pequeños para ejecutar envíos escalonados o pruebas.
- Caso de uso: Una tienda divide sus suscriptores en grupos para dosificar una promoción por WhatsApp.
- Se combina con: Segmentos de campaña y programación de campañas.
Donde esta
- Ruta:
/[orgId]/campaigns/segments/[segmentId] - Acceso en UI:
Segment editor > Split - Componente(s):
SplitSegmentDialog.tsx
Como funciona
- Guarde condiciones válidas en el segmento.
- Abra
Split. - Indique la cantidad de contactos por segmento.
- Confirme y use los nuevos segmentos en una campaña.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Contacts per segment | número entero | Sí | Debe ser mayor que cero; el valor inicial es 2.000. |
Reglas y validaciones
- Solo se habilita cuando el segmento guardado tiene al menos una condición.
- El número debe ser entero positivo.
Backend
- Servicios:
campaign-segments-split(create). - Efectos: devuelve las audiencias creadas y su conteo.
Relaciones
- Requiere: un segmento configurado.
- Dispara / afecta: selección de audiencia, especialmente en campañas WhatsApp.
Notas
- El segmento original permanece disponible.
id: sms-campaign-content modulo: campanas app: crm nombre: Redactar campaña SMS o MMS tipo: configuracion
Redactar campaña SMS o MMS
Define el mensaje, número remitente y adjuntos opcionales para una campaña SMS.
Que se logra
- Resultado: El negocio define el mensaje y, cuando corresponde, el recurso multimedia que llegará por SMS o MMS.
- Caso de uso: Un taller automotriz envía un SMS de mantenimiento a clientes con vehículos próximos a revisión.
- Se combina con: Contactos, segmentos y Calling & SMS.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Template - Componente(s):
SmsForm.tsx
Como funciona
- Seleccione un número remitente activo.
- Redacte el mensaje y revise caracteres, codificación y segmentos.
- Opcionalmente agregue archivos para convertirlo en MMS.
- Consulte la previsualización antes de guardar.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Sender Phone Number | selector | Sí | Número activo de la organización. |
| Message | texto largo | Sí, salvo con adjunto | Muestra codificación y segmentos. |
| Media Attachments | archivo | No | Admite imágenes, video y documentos. |
Reglas y validaciones
- Requiere un remitente y texto o medios.
- Debe existir configuración SMS con remitente alfanumérico.
- Mensajes extensos se facturan por segmentos.
Backend
- Servicios:
campaigns(patch),campaign-sms-send-message(create). - Efectos: entrega mediante Telnyx.
Relaciones
- Requiere:
Settings > Calling & SMS > SMSy segmento SMS. - Dispara / afecta: wallet y conversaciones de respuesta.
Notas
- La interfaz distingue GSM-7 de UCS-2 para el conteo.
id: whatsapp-campaign-content modulo: campanas app: crm nombre: Configurar contenido de campaña de WhatsApp tipo: configuracion
Configurar contenido de campaña de WhatsApp
Permite elegir una plantilla de WhatsApp aprobada y revisar su contenido antes de una campaña.
Que se logra
- Resultado: Se prepara un envío masivo con una plantilla de WhatsApp aprobada por Meta y variables de cada contacto.
- Caso de uso: Una clínica envía recordatorios de cita por WhatsApp a pacientes elegibles con fecha y hora personalizadas.
- Se combina con: Plantillas de WhatsApp, Contactos, segmentos y Conversaciones.
Donde esta
- Ruta:
/[orgId]/campaigns/configuration/[campaignID] - Acceso en UI:
Campaign configuration > Template - Componente(s):
WhatsAppForm.tsx,WhatsAppTemplatePreview.tsx
Como funciona
- Busque o recargue plantillas.
- Seleccione una plantilla aprobada disponible para campañas.
- Revise la previsualización y las variables detectadas.
- Use
Newsi debe crear una plantilla.
Reglas y validaciones
- Solo aparecen plantillas
APPROVEDdisponibles para campañas. - Las plantillas
AUTHENTICATIONexcluyen destinatarios sin teléfono. - Las variables requieren datos disponibles al momento de enviar.
Backend
- Servicios:
campaigns(patch),campaign-whatsapp-send-message(create). - Efectos: el envío crea o localiza la conversación y solo registra el mensaje si Meta lo acepta.
Relaciones
- Requiere: plantillas de WhatsApp y un segmento WhatsApp.
- Dispara / afecta: Meta WhatsApp Cloud API y resultados por lote.
Notas
- Los contactos identificados solo por usuario de WhatsApp pueden recibir plantillas de marketing o utilidad.
id: canales-mensajeria app: crm nombre: Canales de mensajería estado: shipped permiso: can_access_crm
Canales de mensajería
Conecta, supervisa y configura los canales que alimentan el inbox omnicanal.
Para que sirve
- Un restaurante conecta WhatsApp, Instagram y Messenger para atender reservas desde
Conversations. - Una tienda en línea instala Webchat en su sitio y convierte consultas web en conversaciones del CRM.
- Una agencia conecta Gmail u Outlook para que los correos de clientes queden junto con el resto de su atención.
- Un e-commerce verifica su dominio y configura AWS SES antes de enviar campañas por email.
Que lo hace diferente
- Los canales no quedan aislados: todos alimentan el inbox omnicanal y el contacto compartido con el CRM.
- WhatsApp incluye diagnóstico de permisos, plantillas para revisión de Meta y sincronización inicial de contactos e historial cuando el tipo de conexión lo permite.
- Webchat entrega conversaciones al mismo flujo que los canales Meta y puede permitir adjuntos bajo configuración de la organización.
- Email combina buzones operativos Gmail/Outlook con un canal de difusión AWS SES, dominios DKIM y reglas de filtrado.
Acceso
- Ruta principal:
/[orgId]/settings/channel-whatsapp - Como se llega:
Avatar menu > Settings > Channels - Permiso requerido:
can_access_crm; algunos controles son de admin o superadmin.
Alcance tecnico
- Frontend: rutas de canales WhatsApp, Instagram, Messenger, TikTok, Webchat, inbox y email
- Backend:
whatsapp-channels,instagram-channels,messenger-channels,webchat-widget-settings,inbox-channels,email-channels - Superficies publicas: widget Webchat instalado en sitios externos
- Integraciones externas: Meta, Google, Microsoft y AWS SES
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Canal WhatsApp | whatsapp-channel.md | Conexión y gestión Meta. |
| Diagnóstico WhatsApp | whatsapp-health-check.md | Salud y permisos. |
| Plantillas WhatsApp | whatsapp-templates.md | Creación para revisión. |
| Sincronización SMB | whatsapp-smb-sync.md | Contactos e historial. |
| Instagram y Messenger | meta-messaging-channels.md | Canales Meta. |
| Webchat | webchat-channel.md | Widget y clave. |
| Buzones Gmail y Outlook | inbox-email-channels.md | OAuth, firma y reconexión. |
| Filtros de correo | email-filtering-rules.md | Listas y spam. |
| Difusión por email | email-broadcast-channel.md | Canal AWS SES. |
| Dominios de envío | email-sending-domains.md | DKIM y verificación. |
| Mantenimiento de conversaciones | channel-conversation-maintenance.md | Ocultar o restaurar. |
Relaciones
- Depende de: Organización, Contactos y proveedores externos.
- Usado por: Conversaciones, Campañas y Automatizaciones.
Limitaciones y notas
- TikTok tiene una ruta de demostración, pero no se confirmó flujo de conexión equivalente.
id: channel-conversation-maintenance modulo: canales-mensajeria app: crm nombre: Mantenimiento de conversaciones por canal tipo: accion
Mantenimiento de conversaciones por canal
Permite ocultar conversaciones del canal actual y restaurar las ocultadas recientemente.
Que se logra
- Resultado: administradores limpian la vista operativa de un canal sin borrar los mensajes y pueden revertir la decisión dentro del plazo disponible.
- Caso de uso: una agencia oculta conversaciones antiguas de un canal de Instagram tras una migración y restaura una si un cliente vuelve a escribir.
- Se combina con: Conversaciones y Conectar y administrar WhatsApp.
Donde esta
- Ruta:
/[orgId]/settings/channel-whatsapp,/[orgId]/settings/channel-instagram,/[orgId]/settings/channel-messengery/[orgId]/settings/channel-webchat - Acceso en UI:
Channel settings > Conversation maintenance - Componente(s):
ChannelConversationMaintenance.tsx,HiddenChannelConversations.tsx
Como funciona
- Abrir la configuración de un canal conectado.
- Elegir
Hide all conversationsoReview hidden conversations. - Revisar la tabla y confirmar
Restore hidden conversations.
Reglas y validaciones
- Solo admin y superadmin pueden usarla.
- Restauración incluye únicamente conversaciones ocultadas durante los últimos 10 días y del canal actual.
Backend
- Servicios:
conversations-channel-maintenance(método: create),conversations(método: find)
Relaciones
- Requiere: canal conectado.
- Dispara / afecta: visibilidad de Conversaciones.
Notas
- Ocultar no elimina los mensajes.
id: email-broadcast-channel modulo: canales-mensajeria app: crm nombre: Configurar canal de difusión por email tipo: configuracion
Configurar canal de difusión por email
Administra el canal AWS SES de envío masivo, archivado de mensajes y dominios de salida.
Que se logra
- Resultado: la organización dispone de un canal controlado para enviar emails masivos y conservar los enviados como referencia en el inbox.
- Caso de uso: un e-commerce activa el archivado para que soporte pueda consultar la campaña que recibió un comprador antes de responderle.
- Se combina con: Verificar dominios de envío, Campañas y Conversaciones.
Donde esta
- Ruta:
/[orgId]/settings/email-channel - Acceso en UI:
Avatar menu > Settings > Channels > Email Broadcasting - Componente(s):
EmailChannel.tsx,EmailChannelHealth.tsx
Como funciona
- Crear o completar la configuración del canal.
- Activar o desactivar
Message Archiving. - Consultar cuotas de envío.
- Como superadmin, pausar o reanudar el envío.
Reglas y validaciones
- La configuración de SES y el estado global de envío son exclusivos de superadmin.
Backend
- Servicios:
email-channels,email-channel-identities(método: find/create/patch) - Efectos: AWS SES gestiona el envío y verificación.
Relaciones
- Requiere: AWS SES y dominios de envío.
- Dispara / afecta: Campañas y referencia de correo en el inbox.
Notas
- El archivado guarda el contenido enviado para consulta en conversaciones.
id: email-filtering-rules modulo: canales-mensajeria app: crm nombre: Reglas de filtrado de correo tipo: configuracion
Reglas de filtrado de correo
Configura listas permitidas, bloqueadas y palabras clave de spam para los buzones conectados.
Que se logra
- Resultado: los buzones conectados aplican criterios de confianza y spam antes de que el correo llegue a la operación del inbox.
- Caso de uso: una agencia bloquea dominios de spam conocidos y permite los dominios de sus clientes para reducir revisiones manuales.
- Se combina con: Conectar buzones Gmail y Outlook y Conversaciones.
Donde esta
- Ruta:
/[orgId]/settings/inbox-channels - Acceso en UI:
Inbox Channels > Email Filtering Rules - Componente(s):
page.tsx
Como funciona
- Elegir pestaña
WhitelistoBlacklist. - Elegir
Add Rulee indicar correo o dominio. - Añadir palabras desde
Spam Keywords. - Eliminar una regla o usar
Remove all.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Rule Type | selección | Sí | Correo o dominio permitido/bloqueado. |
| Match Type | selección | No | Coincidencia exacta o por usuario para correos. |
| Value | texto | Sí | Correo, dominio o palabra. |
Reglas y validaciones
- No se pueden combinar reglas organizacionales de lista permitida y bloqueada.
- No admite valores vacíos, formatos inválidos ni valores duplicados.
- Las reglas de sistema son solo lectura.
Backend
- Servicios:
email-blacklist-configurations(método: find/create/remove)
Relaciones
- Requiere: buzones de correo conectados.
- Dispara / afecta: filtrado de correo entrante.
Notas
- Las palabras de spam se administran por separado.
id: email-sending-domains modulo: canales-mensajeria app: crm nombre: Verificar dominios de envío tipo: configuracion
Verificar dominios de envío
Agrega dominios a AWS SES, presenta los registros DKIM y verifica su propagación.
Que se logra
- Resultado: el dominio propio queda verificado para el envío de email a través del canal de difusión.
- Caso de uso: una academia valida su dominio institucional antes de enviar comunicaciones de matrícula desde una dirección reconocible.
- Se combina con: Configurar canal de difusión por email y Campañas.
Donde esta
- Ruta:
/[orgId]/settings/email-channel - Acceso en UI:
Email Broadcasting > Sending Domains - Componente(s):
EmailChannel.tsx
Como funciona
- Escribir un dominio y elegir
Add Domain. - Copiar los tres registros DKIM al proveedor DNS.
- Elegir
Load DNS / Verifyhasta completar la verificación. - Eliminar el dominio cuando no se requiera.
Reglas y validaciones
- Solo se aceptan dominios públicos; no URLs, correos, IP ni localhost.
- Si AWS terminó el intento,
Load DNS / Verifyreinicia la comprobación sin regenerar los registros.
Backend
- Servicios:
email-channel-identities(método: find/create/patch/remove)
Relaciones
- Requiere: Canal de difusión por email y DNS del dominio.
- Dispara / afecta: capacidad de envío de campañas.
Notas
- La propagación DNS puede tomar hasta 72 horas.
id: inbox-email-channels modulo: canales-mensajeria app: crm nombre: Conectar buzones Gmail y Outlook tipo: integracion
Conectar buzones Gmail y Outlook
Conecta cuentas Gmail u Outlook para enviar y recibir correos dentro del inbox CRM.
Que se logra
- Resultado: los correos de una cuenta operativa aparecen en el inbox y se responden con el contexto del contacto CRM.
- Caso de uso: un despacho legal conecta Outlook para que las comunicaciones por email queden junto a los mensajes del mismo cliente.
- Se combina con: Conversaciones, Contactos y Reglas de filtrado de correo.
Donde esta
- Ruta:
/[orgId]/settings/inbox-channels - Acceso en UI:
Avatar menu > Settings > Inbox Channels - Componente(s):
page.tsx,DeleteInboxChannelDialog.tsx
Como funciona
- Elegir
Connect GmailoConnect Outlook. - Completar autorización en la ventana OAuth.
- Consultar estado, editar firma, reconectar o eliminar el buzón.
- En Gmail, usar
Refresh Tokensi hace falta renovar la conexión.
Reglas y validaciones
- Solo puede conectarse un canal de cada proveedor según los controles de la página.
Backend
- Servicios:
inbox-channels,gmail-inbox-token-refresh,crm-emails(método: find/create/patch/remove)
Relaciones
- Requiere: cuenta Gmail u Outlook.
- Dispara / afecta: Conversaciones y correos CRM.
Notas
- Los estados visibles incluyen pendiente, activo, inactivo y error.
id: meta-messaging-channels modulo: canales-mensajeria app: crm nombre: Conectar Instagram y Messenger tipo: integracion
Conectar Instagram y Messenger
Conecta los canales de mensajería Meta para recibir y responder conversaciones desde el inbox.
Que se logra
- Resultado: los mensajes privados de Instagram o Messenger pasan a la misma operación de atención y CRM que los demás canales.
- Caso de uso: una marca de moda responde desde un solo inbox a consultas que llegan por Instagram y Facebook sin duplicar contactos.
- Se combina con: Conversaciones, Contactos y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/settings/channel-instagramy/[orgId]/settings/channel-messenger - Acceso en UI:
Avatar menu > Settings > Channels > InstagramoMessenger - Componente(s):
InstagramChannel.tsx,MessengerChannel.tsx
Como funciona
- Abrir el canal deseado.
- Autorizar Meta y seleccionar la cuenta o página disponible.
- Revisar estado y actualizar, reconectar o desconectar según corresponda.
Reglas y validaciones
- Messenger muestra un solo canal por organización; se debe desconectar antes de cambiar de página.
- Las páginas sin token de acceso no aparecen en el selector de Messenger.
Backend
- Servicios:
instagram-channels,messenger-channels(método: find/create/patch/remove) - Hooks relevantes: conexión y cancelación de suscripciones de webhooks.
Relaciones
- Requiere: acceso administrativo a recursos Meta.
- Dispara / afecta: Conversaciones.
Notas
- Los mensajes de Messenger están sujetos a las reglas de mensajería de Meta.
id: webchat-channel modulo: canales-mensajeria app: crm nombre: Configurar Webchat tipo: configuracion
Configurar Webchat
Habilita el widget web, genera su clave de integración y permite personalizarlo.
Que se logra
- Resultado: las consultas de visitantes del sitio se convierten en conversaciones webchat dentro del inbox de la organización.
- Caso de uso: una academia instala el widget en su página de cursos para que admisiones atienda a los interesados desde
Conversations. - Se combina con: Conversaciones, Enviar adjuntos y Asistentes de IA.
Donde esta
- Ruta:
/[orgId]/settings/channel-webchat - Acceso en UI:
Avatar menu > Settings > Channels > Webchat - Componente(s):
WebchatChannel.tsx
Como funciona
- Activar
Enable Webchat. - Copiar la
API Keyy el script de integración. - Personalizar el widget y decidir si permite adjuntos.
- Instalar el script antes de
</body>del sitio. - Regenerar la clave si se compromete.
Reglas y validaciones
- La primera activación crea una clave; desactivar no la borra.
- La clave queda expuesta en JavaScript del cliente y debe restringirse a dominios autorizados.
Backend
- Servicios:
webchat-widget-settings(método: find/create/patch)
Relaciones
- Requiere: sitio web donde insertar el script.
- Dispara / afecta: Conversaciones de canal webchat.
Notas
- Visitantes pueden adjuntar imágenes y documentos si se habilita la opción.
id: whatsapp-channel modulo: canales-mensajeria app: crm nombre: Conectar y administrar WhatsApp tipo: integracion
Conectar y administrar WhatsApp
Conecta uno o varios números de WhatsApp Business y administra su estado, métricas y reconexión.
Que se logra
- Resultado: cada número empresarial queda disponible para recibir y enviar mensajes desde
Conversations, con visibilidad de su estado operativo. - Caso de uso: un restaurante conecta su WhatsApp Business para que reservas y pedidos entren al inbox donde trabaja todo el equipo.
- Caso de uso: una empresa conecta un número de Ventas y otro de Soporte en la misma organización; cada conversación muestra por qué número llegó y las respuestas salen por ese mismo número.
- Se combina con: Conversaciones, Plantillas de WhatsApp y Diagnóstico de canal WhatsApp.
Donde esta
- Ruta:
/[orgId]/settings/channel-whatsapp(?channelId=<id>abre un número concreto) - Acceso en UI:
Avatar menu > Settings > Channels > WhatsApp - Componente(s):
WhatsAppChannel.tsx,WhatsAppNumbersBar.tsx,EditWhatsAppChannelDialog.tsx
Como funciona
- Elegir
Connect WhatsApp(oConectar otro númerosi ya hay uno) y completar el registro integrado de Meta. - La lista
Números de WhatsApp conectadosmuestra todos los números; se puede poner un nombre interno a cada uno y elegir el número predeterminado. - Seleccionar un número para revisar estado, calidad, posibilidad de envío y plantillas en
General. - Usar actualizar, reconectar o eliminar desde la barra del número seleccionado.
Reglas y validaciones
- Cada conversación queda ligada a un número. Un mismo contacto tiene una conversación separada por cada número con el que habla.
- Las respuestas, la IA y las automatizaciones sobre una conversación siempre salen por el número de esa conversación.
- El número predeterminado se usa cuando un flujo nuevo no elige número (iniciar conversación, campañas, nodos de automatización, herramienta de IA). Solo hay uno por organización; si se elimina, otro número pasa a ser el predeterminado.
- Las plantillas pertenecen a la cuenta de WhatsApp Business (WABA) del número: solo se pueden enviar desde números de esa misma WABA.
- Eliminar un número oculta solo sus conversaciones; los demás números siguen funcionando.
- La reconexión vuelve a solicitar permisos de Meta.
Backend
- Servicios:
whatsapp-channels,whatsapp-channel-health-status(método: find/create/patch/remove/get) - Campos por número:
label(nombre interno),is_default(número predeterminado). - Efectos: registra el número para conversaciones entrantes y salientes;
conversations.whatsapp_channel_idindica el número de cada conversación.
Relaciones
- Requiere: cuenta Meta/WhatsApp Business.
- Dispara / afecta: Conversaciones, plantillas WhatsApp, campañas (
Enviar desde el número), reglas de autoasignación (condiciónNúmero de WhatsApp) y disparadores de automatización.
Notas
- Los canales de onboarding de aplicación de negocio habilitan la pestaña
SMB Sync. - En el inbox, el filtro de canal permite elegir un número concreto y cada conversación muestra
via <número>cuando la organización tiene más de uno.
id: whatsapp-health-check modulo: canales-mensajeria app: crm nombre: Diagnóstico de canal WhatsApp tipo: vista
Diagnóstico de canal WhatsApp
Ejecuta un diagnóstico de mensajería, cuenta, plantillas y configuración técnica del canal.
Que se logra
- Resultado: se identifica si un problema para enviar proviene de mensajería, cuenta, plantillas o permisos antes de escalarlo.
- Caso de uso: una clínica detecta que su canal dejó de responder porque el token de Meta venció y vuelve a conectarlo.
- Se combina con: Conectar y administrar WhatsApp y Plantillas de WhatsApp.
Donde esta
- Ruta:
/[orgId]/settings/channel-whatsapp - Acceso en UI:
WhatsApp > icono de actividad - Componente(s):
HealthStatusDialog.tsx
Como funciona
- Abrir el diálogo de salud desde un canal conectado.
- Revisar
Messaging,Account,TemplatesyTechnical. - Elegir
Run Health Check Againdespués de corregir un problema.
Reglas y validaciones
- Abrir el diálogo inicia la comprobación.
Backend
- Servicios:
whatsapp-channel-health-status(método: get)
Relaciones
- Requiere: Canal WhatsApp conectado.
- Dispara / afecta: diagnóstico para reconexión y configuración Meta.
Notas
- Puede señalar permisos, vencimiento de token y capacidad real de enviar.
id: whatsapp-smb-sync modulo: canales-mensajeria app: crm nombre: Sincronizar contactos e historial de WhatsApp tipo: accion
Sincronizar contactos e historial de WhatsApp
Importa contactos o historial durante la ventana de onboarding de una cuenta WhatsApp Business App.
Que se logra
- Resultado: contactos y conversaciones previas de una cuenta elegible se incorporan al CRM durante su incorporación inicial.
- Caso de uso: una agencia migra el WhatsApp Business de un cliente y conserva los interlocutores y el historial reciente para que el equipo continúe atendiendo.
- Se combina con: Conectar y administrar WhatsApp, Contactos y Conversaciones.
Donde esta
- Ruta:
/[orgId]/settings/channel-whatsapp - Acceso en UI:
WhatsApp > SMB Sync - Componente(s):
WhatsAppChannel.tsx
Como funciona
- Abrir la pestaña
SMB Syncen un canal compatible. - Elegir la sincronización de contactos o historial.
- Iniciar la sincronización y esperar su finalización.
Reglas y validaciones
- Se bloquea cuando hay autoasignación por IA activa, otra sincronización en curso o venció la ventana de onboarding de 24 horas.
Backend
- Servicios:
whatsapp-channels(método: patch)
Relaciones
- Requiere: canal con onboarding de aplicación de negocio.
- Dispara / afecta: Contactos y Conversaciones.
Notas
- No aparece para todos los tipos de conexión WhatsApp.
id: whatsapp-templates modulo: canales-mensajeria app: crm nombre: Crear plantillas de WhatsApp tipo: configuracion
Crear plantillas de WhatsApp
Crea plantillas para revisión de Meta con encabezado, contenido, variables y previsualización.
Que se logra
- Resultado: la organización prepara mensajes aprobables por Meta para iniciar o retomar conversaciones de WhatsApp con contenido consistente.
- Caso de uso: un e-commerce crea una plantilla con variables para notificar envío y la usa después desde la conversación del comprador.
- Se combina con: Conectar y administrar WhatsApp y Enviar plantillas de WhatsApp.
Donde esta
- Ruta:
/[orgId]/settings/channel-whatsapp-templates-creation - Acceso en UI:
Settings > Channels > WhatsApp templates - Componente(s):
WhatsAppChannelTemplatesCreation.tsx
Como funciona
- Definir nombre, categoría e idioma.
- Configurar encabezado opcional, cuerpo, pie y ejemplos de variables.
- Revisar la vista previa y elegir
Submit for Review.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Template Name | texto | Sí | Se prepara para Meta. |
| Category | selección | Sí | Marketing, utilidad o autenticación. |
| Language | selección | Sí | Idioma de la plantilla. |
| Header | selección | No | Texto, imagen, video o documento. |
| Message | área de texto | Sí | Admite variables. |
Reglas y validaciones
- Cada variable detectada necesita un ejemplo; el encabezado de texto permite máximo una variable.
Backend
- Servicios:
whatsapp-channels,whatsapp-templates(método: find/create)
Relaciones
- Requiere: Canal WhatsApp activo.
- Dispara / afecta: Enviar plantillas desde Conversaciones.
Notas
- Por confirmar: el comportamiento de edición posterior de plantillas revisado no está expuesto en esta pantalla.
id: catalogos-publicos app: crm nombre: Catálogos públicos estado: shipped permiso: can_access_settings
Catálogos públicos
Páginas públicas de productos configurables y compartibles por cada organización. Con el checkout activo, el catálogo funciona como tienda online (ecommerce): carrito, Add to cart / Buy now, pago con las pasarelas de la organización (Stripe o Wompi) o pagar después, envío o recogida, multi-moneda y pedidos que llegan a Finance > Orders.
Para que sirve
- Una tienda vende online desde el catálogo: el cliente agrega productos al carrito, elige envío o recogida y paga con tarjeta (Stripe o Wompi) sin iniciar sesión.
- Una tienda comparte una página pública con sus productos para que clientes consulten referencias sin iniciar sesión.
- Un restaurante publica solo categorías seleccionadas y dirige a los visitantes hacia WhatsApp para hacer consultas.
- Una marca inserta un catálogo en una landing mediante iframe y conserva el inventario administrado en Apex.
- Un distribuidor prepara catálogos diferentes para líneas o audiencias específicas sin duplicar los productos.
- Un negocio controla qué productos, precios, medios y filtros ve el visitante desde un editor interno.
Que lo hace diferente
- Cada catálogo público se alimenta directamente de Productos, categorías y media de Apex, sin exportar ni sincronizar inventario a otra herramienta.
- Un enlace puede limitarse a todos los productos, categorías concretas o una selección específica, y ordenar las categorías visibles de forma independiente.
- El visitante puede abrir el detalle, explorar media, buscar y, si el catálogo lo habilita y existe canal configurado, iniciar contacto por WhatsApp.
- Los mismos enlaces de catálogo se pueden enviar desde el composer de Conversaciones usando los modos de envío de productos.
- El checkout cobra con las pasarelas propias de la organización (formulario embebido o redirección), en varias monedas con precios fijos o convertidos, con inventario opcional, pedido mínimo y recuperación de checkouts abandonados; cada compra crea un pedido, un contacto y puede generar la factura al pagarse.
- El editor configura contenido, layouts y tema, mientras
embed=truepermite integrar el catálogo sin encabezado ni pie de página.
Acceso
- Ruta principal:
/[orgId]/settings/products/catalog-links - Como se llega:
Settings > Products > Catalog Links - Permiso requerido:
can_access_settings
Alcance tecnico
- Frontend: editor
CatalogLinkEditorPage, listadoCatalogLinksManagementy ruta pública/c/[orgId]/[slug]. - Backend:
catalog-links,public-catalog,public-catalog-checkoutyorders. - Superficies publicas: catálogo, categoría y producto sin inicio de sesión; checkout
/c/[orgId]/[slug]/checkouty página del pedido/o/[path].
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Gestionar enlaces | catalog-link-management.md | Crea, activa, comparte, edita y elimina catálogos. |
| Configurar catálogo | catalog-link-editor.md | Define selección, marca, contenido, layout y tema. |
| Seleccionar productos | catalog-product-selection.md | Limita el catálogo a todo, categorías o productos. |
| Personalizar presentación | catalog-display-and-theme.md | Configura layout, visibilidad y colores. |
| Explorar catálogo público | public-catalog-browsing.md | Permite buscar, filtrar, abrir y compartir productos. |
| Checkout y pagos | catalog-checkout.md | Carrito, multi-moneda, envío o recogida y pago online con Stripe o Wompi que crea pedidos. |
Relaciones
- Depende de: Productos, categorías y canal de WhatsApp opcional; Payment Gateways para pago online.
- Usado por: clientes externos, enlaces compartidos y Pedidos (checkout).
Limitaciones y notas
- Un enlace inactivo no está disponible para visitantes.
- La búsqueda semántica puede configurarse, pero su disponibilidad efectiva depende de la configuración del catálogo.
id: catalog-checkout modulo: catalogos-publicos app: crm nombre: Checkout y pagos del catálogo tipo: configuracion
Checkout y pagos del catálogo
Convierte un catálogo público en tienda: carrito, checkout con datos del comprador, envío o recogida, multi-moneda y pago online con las pasarelas propias de la organización.
Que se logra
- Resultado: el visitante agrega productos, paga con Stripe o Wompi (o elige pagar después) y el pedido aparece en
Finance > Orders. - Caso de uso: una tienda de accesorios en Colombia vende en COP con Wompi y en USD con Stripe desde el mismo catálogo, con envío nacional y recogida en tienda.
- Se combina con: Pedidos, Payment Gateways, Productos (precios por moneda e inventario) y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/settings/products/catalog-links/[catalogLinkId](editor) y/c/[orgId]/[slug]/checkout(público) - Acceso en UI: editor del catálogo > pestaña
Checkout; en la configuración de CTA de producto activarAdd to carty/oBuy now
Como funciona
- En la pestaña
CheckoutactivaEnable checkout. - En
Currencieselige las monedas que el comprador puede usar, la moneda por defecto yConverted price rounding. - En
PaymentsactivaAccept online payments, elige pasarelas yPayment experience(Embedded card formoRedirect to the gateway page); opcionalmenteAllow pay latercon instrucciones. - En
Buyer contactdefine si se exige correo, teléfono, cualquiera o ambos. - En
Deliveryagrega métodos de envío (precio yFree over), países permitidos y puntos de recogida. - En
Orderselige numeración, propietario, monto mínimo, miembros a notificar, tiempo para abandono yCreate invoice when paid. - En el catálogo público el comprador usa
Add to cart/Buy now, revisa el carrito y paga en/c/[orgId]/[slug]/checkout; al terminar va a/o/[path].
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Enable checkout | interruptor | Sí | Sin él, los CTA Add to cart y Buy now no se muestran. |
| Currencies / Default | multiselección | No | Solo monedas habilitadas en la organización; sin selección usa la moneda base. |
| Converted price rounding | lista | No | No rounding, Whole number, Ends in .99, Nearest 100, Nearest 1,000. Solo afecta precios convertidos. |
| Accept online payments / gateways | interruptor y selección | No | Por defecto se ofrecen todas las pasarelas activas; Wompi solo cuando se paga en COP. |
| Payment experience | lista | No | Formulario embebido o redirección a la pasarela. |
| Payment numbering | lista | No | Numeración del pago recibido. |
| Allow pay later | interruptor y texto | No | El pedido se crea sin pago y muestra las instrucciones. |
| Buyer contact | lista | Sí | Email required, Phone required, Email or phone, Email and phone. |
| Shipping methods | lista | No | Nombre, precio y Free over (optional) en la moneda por defecto. |
| Ship to countries | texto | No | Códigos ISO separados por coma; vacío envía a cualquier país. |
| Require shipping address | interruptor | No | La dirección usa autocompletado de Google Places. |
| Pickup locations | lista | No | Nombre, dirección e instrucciones. |
| Order numbering / Order owner | lista | No | Numeración order y miembro propietario. |
| Minimum order amount | importe | No | Bloquea pedidos por debajo del mínimo. |
| Notify members about new orders | multiselección | No | Si nadie está seleccionado se notifica al propietario. |
| Mark checkout as abandoned after (minutes) | número | No | Mínimo 5, por defecto 60. |
| Create invoice when paid | interruptor | No | Con numeración de factura opcional. |
Reglas y validaciones
- Cada producto tiene su moneda y puede tener
Fixed prices in other currencies; si no hay precio fijo, se convierte con la tasa de cambio y el redondeo del catálogo. - Con
Track inventory, el comprador no puede pedir más que el stock disponible salvo que el producto tengaKeep selling when out of stock. - El carrito vive en el navegador; el checkout se guarda en el servidor cuando el comprador deja correo o teléfono, lo que habilita la recuperación.
- El comprador se asocia a un contacto existente por correo o teléfono, o se crea uno nuevo.
- Con pago online, el pedido se crea cuando el pago se confirma; con pagar después, al enviar el checkout.
Backend
- Servicios:
catalog-links(configuración enpage_config.checkout),public-catalog(precios por moneda),public-catalog-checkout(quote, save, restore, submit, status),payment-links,public-payment-charge,orders. - Efectos: correo de confirmación y de pago al comprador, notificación a miembros, triggers
New order placed,Order paidyCheckout abandoned.
Relaciones
- Requiere: pasarela activa para pago online y esquema de numeración
order. - Dispara / afecta: Pedidos, Checkouts abandonados, inventario de productos.
id: catalog-display-and-theme modulo: catalogos-publicos app: crm nombre: Personalizar presentación del catálogo tipo: configuracion
Personalizar presentación del catálogo
Define cómo se muestran los productos y la identidad visual de la página pública.
Que se logra
- Resultado: la página pública refleja la marca y muestra la información comercial elegida en el formato más adecuado.
- Caso de uso: una marca de diseño usa un layout de cuadrícula y colores propios para presentar su colección en una landing.
- Se combina con: configuración del catálogo y exploración de catálogo público.
Donde esta
- Ruta:
/[orgId]/settings/products/catalog-links/[catalogLinkId] - Acceso en UI:
Catalog editor > ContentyTheme - Componente(s):
CatalogLinkEditorPage.tsx
Como funciona
- Ajuste precios, SKU, botón de compartir, imágenes, barra de categorías y búsqueda.
- Elija
Grid,List,Link tree (products)oLink tree (categories). - Configure alineación y el layout de productos por categoría si selecciona esa presentación.
- Elija un preset o colores personalizados.
Reglas y validaciones
- Los layouts de árbol ocultan la barra fija de categorías.
- Las imágenes de lista y detalle se controlan por separado.
Backend
- Servicios:
catalog-links(patch).
Relaciones
- Requiere: enlace de catálogo.
- Dispara / afecta: experiencia pública.
Notas
- La llamada a WhatsApp solo se muestra si está habilitada y existe un canal configurado.
id: catalog-link-editor modulo: catalogos-publicos app: crm nombre: Configurar un catálogo público tipo: configuracion
Configurar un catálogo público
Construye una página pública de productos con identidad de marca, contenido y selección propia.
Que se logra
- Resultado: un catálogo público queda adaptado a una línea comercial con marca, contenido, selección y apariencia propios.
- Caso de uso: un distribuidor prepara un catálogo para mayoristas con su propio nombre, hero y selección de referencias.
- Se combina con: productos, categorías, selección de productos y presentación del catálogo.
Donde esta
- Ruta:
/[orgId]/settings/products/catalog-links/newy/[orgId]/settings/products/catalog-links/[catalogLinkId] - Acceso en UI:
Catalog Links > New catalog linkoEdit - Componente(s):
CatalogLinkEditorPage.tsx
Como funciona
- Complete
Basics: nombre, slug, modo y activo. - Ajuste hero, banner y logo.
- Seleccione contenido, layout y opciones de presentación.
- Defina colores en
Theme. - Revise la previsualización y guarde.
Reglas y validaciones
- El slug admite minúsculas, números y guiones.
- La selección de categorías visible determina el orden público.
Backend
- Servicios:
catalog-links(get/create/patch).
Relaciones
- Requiere: Productos y categorías.
- Dispara / afecta: catálogo público.
Notas
- El editor permite previsualizar al introducir un slug, antes de guardar.
id: catalog-link-management modulo: catalogos-publicos app: crm nombre: Gestionar enlaces de catálogo tipo: vista
Gestionar enlaces de catálogo
Lista enlaces públicos y permite crear, compartir, activar, editar o eliminar cada catálogo.
Que se logra
- Resultado: la organización administra qué catálogos públicos existen, cuáles están disponibles y cómo se comparten.
- Caso de uso: una marca crea un enlace para su colección de temporada, lo activa al lanzamiento y lo desactiva al finalizar.
- Se combina con: productos, configuración de catálogo y compartir productos desde conversaciones.
Donde esta
- Ruta:
/[orgId]/settings/products/catalog-links - Acceso en UI:
Settings > Products > Catalog Links - Componente(s):
CatalogLinksManagement.tsx
Como funciona
- Use
New catalog link. - Copie, abra o comparta el enlace desde la fila.
- Active o desactive su disponibilidad pública.
- Edite o elimine el enlace.
Reglas y validaciones
- Eliminar pide confirmación.
- La pantalla carga más enlaces al desplazarse.
Backend
- Servicios:
catalog-links(find/patch/remove).
Relaciones
- Requiere: Productos.
- Dispara / afecta: página pública del catálogo.
Notas
Shareofrece URL directa y código iframe conembed=true.
id: catalog-product-selection modulo: catalogos-publicos app: crm nombre: Seleccionar productos de catálogo tipo: configuracion
Seleccionar productos de catálogo
Limita los productos publicados por modo de catálogo y filtros visuales.
Que se logra
- Resultado: el visitante ve solo el subconjunto y orden de productos que el negocio decidió publicar en ese enlace.
- Caso de uso: una boutique comparte un catálogo de regalos que excluye productos sin fotografía y ordena sus categorías principales.
- Se combina con: productos, categorías y catálogo público.
Donde esta
- Ruta:
/[orgId]/settings/products/catalog-links/[catalogLinkId] - Acceso en UI:
Catalog editor > Basics - Componente(s):
CatalogLinkCategoriesOrderEditor.tsx,CatalogLinkProductsSectionsEditor.tsx
Como funciona
- Elija todos los productos, categorías seleccionadas o productos seleccionados.
- Para categorías, mueva elementos de
AvailableaVisible. - Ordene los elementos visibles.
- Active
Only show products with imagessi corresponde.
Reglas y validaciones
- El orden de
Visiblees el orden de las categorías y badges públicos.
Backend
- Servicios:
catalog-links(patch),public-catalog(get).
Relaciones
- Requiere: Productos y categorías activas.
- Dispara / afecta: listado que ve el visitante.
Notas
- Los productos sin imagen pueden excluirse sin modificar los productos originales.
id: public-catalog-browsing modulo: catalogos-publicos app: crm nombre: Explorar catálogo público tipo: publico
Explorar catálogo público
Permite a visitantes navegar productos, categorías, detalle, medios y acciones públicas.
Que se logra
- Resultado: un visitante explora productos y detalles sin cuenta, y puede compartirlos o contactar por WhatsApp cuando está habilitado.
- Caso de uso: un cliente de una tienda abre un enlace de catálogo, filtra por categoría y consulta un artículo desde WhatsApp.
- Se combina con: productos, Catálogos públicos y Conversaciones de WhatsApp.
Donde esta
- Ruta:
/c/[orgId]/[slug],/c/[orgId]/[slug]/category/[categoryId]y/c/[orgId]/[slug]/product/[productId] - Acceso en UI: URL compartida o iframe.
- Componente(s):
page.tsx
Como funciona
- Abra el enlace público.
- Use búsqueda o categorías cuando el editor las habilite.
- Abra un producto para ver su detalle en un panel.
- Explore imágenes o videos y cargue más elementos si existen.
- Use compartir o
Contact on WhatsAppsi el catálogo lo permite.
Reglas y validaciones
- Un catálogo inactivo devuelve una página no disponible.
- La búsqueda espera brevemente antes de actualizar resultados.
Backend
- Servicios:
public-catalog(get).
Relaciones
- Requiere: catálogo activo y productos disponibles.
- Dispara / afecta: enlace de producto, compartir y conversación de WhatsApp opcional.
Notas
embed=trueoculta el encabezado y pie de página para incrustación.
id: companias app: crm nombre: Companias estado: shipped permiso: permisos granulares de compañías
Companias
Agrupa cuentas B2B y sus contactos, deals y actividad.
Para que sirve
- Una agencia administra cada empresa cliente junto con sus contactos, oportunidades y notas.
- Una consultora reúne el historial de una cuenta antes de preparar una renovación.
- Un proveedor B2B asigna cuentas corporativas a responsables y redistribuye carteras por lote.
- Un despacho legal registra empresas y consulta sus documentos, actividad y contactos relacionados.
Que lo hace diferente
- La compañía es una cuenta compartida por Contactos, Deals, Actividades, Estimates, Reservas y Proyectos.
- Su perfil reúne registros CRM y documentos comerciales en vez de separar la cuenta de las operaciones diarias.
- Los campos personalizados y etiquetas pueden mostrarse también como columnas de la lista de empresas.
- Las acciones masivas aplican a la selección o a todos los resultados de la búsqueda, con progreso y restricciones de plan.
- La reasignación conserva cambios de responsable para mantener trazabilidad de la cartera.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Perfil de compañía | company-profile.md | Consulta datos y relaciones CRM. |
| Lista, búsqueda y vistas | company-list-filters.md | Consulta, ordena y personaliza la tabla. |
| Crear compañía | create-company.md | Añade una compañía desde el listado. |
| Editar y eliminar compañía | edit-delete-company.md | Actualiza o elimina el registro desde su perfil. |
| Acciones masivas y exportación | company-bulk-actions.md | Procesa compañías seleccionadas o exporta datos. |
| Campos personalizados y etiquetas | company-custom-fields-tags.md | Completa campos y administra etiquetas. |
| Registros relacionados | company-related-records.md | Reúne contactos, deals y actividad de la compañía. |
Acceso
- Ruta principal:
/[orgId]/companies - Como se llega:
Sidebar > CRM > Companies - Permiso requerido: permisos granulares de compañías
Alcance tecnico
- Frontend: lista y detalle;
CompanyView,CompanyHeader,CompanySidebaryCRMMainContent - Backend:
companies,companies-bulk-actions,contacts,deals,notes,tagsycustom-fields - Superficies publicas: ninguna
- Integraciones externas: S3 y canales de comunicación vinculados a contactos
Relaciones
- Depende de: Contactos, Deals, Etiquetas y Campos personalizados.
- Usado por: Contactos, Deals, Estimates y Actividades.
Limitaciones y notas
- El diálogo de edición confirma como datos centrales únicamente el nombre; los demás vínculos se gestionan desde el perfil.
id: company-bulk-actions modulo: companias app: crm nombre: Acciones masivas y exportación de compañías tipo: accion
Acciones masivas y exportación de compañías
Permite seleccionar compañías para cambiar responsable, eliminarlas o exportarlas.
Que se logra
- Resultado: ejecuta una operación de cartera sobre varias cuentas y deja visible su progreso.
- Caso de uso: un proveedor B2B reasigna todas las empresas de una región al equipo que la atenderá.
- Se combina con: Lista, búsqueda y vistas de compañías y permisos de organizaciones.
Donde esta
- Ruta:
/[orgId]/companies - Acceso en UI:
Companies > seleccionar compañías > Bulk Actionso menú⋯ - Componente(s):
CompanyView.tsx,BulkActionWizard.tsx,BulkChangeOwnerDialog.tsx
Como funciona
- Selecciona compañías de la página o todos los resultados actuales.
- Usa
Bulk Actionspara elegir eliminar,Update Ownero exportar. - Elige el alcance
Selected companiesoAll companies; para responsable, selecciona el nuevo miembro. - Revisa y confirma la acción.
Reglas y validaciones
- El asistente procesa eliminaciones y cambios de responsable por lotes y muestra el progreso y errores.
- La exportación está restringida para el plan
Free; los planes de pago la habilitan. - El alcance
All companiesconserva el texto de búsqueda activo.
Backend
- Servicios:
companies-bulk-actions(método: create),companies(método: find/patch/remove),export-data(método: create) - Hooks relevantes solo si cambian el comportamiento visible: las autorizaciones granulares cubren
companies-bulk-actions. - Efectos: genera exportaciones o modifica múltiples compañías.
Relaciones
- Requiere: Lista de compañías y miembros de la organización.
- Dispara / afecta: Responsable, listado y exportación.
Notas
Import Companiesaparece como elemento de UI, pero no tiene flujo conectado en el código inspeccionado. Por confirmar: importación operativa.
id: company-custom-fields-tags modulo: companias app: crm nombre: Campos personalizados y etiquetas de compañías tipo: configuracion
Campos personalizados y etiquetas de compañías
Permite complementar el perfil de una compañía con campos configurables y gestionar sus etiquetas.
Que se logra
- Resultado: ajusta la ficha de cada cuenta a los criterios de calificación y clasificación propios del negocio.
- Caso de uso: una agencia marca sector, tamaño y nivel de servicio de cada cliente corporativo.
- Se combina con: Lista, búsqueda y vistas de compañías y Perfil de compañía.
Donde esta
- Ruta:
/[orgId]/companies/[id] - Acceso en UI:
Company Profile > Company Details > Custom Fieldsy fila de etiquetas - Componente(s):
CompanyCustomFields.tsx,CompanySidebar.tsx
Como funciona
- Abre el perfil de la compañía.
- En
Custom Fields, actualiza un valor, guárdalo o límpialo. - En la fila de etiquetas usa el lápiz para administrar las etiquetas de la compañía.
- En el listado, usa el selector de columnas para incluir campos personalizados.
Reglas y validaciones
- Los valores de campos se guardan uno a uno.
- La UI muestra la última actualización disponible de cada valor.
Backend
- Servicios:
custom-fields(método: find),companies(método: get/patch),tags(método: find/create/patch/remove) - Efectos: los valores pueden mostrarse como columnas y dentro del perfil.
Relaciones
- Requiere: Campos personalizados y etiquetas configurados para la organización.
- Dispara / afecta: Perfil y listado de compañías.
Notas
- Por confirmar: las reglas de obligatoriedad de campos personalizados al editar una compañía.
id: company-list-filters modulo: companias app: crm nombre: Lista, búsqueda y vistas de compañías tipo: vista
Lista, búsqueda y vistas de compañías
Consulta compañías en una tabla paginada, busca registros y personaliza las columnas mediante vistas guardadas.
Que se logra
- Resultado: prioriza cuentas B2B y adapta la lista a la información que cada equipo necesita revisar.
- Caso de uso: un despacho legal crea una vista de empresas activas con sus datos operativos antes de planear renovaciones.
- Se combina con: Acciones masivas y exportación de compañías y Campos personalizados.
Donde esta
- Ruta:
/[orgId]/companies - Acceso en UI:
Sidebar > CRM > Companies - Componente(s):
CompanyView.tsx,EntityViewManager.tsx
Como funciona
- Abre
Companies. - Escribe en
Search companiespara buscar. - Ordena por fecha de creación y ajusta el tamaño de página.
- Usa el selector de columnas para elegir campos del sistema y personalizados.
- Crea, selecciona o elimina una vista desde el administrador de vistas.
Reglas y validaciones
- La búsqueda aplica una espera breve antes de consultar.
- Con una vista seleccionada, la búsqueda queda deshabilitada; buscar limpia la vista seleccionada.
- La tabla permite entre 10 y 50 filas por página.
Backend
- Servicios:
companies(método: find),custom-fields(método: find),entity-views(método: find/create/patch/remove) - Hooks relevantes solo si cambian el comportamiento visible: la consulta rápida incorpora los datos para creador, responsable y campos de lista.
- Efectos: determina el alcance de la exportación y acciones masivas.
Relaciones
- Requiere: Campos personalizados y vistas de entidad.
- Dispara / afecta: Acciones masivas y exportación de compañías.
Notas
- Por confirmar: filtros adicionales distintos de búsqueda y vista guardada.
id: company-profile modulo: companias app: crm nombre: Perfil de compañía tipo: vista
Perfil de compañía
Consulta datos de una compañía y sus registros CRM relacionados.
Que se logra
- Resultado: ofrece una vista de cuenta para entender quiénes participan y qué actividad comercial existe con una empresa.
- Caso de uso: una agencia revisa la compañía cliente antes de una reunión con varios decisores.
- Se combina con: Registros relacionados de la compañía y Contactos.
Donde esta
- Ruta:
/[orgId]/companies/[id] - Acceso en UI:
Companies > fila de compañía - Componente(s):
CompanyHeader.tsx,CompanySidebar.tsx,CRMMainContent.tsx
Como funciona
- Abre una compañía desde la lista.
- Revisa detalles, contactos, deals y otros registros en la barra lateral.
- Usa las pestañas de actividad, notas, archivos, email y timeline.
Reglas y validaciones
- En móvil se alterna entre
Company DetailsyActivity.
Backend
- Servicios:
companies,contacts,deals,notes(método: get/find)
Relaciones
- Requiere: Contactos y Deals.
- Dispara / afecta: Ninguna.
Notas
- El nombre se puede editar desde encabezado o menú de más acciones.
id: company-related-records modulo: companias app: crm nombre: Registros relacionados de la compañía tipo: vista
Registros relacionados de la compañía
Centraliza los contactos, deals, actividad, notas, archivos y otros registros CRM vinculados a una compañía.
Que se logra
- Resultado: concentra la relación comercial de una cuenta, desde los interlocutores hasta documentos y trabajo asociado.
- Caso de uso: una consultora abre una empresa cliente y revisa su oportunidad, notas, reserva y proyecto antes de una propuesta.
- Se combina con: Contactos, Deals, Estimates, Reservas y Proyectos.
Donde esta
- Ruta:
/[orgId]/companies/[id] - Acceso en UI:
Company Profile > barra lateral y pestañas de actividad - Componente(s):
CompanySidebar.tsx,CRMMainContent.tsx,CompanyHeader.tsx
Como funciona
- Abre una compañía desde el listado.
- Expande las secciones
ContactsyDealspara consultar o abrir registros vinculados. - Usa las pestañas
Activity,Notes,Files,Email,RecordingeHistorypara trabajar con la relación. - Crea contactos, deals, estimates, reservas o proyectos desde las secciones que los ofrecen.
Reglas y validaciones
- En pantallas pequeñas se alterna entre
Company DetailsyActivity. - Si no hay permiso para deals, su sección muestra una nota de acceso en vez de exponer el error de autorización.
Backend
- Servicios:
companies,contacts,deals,activities,notes,files,estimates,reservationsyprojects(método: find/get/create) - Efectos: concentra la actividad y documentación relacionada con una cuenta.
Relaciones
- Requiere: Contactos y deals de la compañía.
- Dispara / afecta: Actividades, documents comerciales, reservas y proyectos.
Notas
- Por confirmar: los permisos específicos para cada sección relacionada.
id: create-company modulo: companias app: crm nombre: Crear compañía tipo: accion
Crear compañía
Crea una compañía nueva desde el listado de compañías.
Que se logra
- Resultado: incorpora una cuenta B2B que puede convertirse en el contexto común de sus contactos y oportunidades.
- Caso de uso: una consultora crea la ficha de una empresa prospecto antes de relacionar sus interlocutores.
- Se combina con: Contactos, Deals y Perfil de compañía.
Donde esta
- Ruta:
/[orgId]/companies - Acceso en UI:
Companies > Add Company - Componente(s):
CompanyView.tsx
Como funciona
- Selecciona
Add Company. - Escribe el nombre de la compañía.
- Confirma con
Add Company. - La tabla se actualiza con el nuevo registro.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Company Name |
texto | Sí | Debe tener al menos dos caracteres. |
Reglas y validaciones
- El formulario muestra un error si el nombre no alcanza la longitud mínima.
Backend
- Servicios:
companies(método: create/find) - Efectos: incorpora la compañía en el listado de la organización.
Relaciones
- Requiere: Permiso de creación de compañías.
- Dispara / afecta: Perfil y listado de compañías.
Notas
- Los contactos y deals se vinculan desde el perfil de la compañía.
id: edit-delete-company modulo: companias app: crm nombre: Editar y eliminar compañía tipo: accion
Editar y eliminar compañía
Permite actualizar el nombre o responsable de una compañía y eliminarla desde su perfil.
Que se logra
- Resultado: mantiene actualizada la cuenta responsable de la relación B2B y conserva el rastro de sus reasignaciones.
- Caso de uso: una agencia transfiere una cuenta corporativa a otro director sin perder su contexto CRM.
- Se combina con: Registros relacionados de la compañía y Timeline CRM.
Donde esta
- Ruta:
/[orgId]/companies/[id] - Acceso en UI:
Company Profile > nombreoMore actions > Edit CompanyyDelete Company - Componente(s):
CompanyHeader.tsx,CompanySidebar.tsx
Como funciona
- Abre una compañía.
- Selecciona el nombre o
Edit Companypara actualizar sus datos centrales. - Usa el selector de equipo del encabezado para asignar un responsable.
- Selecciona
Delete Companypara eliminarla.
Reglas y validaciones
- El diálogo de edición confirmado en el catálogo actual se centra en el nombre.
- La eliminación usa el comportamiento de borrado suave del servicio.
Backend
- Servicios:
companies(método: get/patch/remove),owner-changes(método: create/find) - Efectos: actualiza el perfil, la lista y la trazabilidad del responsable.
Relaciones
- Requiere: Perfil de compañía y miembros de la organización.
- Dispara / afecta: Contactos, deals y timeline relacionados.
Notas
- Por confirmar: las validaciones y condiciones exactas que impiden eliminar una compañía con relaciones.
id: contactos app: crm nombre: Contactos estado: shipped permiso: permisos granulares de contactos
Contactos
Gestiona personas y leads del CRM, sus datos, relaciones, comunicaciones y actividad comercial.
Para que sirve
- Una clínica reúne los datos y el historial de cada paciente para dar seguimiento antes y después de una cita.
- Una inmobiliaria clasifica prospectos, los vincula a empresas y distribuye su atención entre asesores.
- Un e-commerce identifica el origen de cada comprador y conserva su consentimiento de mensajería.
- Una academia importa interesados de ferias o formularios y los segmenta para sus procesos de admisión.
- Un concesionario contacta a un prospecto por WhatsApp, SMS, Instagram o llamada desde la misma ficha.
Que lo hace diferente
- Un contacto único conecta datos CRM con conversaciones de WhatsApp, SMS e Instagram y llamadas de voz.
- Desde el perfil se puede iniciar una llamada con un asistente de voz y enviar variables dinámicas del contacto.
- Los segmentos de contactos alimentan el procesamiento de campañas; no quedan como filtros aislados.
- El historial reúne actividades, notas, fuentes y cambios de responsable en la misma ficha.
- La gestión de STOP/START de SMS se refleja en el contacto y limita los envíos desde los canales integrados.
Acceso
- Ruta principal:
/[orgId]/contacts - Como se llega:
Sidebar > CRM > Contacts - Permiso requerido: permisos granulares de contactos
Alcance tecnico
- Frontend: rutas de lista y perfil de contactos;
ContactsView,ContactHeader,ContactSidebaryCRMMainContent - Backend:
contacts,contacts-bulk-actions,contacts-import-error-logs,contacts-segments-*,contacts-sources,notes,tagsycustom-fields - Superficies publicas: ninguna
- Integraciones externas: WhatsApp, Instagram, SMS, voz, Meta y S3
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Lista y busqueda | contact-list.md | Consulta y abre contactos. |
| Crear contacto | create-contact.md | Alta con deteccion de duplicados. |
| Editar perfil | edit-contact.md | Actualiza datos, avatar y tipo. |
| Importar CSV | import-contacts.md | Mapea y carga contactos desde CSV. |
| Acciones masivas | bulk-contact-actions.md | Cambia propietarios y opera por lote. |
| Vistas guardadas | contact-views.md | Guarda filtros y columnas de lista. |
| Exportar contactos | export-contacts.md | Genera descargas desde selecciones, vistas o filtros. |
| Segmentos | contact-segments.md | Define y consulta segmentos. |
| Timeline CRM | contact-timeline.md | Revisa el historial relacionado. |
| Notas y archivos | contact-notes-files.md | Registra notas y adjuntos. |
| Etiquetas | contact-tags.md | Clasifica contactos con tags. |
| Empresa asociada | contact-company.md | Vincula el contacto a una empresa. |
| Campos personalizados | contact-custom-fields.md | Captura datos configurables. |
| Atajos de comunicacion | contact-communication.md | Abre llamadas y conversaciones. |
| Llamada con IA | contact-ai-call.md | Inicia llamadas salientes con asistente. |
| Fuentes de contacto | contact-sources.md | Registra procedencia, campañas y UTM. |
| Consentimiento y blacklist | contact-message-consent.md | Refleja bajas y altas SMS y estado de WhatsApp. |
| Smart Links en el contacto | contact-smart-links.md | Registra la integración pendiente de confirmar. |
| Permisos de contactos | contact-permissions.md | Describe el acceso granular y alcance de miembros. |
Relaciones
- Depende de: Compañías, Etiquetas y Campos personalizados.
- Usado por: Deals, Conversaciones, Tickets legacy, Automatizaciones y Formularios.
Limitaciones y notas
- Un contacto de WhatsApp puede tener
@usernamesin teléfono; el nombre de usuario no se edita desde AchieveApex. - Por confirmar: la superficie exacta desde la que se administra manualmente la blacklist SMS/email y si el detalle ofrece Smart Links.
- No se verificó un flujo de fusión de duplicados en las rutas, componentes y servicios indicados.
id: bulk-contact-actions modulo: contactos app: crm nombre: Acciones masivas de contactos tipo: accion
Acciones masivas de contactos
Permite organizar, editar datos seguros, suscribir a series y depurar contactos seleccionados, una vista o un filtro.
Que se logra
- Resultado: aplica el mismo cambio a un grupo de contactos sin abrir cada perfil.
- Caso de uso: etiquetar los leads de una campaña, cambiarles el tipo a contacto y sumarlos a una serie.
- Se combina con: Vistas guardadas de contactos y Permisos de contactos.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > seleccionar filas o una vista > Bulk Actions - Componente(s):
ContactsView.tsx,BulkContactActionsMenu.tsx,BulkChangeOwnerDialog.tsx
Como funciona
- Selecciona filas, todos los de la vista, o todos los que coinciden con el filtro.
- Abre Bulk Actions y elige la acción.
- Confirma el alcance. El diálogo muestra el conteo y algunos nombres.
- La lista se actualiza. Si hay más de 200 contactos, el trabajo sigue en segundo plano y la pantalla espera el resultado.
Acciones
- Organizar: cambiar propietario, agregar o quitar tag, asignar o quitar compañía, cambiar tipo Lead/Contact.
- Datos: asignar o limpiar un campo personalizado (no archivos).
- Comunicación: agregar o quitar de una serie, opt-out o permitir WhatsApp, SMS y voz.
- Exportar y eliminar. Eliminar más de 100 contactos pide escribir DELETE.
Reglas y validaciones
- Owners, admins y miembros que pueden editar todos los contactos ejecutan las acciones de edición.
- Eliminar en lote requiere poder borrar todos los contactos.
- No se editan en lote nombre, email ni teléfono.
- Los cambios masivos no disparan la automatización de contacto actualizado.
Backend
- Servicios:
contacts-bulk-actions(método: create, get para el progreso) - Hooks relevantes: resuelve selección por filtros o vistas y procesa la acción.
id: contact-ai-call modulo: contactos app: crm nombre: Llamada con IA tipo: integracion
Llamada con IA
Programa una llamada saliente atendida por un asistente de voz.
Que se logra
- Resultado: pone en cola una llamada personalizada de un asistente de voz, con variables tomadas o completadas desde el contacto.
- Caso de uso: una clínica agenda llamadas de confirmación para pacientes que aún no han confirmado su cita.
- Se combina con: Asistentes IA de voz, canales de voz y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Contact Details > AI Call - Componente(s):
ContactAiCallPopover.tsx
Como funciona
- Abre un contacto con teléfono.
- Selecciona
AI Call. - Elige el asistente de voz y número de salida.
- Confirma la llamada.
Reglas y validaciones
- Requiere un contacto con número telefónico.
Backend
- Servicios:
voice-outbound-requests(método: create),ai-assistants(método: get)
Relaciones
- Requiere: AI Voices y canal de voz.
- Dispara / afecta: Historial del contacto.
Notas
Call Contactusa el canal de voz;AI Callinicia una llamada mediante asistente.
id: contact-communication modulo: contactos app: crm nombre: Atajos de comunicación del contacto tipo: integracion
Atajos de comunicación del contacto
Abre llamadas y conversaciones de WhatsApp, SMS e Instagram desde el perfil.
Que se logra
- Resultado: el equipo inicia o retoma la comunicación desde la ficha que reúne la identidad del contacto.
- Caso de uso: un concesionario responde por el canal preferido de un prospecto sin copiar teléfonos entre herramientas.
- Se combina con: Conversaciones omnicanal y canales de voz.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Contact Details - Componente(s):
ContactSidebar.tsx
Como funciona
- Abre un contacto.
- Usa
Call Contact,OpenoInitiatepara el canal disponible. - Si hay varias líneas SMS, elige el número emisor.
Reglas y validaciones
- Llamadas y SMS requieren teléfono; SMS requiere canal habilitado y número activo.
- Un usuario solo puede iniciar WhatsApp por
@usernamesi ya existe relación con el negocio.
Backend
- Servicios:
contactsy servicios de conversaciones por canal (método: find/create)
Relaciones
- Requiere: Conversaciones y configuración de canales.
- Dispara / afecta: Conversaciones y llamadas.
Notas
- Una conversación existente se abre en una hoja dentro del perfil y también puede abrirse en otra pestaña.
id: contact-company modulo: contactos app: crm nombre: Asociar contacto a compañía tipo: accion
Asociar contacto a compañía
Vincula un contacto existente con una cuenta B2B.
Que se logra
- Resultado: sitúa a cada interlocutor dentro de su cuenta para consultar su relación comercial completa.
- Caso de uso: una agencia asocia a los decisores de un cliente corporativo con la misma compañía.
- Se combina con: Perfil de compañía y Deals.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Contact Details > Assign Company - Componente(s):
AssignCompanyDialog.tsx
Como funciona
- Abre el contacto.
- Selecciona
Assign Company. - Busca y elige la compañía.
- Confirma la asociación.
Reglas y validaciones
- Por confirmar: si el contacto puede permanecer sin compañía o cambiarla desde este diálogo.
Backend
- Servicios:
contacts,companies(método: patch/find)
Relaciones
- Requiere: Compañías.
- Dispara / afecta: Perfil de compañía y deals relacionados.
Notas
- La creación de contacto permite también elegir o crear una compañía.
id: contact-custom-fields modulo: contactos app: crm nombre: Campos personalizados de contacto tipo: configuracion
Campos personalizados de contacto
Captura datos definidos por cada organización.
Que se logra
- Resultado: adapta la ficha de contacto a los datos operativos que el negocio realmente necesita recopilar.
- Caso de uso: una academia guarda nivel de interés, programa elegido y fecha preferida de inicio en cada aspirante.
- Se combina con: Crear contacto, Editar perfil de contacto y Vistas guardadas.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Edit Contact > Custom Fields - Componente(s):
CustomFieldInput.tsx,EditContactDialog.tsx
Como funciona
- Configura campos de tipo Contact en
Settings. - Abre un contacto y selecciona
Edit Contact. - Completa la pestaña
Custom Fields. - Guarda los cambios.
Reglas y validaciones
- Los campos requeridos deben completarse al crear o editar.
Backend
- Servicios:
custom-fields,contacts(método: find/patch)
Relaciones
- Requiere: Configuración de campos personalizados.
- Dispara / afecta: Creación y edición del contacto.
Notas
- El alta de contactos recupera los campos paginados de la organización.
id: contact-list modulo: contactos app: crm nombre: Lista y búsqueda de contactos tipo: vista
Lista y búsqueda de contactos
Consulta los contactos de la organización y abre su perfil.
Que se logra
- Resultado: localiza una persona o lead y llega a su historial comercial sin buscar en sistemas separados.
- Caso de uso: una clínica encuentra al paciente que escribió por WhatsApp antes de revisar sus citas y conversaciones.
- Se combina con: Timeline del contacto y Atajos de comunicación.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Sidebar > CRM > Contacts - Componente(s):
ContactsView.tsx
Como funciona
- Abre
Contacts. - Busca por nombre, email, teléfono o
@usernamede WhatsApp. - Selecciona una fila para abrir el perfil.
Reglas y validaciones
- La búsqueda acepta el nombre de usuario con o sin
@.
Backend
- Servicios:
contacts(método: find/get)
Relaciones
- Requiere: Contactos.
- Dispara / afecta: Perfil del contacto.
Notas
- El teléfono puede mostrarse como
@usernamecuando WhatsApp no comparte el número.
id: contact-message-consent modulo: contactos app: crm nombre: Consentimiento y blacklist de mensajería tipo: integracion
Consentimiento y blacklist de mensajería
Refleja la baja y reactivación SMS recibidas mediante palabras clave y conserva la restricción de WhatsApp en la lista de contactos.
Que se logra
- Resultado: respeta las bajas de mensajería y evita que el equipo contacte por SMS a quien se retiró.
- Caso de uso: un restaurante deja de enviar promociones SMS a un cliente que respondió STOP y permite su reactivación con START.
- Se combina con: Conversaciones SMS, Campañas y configuración de cumplimiento de SMS.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > columnas y filtrospara el estado de blacklist de WhatsApp. - Componente(s):
ContactsView.tsx
Como funciona
- Un contacto responde STOP a un SMS y el sistema marca la baja.
- Una respuesta START o UNSTOP reestablece el consentimiento SMS.
- La lista puede mostrar y filtrar el estado de blacklist de WhatsApp.
Reglas y validaciones
- La baja SMS se procesa desde mensajes entrantes, no desde un control de edición de contacto identificado.
- Al reactivar SMS se registra el origen como palabra clave y se elimina la restricción SMS.
- Por confirmar: ubicación de administración manual para blacklist de email y SMS.
Backend
- Servicios:
telnyx-webhooks,public-sms-opt-in,voice-channels(método: create)
Relaciones
- Requiere: Canal SMS/Telnyx.
- Dispara / afecta: Posibilidad de mensajería SMS y cumplimiento de opt-in.
Notas
- No se localizó un servicio separado llamado
sms_blacklist; la blacklist SMS se administra en el contacto a través de los flujos anteriores.
id: contact-notes-files modulo: contactos app: crm nombre: Notas y archivos del contacto tipo: accion
Notas y archivos del contacto
Centraliza anotaciones y archivos en el espacio de actividad del perfil.
Que se logra
- Resultado: conserva instrucciones, documentos y evidencia junto a la persona a la que corresponden.
- Caso de uso: una clínica adjunta una autorización y deja una nota para que recepción conozca el contexto del paciente.
- Se combina con: Timeline del contacto y Actividades.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > NotesoFiles - Componente(s):
CRMMainContent.tsx
Como funciona
- Abre el contacto.
- Selecciona
Notespara registrar una nota oFilespara gestionar adjuntos. - Revisa los elementos también en
Timeline.
Reglas y validaciones
- Por confirmar: límites y tipos de archivos permitidos en el panel CRM.
Backend
- Servicios:
notes(método: find/create/patch/remove)
Relaciones
- Requiere: Contactos.
- Dispara / afecta: Timeline del contacto.
Notas
- La grabación de audio se gestiona en la pestaña
Recording, separada de archivos.
id: contact-permissions modulo: contactos app: crm nombre: Permisos de contactos tipo: configuracion
Permisos de contactos
El acceso a contactos se controla por permisos granulares de la organización y por el alcance de cada miembro.
Que se logra
- Resultado: cada miembro accede a los contactos y acciones acordes con su rol sin exponer innecesariamente el CRM.
- Caso de uso: una agencia permite a un ejecutivo gestionar su cartera, mientras los administradores coordinan el conjunto.
- Se combina con: Acciones masivas de contactos y permisos de organizaciones.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Avatar menu > Settings > Teampara administrar permisos. - Componente(s):
ContactsView.tsx,ContactSidebar.tsx
Como funciona
- Un administrador configura los permisos del miembro en la organización.
- El miembro abre la lista o el perfil de contactos dentro del alcance permitido.
- Las secciones relacionadas del perfil muestran una nota de acceso cuando el módulo dependiente está restringido.
Reglas y validaciones
- El módulo declara permisos granulares de contactos.
- Por confirmar: nombres de permiso y distinción exacta entre alcance
ownyallen las pantallas de configuración.
Backend
- Servicios:
contacts(método: find/get/create/patch/remove) - Hooks relevantes: la capa global de abilities limita las operaciones según organización y permisos del miembro.
Relaciones
- Requiere: Miembros, roles y permisos.
- Dispara / afecta: Lista, perfil y acciones masivas de contactos.
Notas
- Las restricciones de Deals, Tickets, Estimates y Reservations se comunican dentro de sus secciones del perfil, sin bloquear toda la ficha de contacto.
id: contact-segments modulo: contactos app: crm nombre: Segmentos de contactos tipo: vista
Segmentos de contactos
Permite definir y ejecutar consultas segmentadas sobre contactos.
Que se logra
- Resultado: obtiene una audiencia de contactos que cumple criterios definidos para consultarla o reutilizarla en procesos comerciales.
- Caso de uso: un restaurante identifica clientes sin visita reciente para preparar una campaña de reactivación.
- Se combina con: Campañas y Vistas guardadas de contactos.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > filtros y vistas - Componente(s):
ContactsView.tsx
Como funciona
- Abre la lista de contactos.
- Define criterios de filtrado disponibles.
- Consulta los resultados del segmento.
Reglas y validaciones
- Por confirmar: la ubicación exacta del constructor de segmentos en la interfaz.
Backend
- Servicios:
contacts-segments-schema-builder,contacts-segments-json-to-sql,contacts-segments-run-query(método: create)
Relaciones
- Requiere: Contactos.
- Dispara / afecta: Audiencias y vistas de contactos.
Notas
- El backend expone servicios separados para construir, transformar y ejecutar segmentos.
id: contact-smart-links modulo: contactos app: crm nombre: Smart Links en el contacto tipo: vista
Smart Links en el contacto
Relaciona el perfil de contacto con el módulo Smart Links cuando haya una superficie disponible.
Que se logra
- Resultado: no hay un resultado operativo confirmado; la relación con Smart Links está documentada como una posibilidad pendiente.
- Caso de uso: una agencia podría consultar enlaces de campaña por contacto cuando exista una superficie integrada confirmada.
Donde esta
- Ruta: Por confirmar: no se identificó una sección
Smart Linksen el perfil revisado. - Acceso en UI: Por confirmar.
- Componente(s): Por confirmar.
Como funciona
- Por confirmar: flujo de consulta o creación de enlaces desde el detalle de contacto.
Reglas y validaciones
- Por confirmar: condiciones de asociación, métricas visibles y permisos.
Backend
- Servicios: Por confirmar: no se confirmó una llamada de Smart Links desde los componentes de detalle revisados.
Relaciones
- Requiere: Módulo Smart Links.
- Dispara / afecta: Por confirmar.
Notas
- La relación fue solicitada como capacidad pendiente, pero no está presente en
ContactSidebar.tsxni en las metas de soporte del detalle; requiere confirmación de producto antes de documentarla como flujo operativo.
id: contact-sources modulo: contactos app: crm nombre: Fuentes de contacto tipo: accion
Fuentes de contacto
Registra y consulta cómo llegó un contacto, incluido canal, campaña y datos UTM.
Que se logra
- Resultado: conserva el origen atribuible de un lead para distinguir qué canales y campañas aportan contactos.
- Caso de uso: un e-commerce registra que un comprador llegó por una campaña UTM y lo compara con referidos.
- Se combina con: Timeline del contacto y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Sources - Componente(s):
ContactSourcesSection.tsx
Como funciona
- Expande
Sourcesen el perfil. - Selecciona
Add Source. - Elige el tipo e introduce la información disponible.
- Selecciona
Save; la lista muestra las cinco fuentes más recientes.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Tipo de fuente | selección | Sí | Manual, Facebook lead, CTWA, UTM, campaña, referencia o personalizada. |
| Canal, campaña, URL e identificador | texto | No | Contexto del origen. |
| UTM source, medium y campaign | texto | No | Parámetros de atribución. |
| Metadata | objeto | No | Debe ser un objeto válido. |
Reglas y validaciones
- No permite guardar si falta el tipo o si metadata no es un objeto válido.
- Se muestran como máximo cinco registros en el panel.
Backend
- Servicios:
contacts-sources(método: find/create)
Relaciones
- Requiere: Perfil de contacto.
- Dispara / afecta: Timeline y atribución del contacto.
Notas
- No se encontró una acción de edición o eliminación en el panel revisado.
id: contact-tags modulo: contactos app: crm nombre: Etiquetas de contacto tipo: configuracion
Etiquetas de contacto
Clasifica contactos mediante tags de la organización.
Que se logra
- Resultado: añade una clasificación transversal que facilita reconocer y seleccionar grupos de contactos.
- Caso de uso: una inmobiliaria etiqueta propietarios, compradores e inversionistas para orientar el seguimiento.
- Se combina con: Lista y búsqueda de contactos y Creación de contacto.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Contact Details > tags > lápiz - Componente(s):
ContactSidebar.tsx
Como funciona
- Abre el perfil.
- Edita la fila de tags.
- Añade o quita las etiquetas disponibles.
Reglas y validaciones
- Solo usa etiquetas de la organización.
Backend
- Servicios:
tags,contacts(método: find/patch)
Relaciones
- Requiere: Etiquetas.
- Dispara / afecta: Clasificación del contacto.
Notas
- Las tags también se administran desde otras superficies CRM.
id: contact-timeline modulo: contactos app: crm nombre: Timeline del contacto tipo: vista
Timeline del contacto
Muestra la historia CRM y permite filtrarla por tipo de evento.
Que se logra
- Resultado: reconstruye el recorrido de un contacto para continuar la atención con contexto verificable.
- Caso de uso: un despacho legal revisa llamadas, notas y cambios de responsable antes de responder a un cliente.
- Se combina con: Actividades, Notas y Fuentes de contacto.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Timeline - Componente(s):
CRMMainContent.tsx
Como funciona
- Abre un perfil de contacto.
- Selecciona
Timeline. - Filtra
All, actividades, notas, emails, grabaciones, llamadas, fuentes o propietario.
Reglas y validaciones
- La vista móvil separa
Contact DetailsyActivity.
Backend
- Servicios:
activities,notes,contacts-sources,owner-changes(método: find)
Relaciones
- Requiere: Actividades, Notas y Fuentes.
- Dispara / afecta: Ninguna.
Notas
- Incluye el historial de cambios de propietario y comunicaciones relacionadas.
id: contact-views modulo: contactos app: crm nombre: Vistas guardadas de contactos tipo: configuracion
Vistas guardadas de contactos
Guarda filtros y columnas de la lista como vistas personales o compartidas.
Que se logra
- Resultado: cada equipo vuelve a una lista de trabajo con los contactos y columnas que necesita.
- Caso de uso: una agencia comparte una vista de leads sin atender con su equipo de captación.
- Se combina con: Lista y búsqueda de contactos y Acciones masivas de contactos.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > selector de vista - Componente(s):
ContactViewManager.tsx,ContactViewFormDialog.tsx,ContactsView.tsx
Como funciona
- Abre el selector de vistas, inicialmente
All Contacts. - Selecciona una vista personal o compartida.
- Usa
Create New Viewpara guardar una nueva configuración. - Desde una vista propia, usa el lápiz para editarla o eliminarla.
Reglas y validaciones
- Una búsqueda escrita limpia la vista seleccionada.
- Al activar una vista se restauran sus columnas visibles.
- Las vistas compartidas muestran el autor y no ofrecen el lápiz en este selector.
Backend
- Servicios:
views,contacts(método: find/create/patch/remove)
Relaciones
- Requiere: Lista de contactos.
- Dispara / afecta: Filtros, columnas y acciones masivas de contactos.
Notas
- Por confirmar: criterios exactos que distinguen vista personal y compartida al crear.
id: create-contact modulo: contactos app: crm nombre: Crear contacto tipo: accion
Crear contacto
Da de alta un contacto con relaciones y datos configurables.
Que se logra
- Resultado: incorpora un lead con su empresa, clasificación y datos requeridos listo para seguimiento comercial.
- Caso de uso: una inmobiliaria registra un prospecto de una visita y lo relaciona con la constructora que representa.
- Se combina con: Compañías, Etiquetas y Campos personalizados.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > New Contact - Componente(s):
AddContactDialog.tsx
Como funciona
- Abre
New Contact. - Introduce
Namey los datos opcionales. - Revisa duplicados, tags, empresa y campos personalizados.
- Selecciona
Add Contact.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Name |
texto | Sí | Mínimo dos caracteres. |
Email |
No | Se valida si se proporciona. | |
Phone |
teléfono | No | Solo dígitos. |
Company |
búsqueda | No | Puede elegir o crear una compañía. |
Tags |
selección múltiple | No | Alterna etiquetas existentes. |
Reglas y validaciones
- Muestra posibles duplicados por nombre, email, teléfono o compañía.
- Los campos personalizados obligatorios bloquean el alta.
Backend
- Servicios:
contacts(método: create),companies(método: find/create),tags(método: find),custom-fields(método: find)
Relaciones
- Requiere: Compañías, Etiquetas y Campos personalizados.
- Dispara / afecta: Perfil del contacto.
Notas
- Puede abrir el perfil recién creado tras guardarlo.
id: edit-contact modulo: contactos app: crm nombre: Editar perfil de contacto tipo: accion
Editar perfil de contacto
Actualiza la información principal, avatar y tipo de un contacto.
Que se logra
- Resultado: mantiene una ficha de cliente actualizada para que ventas y atención trabajen con los mismos datos.
- Caso de uso: una academia corrige el correo y el tipo de registro de un interesado antes de enviarle seguimiento.
- Se combina con: Campos personalizados y Atajos de comunicación.
Donde esta
- Ruta:
/[orgId]/contacts/[id] - Acceso en UI:
Contact profile > Edit Contact - Componente(s):
EditContactDialog.tsx,ContactHeader.tsx
Como funciona
- Abre un perfil.
- Selecciona
Edit Contact. - Modifica detalles o
Custom Fields. - Selecciona
Save Changes.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Avatar |
archivo | No | JPEG o PNG de hasta 5 MB. |
First Name / Last Name |
texto | No | Datos de identificación. |
Email |
No | Se valida si se proporciona. | |
System Type |
selección | No | contact, lead o conversation. |
WhatsApp Username |
texto | No | Solo lectura cuando existe. |
Reglas y validaciones
- El
WhatsApp Usernamelo asigna WhatsApp y no puede editarse.
Backend
- Servicios:
contacts(método: get/patch),custom-fields(método: find)
Relaciones
- Requiere: Campos personalizados.
- Dispara / afecta: Perfil y comunicaciones del contacto.
Notas
- El avatar se carga al seleccionarlo.
id: export-contacts modulo: contactos app: crm nombre: Exportar contactos tipo: accion
Exportar contactos
Genera una exportación de contactos seleccionados o del resultado de una vista o filtro.
Que se logra
- Resultado: entrega una lista filtrada de contactos para análisis, respaldo u operaciones fuera de Apex.
- Caso de uso: un e-commerce exporta los compradores de una campaña para conciliarlos con su proveedor de envíos.
- Se combina con: Vistas guardadas de contactos y Segmentos de contactos.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > acciones masivas > Export - Componente(s):
ContactsView.tsx, diálogo de exportación integrado
Como funciona
- Selecciona contactos o trabaja con una vista o filtro activo.
- Ejecuta
Export. - Espera el estado
Exporting Contacts.... - Al finalizar, abre el archivo desde el diálogo de resultado.
Reglas y validaciones
- La interfaz restringe la exportación según el plan; el plan Free no tiene acceso.
- Puede exportar selección explícita, una vista o todos los resultados de un filtro.
- Para volúmenes grandes la interfaz informa una salida CSV.
Backend
- Servicios:
export-data(método: create)
Relaciones
- Requiere: Lista o vista de contactos.
- Dispara / afecta: Descarga de datos de contactos.
Notas
- Por confirmar: columnas definitivas y formatos elegibles por el usuario.
id: import-contacts modulo: contactos app: crm nombre: Importar contactos desde CSV tipo: accion
Importar contactos desde CSV
Carga contactos mediante un flujo de archivo, previsualización y mapeo.
Que se logra
- Resultado: convierte una base externa en contactos utilizables por el CRM con correspondencia explícita de sus datos.
- Caso de uso: una agencia carga los leads de una feria desde CSV para asignarlos y empezar su seguimiento.
- Se combina con: Etiquetas, Segmentos y Acciones masivas de contactos.
Donde esta
- Ruta:
/[orgId]/contacts - Acceso en UI:
Contacts > Import - Componente(s):
ImportContactsDialog.tsx,UploadStep.tsx,ColumnMappingStep.tsx
Como funciona
- Abre
Import. - Carga un archivo CSV.
- Revisa la vista previa y relaciona columnas.
- Inicia la importación y consulta el resultado.
Reglas y validaciones
- Los errores de la carga se presentan en el flujo de resultados.
Backend
- Servicios:
contacts,contacts-import-error-logs(método: find)
Relaciones
- Requiere: Contactos.
- Dispara / afecta: Creación masiva de contactos.
Notas
- Por confirmar: la política exacta para duplicados durante la importación.
id: conversaciones app: crm nombre: Conversaciones estado: shipped permiso: can_access_crm
Conversaciones
Inbox omnicanal para atender, organizar y automatizar comunicaciones con contactos.
Para que sirve
- Una clínica centraliza consultas de WhatsApp, Instagram y email para que recepción responda sin perder el historial del paciente.
- Una inmobiliaria asigna prospectos entrantes a asesores y relaciona cada conversación con sus oportunidades de venta.
- Un e-commerce responde preguntas, comparte productos y usa plantillas cuando necesita contactar fuera de la ventana de WhatsApp.
- Una academia distribuye conversaciones entre su equipo y asistentes de IA para atender inscripciones y seguimientos.
Que lo hace diferente
- Reúne WhatsApp, Instagram, Messenger, SMS, webchat y email en el mismo hilo, asociado al contacto del CRM.
- El panel del hilo conecta directamente con Deals, Tickets, Reservations, Meetings y Series, sin trasladar manualmente al cliente entre herramientas.
- Permite asignar conversaciones a personas o asistentes de IA, reanudar la IA con instrucciones concretas y ejecutar automatizaciones desde el compositor.
- Comparte catálogo de Productos y enlaces públicos de catálogo al responder desde el inbox.
Acceso
- Ruta principal:
/[orgId]/conversations - Como se llega:
Sidebar > Conversations - Permiso requerido:
can_access_crm; las acciones administrativas requieren admin u owner.
Alcance tecnico
- Frontend: rutas de
conversationsyConversationsView,MessageInput,ChatHeader - Backend:
conversations,conversation-messages-*,conversations-bulk-actions,conversation-ai-resume,conversation-files - Superficies publicas: ninguna confirmada
- Integraciones externas: Meta, Telnyx, S3 y asistentes de IA
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Vista de inbox omnicanal | inbox-view.md | Lista, hilo y ficha. |
| Filtrar y buscar | filter-and-search.md | Filtros y búsquedas. |
| Enviar mensajes y notas | send-message.md | Respuestas y notas. |
| Enviar adjuntos | send-attachments.md | Archivos y ubicación. |
| Respuestas citadas | quoted-replies.md | Réplicas contextualizadas. |
| Plantillas WhatsApp | whatsapp-templates.md | Mensajes aprobados. |
| Mensajes predefinidos | predefined-messages.md | Fragmentos reutilizables. |
| Escritura con IA | ai-writing-assistant.md | Borradores y mejoras. |
| Asignar conversación | assign-conversation.md | Responsable humano o IA. |
| Reanudar con IA | resume-with-ai.md | Instrucción puntual. |
| Plantillas IA | resume-templates.md | Instrucciones reutilizables. |
| Estado de conversación | conversation-status.md | Abrir, cerrar o no leída. |
| Acciones masivas | bulk-actions.md | Cambios por lote. |
| Detalles del contacto | conversation-details.md | Relaciones CRM. |
| Ejecutar automatización | conversation-automation.md | Ejecuta flujos desde el hilo. |
| Bloquear y cortar contexto | manage-conversation-access.md | Acciones administrativas. |
| Enviar productos | send-products.md | Productos y catálogos. |
Relaciones
- Depende de: Contactos, Canales de mensajería, Productos y Automatizaciones.
- Usado por: Deals, Tickets, Reservations, Meetings y asistentes de IA.
Limitaciones y notas
- Meta limita mensajes libres a una ventana de 24 horas.
id: ai-writing-assistant modulo: conversaciones app: crm nombre: Asistente de escritura con IA tipo: integracion
Asistente de escritura con IA
Genera y mejora borradores de respuestas dentro del compositor.
Que se logra
- Resultado: el agente obtiene un borrador basado en el hilo reciente y el contacto, pero conserva la revisión y el envío final.
- Caso de uso: una inmobiliaria transforma la nota breve de un asesor en una respuesta clara para un prospecto que compara inmuebles.
- Se combina con: Enviar mensajes y Asistentes de IA.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
MessageInput > icono de destellos - Componente(s):
ConversationMessageAIAssistant.tsx
Como funciona
- Abrir una conversación y, opcionalmente, escribir un borrador.
- Elegir
Draft Replyo una acción rápida. - Para una petición libre, abrir
Custom Prompt. - Revisar el resultado y elegir
Applyo descartarlo.
Reglas y validaciones
Fix Spelling,Fix Grammar,Improve,ShortenyExpandrequieren texto ya escrito.
Backend
- Servicios:
ai-assistant-system(método: create) - Efectos: usa el contexto reciente del hilo y del contacto.
Relaciones
- Requiere: conversación seleccionada.
- Dispara / afecta: Enviar mensajes.
Notas
- La sugerencia no se envía hasta que el usuario la aplica y envía el mensaje.
id: assign-conversation modulo: conversaciones app: crm nombre: Asignar conversación tipo: accion
Asignar conversación
Asigna o desasigna una conversación a un miembro del equipo o a un asistente de IA.
Que se logra
- Resultado: cada hilo tiene un responsable humano o IA identificable, evitando que la atención quede sin seguimiento.
- Caso de uso: un concesionario envía las consultas de prueba de manejo a un asesor y delega preguntas repetitivas a su asistente de IA.
- Se combina con: Reanudar conversación con IA, Automatizaciones y Enrutamiento de llamadas.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
ChatHeader > icono de usuariooicono de bot - Componente(s):
ChatHeader.tsx
Como funciona
- Abrir una conversación.
- Elegir el icono de usuario o de bot.
- Buscar y seleccionar un responsable o asistente, o elegir desasignar.
Reglas y validaciones
- El selector individual de IA excluye asistentes de tipo
ai-chat. - Un conflicto de IA asignada con autoasignación desactivada exige reactivarla o desasignar la IA.
Backend
- Servicios:
conversations,ai-assistants,user-presence(método: find/patch)
Relaciones
- Requiere: miembros de organización o asistentes de IA.
- Dispara / afecta: enrutamiento y autoasignación.
Notas
Takeover and Sendtambién puede asignar la conversación al usuario actual.
id: bulk-actions modulo: conversaciones app: crm nombre: Acciones masivas de conversaciones tipo: accion
Acciones masivas de conversaciones
Actualiza el estado o el asistente de IA de varias conversaciones seleccionadas.
Que se logra
- Resultado: se reorganiza una cola completa sin abrir hilo por hilo, manteniendo una decisión consistente para el grupo seleccionado.
- Caso de uso: una academia asigna su asistente de admisiones a todas las consultas abiertas de una campaña antes de iniciar el horario nocturno.
- Se combina con: Filtrar y buscar conversaciones, Gestionar estado de conversación y Asignar conversación.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > List view > seleccionar > Bulk Actions - Componente(s):
BulkChangeStatusDialog.tsx,BulkChangeAiAssistantDialog.tsx,BulkMoveConversationsDialog.tsx
Como funciona
- Cambiar a
List view. - Seleccionar filas o usar selección total del filtro actual.
- Abrir
Bulk Actions. - Elegir cambio de estado, asistente de IA o movimiento de pipeline y confirmar.
Reglas y validaciones
- Para cambiar estado se debe elegir al menos una conversación y el estado de destino.
- El asistente puede desasignarse eligiendo
None (unassign).
Backend
- Servicios:
conversations-bulk-actions(método: create)
Relaciones
- Requiere: filtros del inbox, pipelines o asistentes de IA según la acción.
- Dispara / afecta: estado, pipeline y asignación de conversaciones.
Notas
- Por confirmar: las reglas exactas de permisos para mover entre pipelines no se centralizan en los componentes revisados.
id: conversation-automation modulo: conversaciones app: crm nombre: Ejecutar automatización desde conversación tipo: automatizacion
Ejecutar automatización desde conversación
Inicia una automatización disponible usando la conversación abierta como contexto.
Que se logra
- Resultado: el equipo desencadena un proceso ya diseñado desde el caso que lo necesita, conservando la conversación como referencia.
- Caso de uso: un despacho legal inicia desde el chat el flujo que crea una tarea de revisión cuando un cliente envía documentos.
- Se combina con: Automatizaciones, Detalles del contacto y Enviar mensajes.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
MessageInput > Run automation - Componente(s):
ConversationAutomationRunPopover.tsx
Como funciona
- Abrir una conversación.
- Elegir
Run automation. - Seleccionar una automatización disponible.
- Confirmar la ejecución.
Reglas y validaciones
- No se pueden ejecutar automatizaciones inactivas ni bloqueadas por ciclo.
- La acción solo está disponible para canales con servicio de mensajes compatible.
Backend
- Servicios:
automations,automations-webhooks(método: find/create)
Relaciones
- Requiere: Automatizaciones.
- Dispara / afecta: el flujo configurado por la automatización elegida.
Notas
- La acción se ofrece como herramienta del compositor.
id: conversation-details modulo: conversaciones app: crm nombre: Consultar detalles del contacto tipo: vista
Consultar detalles del contacto
Abre un panel lateral con información y relaciones del contacto de la conversación.
Que se logra
- Resultado: quien atiende puede consultar y gestionar el contexto comercial y operativo del contacto sin salir del hilo.
- Caso de uso: una inmobiliaria abre los Deals de un prospecto desde su chat para continuar la negociación con el historial a la vista.
- Se combina con: Contactos, Deals, Tickets, Reservations y Meetings.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
ChatHeader > More options - Componente(s):
ChatHeader.tsx,ConversationSheet.tsx
Como funciona
- Abrir el menú
More options. - Expandir
Tags,Fields,Deals,Tickets,Reservations,Meetings,SourcesoSeries. - Desde la ficha se puede abrir o editar el contacto y gestionar relaciones disponibles.
Reglas y validaciones
- Solo una sección expandida permanece abierta a la vez.
- Reservations depende de permiso específico de consulta; su creación requiere permiso de creación.
Backend
- Servicios:
contacts,deals,tickets,reservations,meetings,series(método: find/get/create/patch)
Relaciones
- Requiere: Contactos.
- Dispara / afecta: relaciones CRM desde el contexto de la conversación.
Notas
ConversationSheetofrece una variante con chat y ficha del contacto sin abandonar una lista o pipeline.
id: conversation-status modulo: conversaciones app: crm nombre: Gestionar estado de conversación tipo: accion
Gestionar estado de conversación
Abre, cierra o marca como no leída una conversación desde su cabecera.
Que se logra
- Resultado: la cola refleja qué casos requieren atención, cuáles terminaron y cuáles deben volver a revisarse.
- Caso de uso: un restaurante cierra una conversación al confirmar la reserva y la marca no leída si necesita que el turno siguiente la verifique.
- Se combina con: Filtrar y buscar conversaciones, Acciones masivas de conversaciones y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
ChatHeader > Mark as Closed,Mark as Openo icono de correo - Componente(s):
ChatHeader.tsx
Como funciona
- Abrir el hilo.
- Elegir
Mark as ClosedoMark as Open. - Usar el icono de correo si se desea marcar como no leída.
Reglas y validaciones
- Un cambio de estado puede hacer desaparecer la conversación si no coincide con el filtro activo.
Backend
- Servicios:
conversations(método: patch) - Efectos: dispara automatizaciones de actualización de conversación.
Relaciones
- Requiere: inbox.
- Dispara / afecta: filtros y automatizaciones.
Notas
- El estado no elimina el historial.
id: filter-and-search modulo: conversaciones app: crm nombre: Filtrar y buscar conversaciones tipo: vista
Filtrar y buscar conversaciones
Permite reducir la lista del inbox por estado, canal, asignación, etiquetas y actividad, además de buscar conversaciones y mensajes.
Que se logra
- Resultado: se localizan hilos o mensajes relevantes y se forma una cola de trabajo basada en estado, canal o responsable.
- Caso de uso: una inmobiliaria filtra conversaciones abiertas y sin asignar para repartir nuevos prospectos antes de que se enfríen.
- Se combina con: Acciones masivas de conversaciones y Gestionar estado de conversación.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > Filter bar - Componente(s):
ConversationsView.tsx,FilterBar.tsx
Como funciona
- Abrir el inbox.
- Elegir estado
Open,Closedo todos. - Filtrar por canal, responsable, etiquetas, no leídas o espera de respuesta.
- Escribir nombre, teléfono o
@usernameenSearch conversations. - Usar la búsqueda de mensajes cuando se requiera localizar contenido del hilo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Estado | selección | No | open, closed o todos. |
| Canal | selección | No | Incluye canales de conversación disponibles. |
| Responsable | selección | No | Incluye usuario actual, equipo y sin asignar. |
| Etiquetas | selección múltiple | No | Etiquetas del contacto. |
| Buscar conversaciones | texto | No | Busca nombre, teléfono y usuario de WhatsApp. |
Reglas y validaciones
- La búsqueda de mensajes requiere al menos tres caracteres.
- Un
@usernamepuede buscarse con o sin@.
Backend
- Servicios:
conversations(método: find) - Hooks relevantes: búsqueda por término.
Relaciones
- Requiere: Contactos y Canales de mensajería.
- Dispara / afecta: la selección usada por acciones masivas.
Notas
- Los filtros determinan el conjunto usado por
Select allen la vista de lista.
id: inbox-view modulo: conversaciones app: crm nombre: Vista de inbox omnicanal tipo: vista
Vista de inbox omnicanal
Muestra las conversaciones de WhatsApp, Instagram, Messenger, SMS, webchat y email en un inbox de tres paneles.
Que se logra
- Resultado: el equipo consulta y atiende los distintos canales desde una sola cola y conserva el contexto del contacto.
- Caso de uso: una clínica hace que recepción vea en el mismo lugar el mensaje de WhatsApp de un paciente y su correo de seguimiento.
- Se combina con: Detalles del contacto, Asignar conversación y Canales de mensajería.
Donde esta
- Ruta:
/[orgId]/conversationsy/[orgId]/conversations/[id] - Acceso en UI:
Sidebar > Conversations - Componente(s):
ConversationsViewWithPipeline.tsx,ConversationsView.tsx
Como funciona
- Abrir
Conversationsdesde la barra lateral. - Elegir una conversación de la lista para abrir el hilo.
- Usar el panel derecho desde
More optionspara revisar datos del contacto. - En móvil, usar la flecha de regreso para volver a la lista.
Reglas y validaciones
- Si no hay una conversación elegida se muestra el estado
No conversation selected. - La identidad puede mostrar nombre, perfil de WhatsApp,
@usernameo teléfono, según la información disponible.
Backend
- Servicios:
conversations(método: find/get/patch) - Efectos: aplica permisos de organización y oculta registros eliminados.
Relaciones
- Requiere: Canales de mensajería.
- Dispara / afecta: Contactos, Deals, Tickets, Reservations, Meetings y Series.
Notas
- La ruta con identificador y la ruta principal comparten la misma experiencia de inbox.
id: manage-conversation-access modulo: conversaciones app: crm nombre: Bloquear, eliminar y cortar contexto tipo: accion
Bloquear, eliminar y cortar contexto
Ofrece acciones administrativas sobre una conversación y su contexto de IA.
Que se logra
- Resultado: los administradores detienen contactos no deseados, retiran hilos de la vista operativa y delimitan qué historial puede usar la IA.
- Caso de uso: un e-commerce bloquea un número que reporta spam y corta el contexto anterior antes de que la IA atienda una nueva consulta legítima.
- Se combina con: Asignar conversación, Reanudar conversación con IA y Canales de mensajería.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
ChatHeader > iconos de escudo, papelera y tijeras - Componente(s):
ChatHeader.tsx
Como funciona
- Abrir una conversación.
- Como admin u owner, usar el escudo para bloquear o desbloquear y la papelera para eliminar.
- Usar las tijeras para definir desde dónde reiniciar la memoria de IA.
Reglas y validaciones
- Solo admins y owners ven las acciones de bloquear y eliminar.
- El bloqueo de WhatsApp puede volver a activarse desde Meta si el contacto bloqueó o reportó el número.
Backend
- Servicios:
conversations(método: patch/remove) - Hooks relevantes: corte de contexto de IA.
Relaciones
- Requiere: permisos administrativos para bloqueo y eliminación.
- Dispara / afecta: envío de mensajes y contexto de IA.
Notas
- La eliminación sigue el comportamiento de ocultar del sistema, no borra necesariamente los mensajes.
id: predefined-messages modulo: conversaciones app: crm nombre: Mensajes predefinidos tipo: configuracion
Mensajes predefinidos
Administra fragmentos reutilizables para completar el compositor.
Que se logra
- Resultado: el equipo inserta respuestas consistentes con variables del contacto, responsable u organización sin volver a redactarlas.
- Caso de uso: una academia guarda una respuesta de requisitos de matrícula y la adapta automáticamente al nombre de cada aspirante.
- Se combina con: Enviar mensajes y Plantillas de instrucciones para IA.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
MessageInput > icono de mensajes predefinidoso escribir/ - Componente(s):
PredefinedMessagesDialog.tsx
Como funciona
- Abrir el diálogo y elegir
New. - Definir título, tipo y contenido; opcionalmente insertar variables.
- Guardar, buscar o filtrar mensajes existentes.
- Elegir
Selectpara llenar el compositor.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Title | texto | Sí | Identifica el fragmento. |
| Type | selección | No | Texto, imagen, video, documento, audio o ubicación. |
| Content | área de texto | Sí | Admite variables del contacto, responsable y organización. |
Reglas y validaciones
- Los valores vacíos de variables se reemplazan por texto vacío; los desconocidos se conservan para editarse.
Backend
- Servicios:
conversation-predefined-messages(método: find/create/patch/remove)
Relaciones
- Requiere: conversación abierta para sustituir variables.
- Dispara / afecta: Enviar mensajes.
Notas
- La sustitución de variables se realiza al seleccionar el mensaje.
id: quoted-replies modulo: conversaciones app: crm nombre: Responder citando un mensaje tipo: accion
Responder citando un mensaje
Permite contestar un mensaje específico conservando su referencia visual en el inbox.
Que se logra
- Resultado: el contacto y el equipo identifican con precisión cuál mensaje se está respondiendo dentro de un hilo activo.
- Caso de uso: un restaurante cita la pregunta sobre alergias de un comensal y responde sin confundirla con otra solicitud de reserva.
- Se combina con: Enviar mensajes y Canales de mensajería.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > mensaje > Reply - Componente(s):
ChatMessages.tsx,MessageInput.tsx
Como funciona
- Abrir el hilo.
- Elegir
Replyen el mensaje que se quiere citar. - Escribir la respuesta en el compositor.
- Enviar o cancelar la cita desde la franja
Replying to….
Reglas y validaciones
- Está disponible para WhatsApp e Instagram.
- En Instagram Login la cita se conserva dentro de AchieveApex, pero el destinatario recibe un DM normal.
Backend
- Servicios:
conversation-messages-whatsapp,conversation-messages-instagram(método: create) - Efectos: WhatsApp recibe la referencia del mensaje original.
Relaciones
- Requiere: Enviar mensajes y una conversación WhatsApp o Instagram.
- Dispara / afecta: historial del hilo.
Notas
- Las citas recibidas se muestran como una vista previa encima de la burbuja.
id: resume-templates modulo: conversaciones app: crm nombre: Plantillas de instrucciones para IA tipo: configuracion
Plantillas de instrucciones para IA
Crea y mantiene instrucciones reutilizables para reanudar conversaciones con un asistente concreto.
Que se logra
- Resultado: el equipo aplica instrucciones recurrentes de forma uniforme al devolver hilos a un asistente de IA.
- Caso de uso: una agencia guarda la instrucción de pedir el presupuesto del cliente antes de que la IA retome cualquier consulta comercial.
- Se combina con: Reanudar conversación con IA y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Resume with AI > instruction > / > Manage - Componente(s):
ResumeTemplatesDialog.tsx
Como funciona
- Seleccionar un asistente en
Resume with AI. - Escribir
/y elegirManage. - Crear, editar o eliminar una plantilla.
- Elegirla para insertar su instrucción.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Title | texto | Sí | Nombre corto. |
| Instruction | área de texto | Sí | Instrucción reutilizable. |
Reglas y validaciones
- Las plantillas están separadas por asistente y organización.
Backend
- Servicios:
ai-conversation-resume-templates(método: find/create/patch/remove)
Relaciones
- Requiere: Reanudar conversación con IA.
- Dispara / afecta: respuestas de IA.
Notas
- También aparecen en el nodo de automatización de reanudación cuando se fija un asistente.
id: resume-with-ai modulo: conversaciones app: crm nombre: Reanudar conversación con IA tipo: accion
Reanudar conversación con IA
Devuelve una conversación a una IA con una instrucción puntual, de inmediato o al siguiente mensaje entrante.
Que se logra
- Resultado: una conversación que atendía una persona vuelve a ser gestionada por una IA con una indicación específica y control sobre su contexto.
- Caso de uso: una clínica pide a su asistente retomar un hilo al recibir el próximo mensaje y confirmar los documentos necesarios para una cita.
- Se combina con: Asignar conversación, Plantillas de instrucciones para IA y Asistentes de IA.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
ChatHeader > icono de bot > Resume with AI… - Componente(s):
ResumeWithAiDialog.tsx
Como funciona
- Elegir
Resume with AI…. - Seleccionar el asistente y escribir una instrucción.
- Configurar
Send a message nowy, si aplica,Reset AI context. - Confirmar
Resume with AI.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| AI Assistant | selección | Sí | Asistente conversacional. |
| Resume instruction | área de texto | Sí | Admite plantillas con /. |
| Send a message now | interruptor | No | Envía una respuesta de IA inmediatamente. |
| Reset AI context | interruptor | No | Reinicia el contexto de IA. |
Reglas y validaciones
- Sin envío inmediato, la instrucción queda armada para el siguiente mensaje del contacto.
Backend
- Servicios:
conversation-ai-resume,ai-conversation-follow-up(método: create) - Hooks relevantes: reanudar conversación.
Relaciones
- Requiere: Asistentes de IA.
- Dispara / afecta: asignación de IA y respuestas automatizadas.
Notas
- No equivale a reglas automáticas de seguimiento del asistente.
id: send-attachments modulo: conversaciones app: crm nombre: Enviar adjuntos y ubicación tipo: accion
Enviar adjuntos y ubicación
Permite adjuntar imágenes, video, documentos, audio o ubicación a un mensaje del inbox.
Que se logra
- Resultado: la respuesta incluye el archivo o ubicación que necesita el contacto, conservado en el historial del hilo.
- Caso de uso: una agencia envía a un cliente una propuesta en PDF por WhatsApp y la conserva junto a los mensajes de aprobación.
- Se combina con: Enviar mensajes y Canales de mensajería.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > hilo activo > MessageInput > menú de adjuntos - Componente(s):
MessageInput.tsx
Como funciona
- Abrir una conversación y permanecer en
Message. - Elegir el tipo de adjunto desde la barra del compositor, pegarlo o arrastrarlo.
- Revisar el adjunto y enviar el mensaje.
- Para ubicación, seleccionar la opción disponible en el compositor.
Reglas y validaciones
- Las notas internas no aceptan arrastrar, pegar ni adjuntar archivos.
- Las imágenes admitidas son JPEG y PNG hasta 5 MB; los videos MP4 hasta 16 MB.
- La ubicación no está disponible en Instagram.
Backend
- Servicios:
conversation-files(método: create),conversation-messages-whatsapp,conversation-messages-instagram,conversation-messages-webchat,conversation-messages-sms(método: create) - Hooks relevantes: procesamiento de media entrante y saliente.
- Efectos: los archivos de SMS y webchat se conservan para mostrarlos en el hilo.
Relaciones
- Requiere: Canales de mensajería.
- Dispara / afecta: historial de conversación.
Notas
- El audio se limita a 16 MB. Por confirmar: los límites de documentos y otros formatos no están centralizados en la interfaz revisada.
id: send-message modulo: conversaciones app: crm nombre: Enviar mensajes y notas tipo: accion
Enviar mensajes y notas
Envía respuestas de texto o notas internas desde el hilo de una conversación.
Que se logra
- Resultado: el equipo responde al contacto por su canal y deja decisiones o contexto interno sin exponerlo al cliente.
- Caso de uso: un despacho legal responde una consulta por email y añade una
Notepara que el abogado vea la información antes de continuar. - Se combina con: Asignar conversación, Automatizaciones y Estado de conversación.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > hilo activo > MessageInput - Componente(s):
MessageInput.tsx
Como funciona
- Abrir una conversación.
- Elegir
Messagepara contactar al cliente oNotepara una nota interna. - Escribir el contenido.
- En escritorio, usar Enter para enviar o Shift+Enter para una línea nueva; en móvil usar
Send. - Cuando no hay responsable, elegir
SendoTakeover and Send.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Message / Note | pestañas | Sí | La nota no se entrega al contacto. |
| Mensaje | área de texto | Sí | Puede contener saltos de línea. |
| Takeover and Send | acción | No | Asigna la conversación al usuario actual antes de enviar. |
Reglas y validaciones
- En WhatsApp, Instagram y Messenger, los mensajes libres requieren que la ventana de 24 horas esté vigente.
- Las notas pueden enviarse fuera de esa ventana.
- SMS y webchat no tienen esa restricción de ventana.
Backend
- Servicios:
conversation-messages-whatsapp,conversation-messages-instagram,conversation-messages-webchat,conversation-messages-sms,crm-emails(método: create) - Efectos: entrega por el canal correspondiente y actualiza el hilo.
Relaciones
- Requiere: una conversación y un canal conectado.
- Dispara / afecta: automatizaciones y estado de la conversación.
Notas
- El contador junto a
Noteindica el tiempo restante de la ventana de Meta.
id: send-products modulo: conversaciones app: crm nombre: Enviar productos desde el inbox tipo: accion
Enviar productos desde el inbox
Envía productos del catálogo CRM como mensajes individuales o enlaces públicos de catálogo.
Que se logra
- Resultado: el contacto recibe productos o una selección navegable desde la misma conversación donde expresó su interés.
- Caso de uso: una tienda de muebles comparte por WhatsApp una categoría de sofás con varios productos para que el cliente compare opciones.
- Se combina con: Productos, Catálogos públicos y Enviar mensajes.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
MessageInput > icono de paquete - Componente(s):
SendProductDialog.tsx
Como funciona
- Abrir el panel de productos.
- Elegir producto único, múltiples individuales, enlace de catálogo o categoría.
- Seleccionar productos o categoría, configurar la previsualización y enviar.
Reglas y validaciones
- El enlace compartido de varios productos requiere al menos dos productos y un catálogo público.
- SMS se envía solo como texto.
- Admins y owners pueden activar un enlace de catálogo o crear plantillas desde el panel.
Backend
- Servicios:
products,product-categories,catalog-links, servicios de mensajes del canal (método: find/create)
Relaciones
- Requiere: Productos y Catálogos públicos.
- Dispara / afecta: Enviar mensajes.
Notas
- No es mensajería nativa de catálogo de WhatsApp.
id: whatsapp-templates modulo: conversaciones app: crm nombre: Enviar plantillas de WhatsApp tipo: accion
Enviar plantillas de WhatsApp
Permite buscar, previsualizar y enviar plantillas aprobadas de WhatsApp desde una conversación.
Que se logra
- Resultado: se puede volver a contactar por WhatsApp usando contenido aprobado cuando no se permite un mensaje libre.
- Caso de uso: un e-commerce envía una plantilla de actualización de pedido a un comprador que escribió el día anterior.
- Se combina con: Crear plantillas de WhatsApp y Enviar mensajes.
Donde esta
- Ruta:
/[orgId]/conversations - Acceso en UI:
Conversations > conversación WhatsApp > MessageInput > icono de plantilla - Componente(s):
MessageTemplatesDialog.tsx
Como funciona
- Abrir una conversación de WhatsApp.
- Elegir el icono de plantilla o
Send Template Message. - Buscar y seleccionar una plantilla aprobada.
- Revisar encabezado, cuerpo, pie y variables.
- Elegir
Send WhatsApp.
Reglas y validaciones
- Solo aparecen plantillas
APPROVEDdisponibles para conversaciones. - Es la alternativa disponible para WhatsApp cuando vence la ventana de 24 horas.
Backend
- Servicios:
conversation-messages-whatsapp(método: create),whatsapp-channels(método: find) - Hooks relevantes: envío de plantilla de WhatsApp.
Relaciones
- Requiere: Canal de WhatsApp y plantillas aprobadas.
- Dispara / afecta: envío de mensajes del inbox.
Notas
- No se usa para Instagram ni Messenger.
id: deals app: crm nombre: Deals estado: shipped permiso: permisos granulares de deals
Deals
Organiza oportunidades comerciales por pipeline, etapa, responsable y valor.
Para que sirve
- Una inmobiliaria sigue cada negocio desde el primer interés hasta la compra o pérdida.
- Una agencia separa ventas nuevas y renovaciones en pipelines con acceso por equipo.
- Un concesionario calcula el valor de una oportunidad a partir de los vehículos o servicios negociados.
- Una consultora convierte propuestas aceptadas en oportunidades ganadas vinculadas a sus estimates.
- Una academia registra motivos de pérdida para corregir su proceso de admisiones.
Que lo hace diferente
- Cada deal relaciona el contacto, la compañía, los productos, la actividad y la conversación comercial en una sola ficha.
- Los pipelines pueden restringirse por miembro, además de aplicar los permisos granulares de deals.
- El sistema conserva automáticamente la duración y los cambios de cada etapa.
- Un deal ganado puede tratar los estimates vinculados y sincronizar su valor comercial.
- Los documentos comerciales abarcan estimates, invoices y Smart Links desde el contexto de la oportunidad.
- Los watchers del deal se convierten en sugerencias de invitados al crear actividades sincronizables.
Acceso
- Ruta principal:
/[orgId]/deals - Como se llega:
Sidebar > CRM > Deals - Permiso requerido: permisos granulares de deals; la configuración de acceso de pipelines requiere propietario o administrador
Alcance tecnico
- Frontend: lista, tablero y detalle;
DealsView,PipelineView,DealSidebaryCRMMainContent - Backend:
deals,pipelines,pipeline-stages,pipeline-members,deal-products,deal-watchers,deal-stage-history,deal-duplicate,deals-bulk-actions,deals-lost-reasonsyowner-changes - Superficies publicas: ninguna
- Integraciones externas: SMS, WhatsApp, Instagram, voz y S3
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Lista y busqueda | deal-list.md | Consulta y filtra oportunidades. |
| Tablero kanban | deal-kanban.md | Gestiona deals por columna de etapa. |
| Crear deal | create-deal.md | Crea oportunidades y sus relaciones. |
| Editar deal | edit-deal.md | Actualiza los datos de la oportunidad. |
| Cambiar etapa | deal-stage-change.md | Mueve la oportunidad entre etapas. |
| Marcar ganado | deal-won.md | Cierra como ganada y trata estimates. |
| Marcar perdido | deal-lost.md | Registra una perdida con motivo opcional. |
| Gestión de pipelines | pipeline-management.md | Crea, configura, restringe y elimina pipelines. |
| Gestión de etapas | pipeline-stages.md | Administra columnas, orden y traslado al borrar una etapa. |
| Productos y totales | deal-products.md | Vincula productos que determinan el valor comercial. |
| Watchers | deal-watchers.md | Agrega contactos observadores e invitados sugeridos. |
| Historial de etapas | deal-stage-history.md | Registra permanencia y cambios entre etapas. |
| Duplicar deal | duplicate-deal.md | Crea una copia con relaciones opcionales. |
| Acciones masivas | deals-bulk-actions.md | Opera varios deals por selección, vista o filtro. |
| Filtros, búsqueda y vistas | deal-filters-views.md | Filtra, busca, ordena y guarda vistas. |
| Cambio de responsable | deal-owner-change.md | Reasigna deals y conserva su trazabilidad. |
| Motivos de pérdida | lost-reasons.md | Configura los motivos disponibles al perder un deal. |
| Campos personalizados | deal-custom-fields.md | Amplía formularios y columnas de deals. |
| Registros relacionados | deal-related-records.md | Reúne actividad, notas, archivos y conversación. |
| Documentos comerciales y enlaces | deal-sales-documents.md | Vincula estimates, invoices y smart links. |
Relaciones
- Depende de: Contactos, Compañías, Productos, Currencies y Estimates.
- Usado por: Automatizaciones, reportes comerciales y Actividades.
Limitaciones y notas
- Los pipelines restringidos se ocultan de selectores para miembros sin acceso, aunque un deal permitido puede seguir visible.
- El valor manual se bloquea cuando el deal tiene productos asociados.
id: create-deal modulo: deals app: crm nombre: Crear deal tipo: accion
Crear deal
Crea una oportunidad vinculada a contacto, compañía, pipeline y etapa.
Que se logra
- Resultado: formaliza un interés comercial como una oportunidad con valor, responsable y fecha de cierre esperada.
- Caso de uso: una agencia convierte la solicitud de un cliente en un deal con el servicio cotizado y el ejecutivo asignado.
- Se combina con: Contactos, Compañías, Pipelines y Productos.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > New Deal - Componente(s):
AddDealButton.tsx,NewDealForm.tsx
Como funciona
- Selecciona
New Deal. - Busca o crea contacto y compañía.
- Indica nombre, valor, currency, pipeline, etapa, fecha y responsable.
- Selecciona
Create Deal.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Contact |
búsqueda | Sí | Permite crear uno. |
Deal Value |
número | Sí | Requiere currency. |
Pipeline / Pipeline Stage |
selección | No | Puede venir fijado por columna. |
Expected Close Date |
fecha | No | Fecha prevista de cierre. |
Reglas y validaciones
- El contacto es obligatorio y los campos personalizados requeridos bloquean el guardado.
Backend
- Servicios:
deals,contacts,companies(método: create/find)
Relaciones
- Requiere: Contactos, Compañías y Currencies.
- Dispara / afecta: Pipeline seleccionado.
Notas
- Phone y Email editados tras seleccionar contacto se guardan en ese contacto.
id: deal-custom-fields modulo: deals app: crm nombre: Campos personalizados de deals tipo: configuracion
Campos personalizados de deals
Incorpora información configurada para la organización al crear, editar y listar deals.
Que se logra
- Resultado: incorpora los criterios propios de calificación y entrega al proceso de cada oportunidad.
- Caso de uso: una empresa de software registra licencias, fecha de renovación y nivel de prioridad en cada deal.
- Se combina con: Crear deal, Editar deal y Filtros, búsqueda y vistas.
Donde esta
- Ruta:
/[orgId]/dealsy/[orgId]/deals/[id] - Acceso en UI:
New DealoEdit Deal > Custom Fields; selector de columnas deList View - Componente(s):
DealCustomFieldsInput.tsx,NewDealForm.tsx,EditDealDialog.tsx,DealListView.tsx
Como funciona
- Configura los campos para la entidad deal desde el módulo de campos personalizados.
- Completa los campos al crear o editar un deal.
- En
List View, usa el selector de columnas para mostrar u ocultar los campos disponibles.
Reglas y validaciones
- Los campos personalizados requeridos bloquean la creación del deal.
- La lista recupera los campos configurados para la organización y los puede incluir en una vista guardada.
Backend
- Servicios:
custom-fields(método: find),deals(método: create/get/patch) - Hooks relevantes solo si cambian el comportamiento visible: la consulta rápida de deals incorpora los valores preparados para la lista.
- Efectos: amplía los datos disponibles en deals y en sus vistas.
Relaciones
- Requiere: Campos personalizados.
- Dispara / afecta: Crear, editar, listar y guardar vistas de deals.
Notas
- Por confirmar: el acceso exacto a la configuración global de campos personalizados para deals.
id: deal-filters-views modulo: deals app: crm nombre: Filtros, búsqueda y vistas de deals tipo: vista
Filtros, búsqueda y vistas de deals
Permite limitar el listado o kanban por pipeline, estado, responsable, texto y vistas guardadas.
Que se logra
- Resultado: convierte el pipeline o la lista en una cola de trabajo enfocada para cada responsable comercial.
- Caso de uso: una inmobiliaria guarda una vista de oportunidades abiertas que vencen este mes para revisarla semanalmente.
- Se combina con: Tablero kanban de deals y Acciones masivas de deals.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > barra superior - Componente(s):
DealsView.tsx,DealListView.tsx,PipelineView.tsx,EntityViewManager.tsx
Como funciona
- Selecciona un pipeline y el estado
Open,Won,LostoAll. - Elige un responsable o
All owners. - Escribe en la búsqueda; se aplica después de una breve espera.
- Cambia entre
Pipeline ViewyList View. - Guarda o selecciona una vista desde el administrador de vistas y ajusta las columnas de la lista.
Reglas y validaciones
- Una búsqueda activa cancela la selección de una vista; una vista activa deshabilita la búsqueda.
- El filtro de responsable y el pipeline seleccionado se conservan localmente por organización.
- La preferencia entre vista kanban y lista se guarda en el perfil del usuario.
- La lista permite ordenar por nombre y fecha de creación; la paginación ofrece hasta 50 filas por página.
Backend
- Servicios:
deals(método: find),pipelines(método: find),custom-fields(método: find),entity-views(método: find/create/patch/remove) - Hooks relevantes solo si cambian el comportamiento visible: la consulta rápida incluye datos relacionados necesarios para lista y kanban.
- Efectos: determina los registros que se pueden seleccionar, exportar o procesar en masa.
Relaciones
- Requiere: Pipelines, miembros de organización, campos personalizados y vistas de entidad.
- Dispara / afecta: Acciones masivas y exportación.
Notas
- Por confirmar: los operadores de filtro avanzados que una vista guardada puede admitir.
id: deal-kanban modulo: deals app: crm nombre: Tablero kanban de deals tipo: vista
Tablero kanban de deals
Visualiza deals como tarjetas agrupadas por la etapa del pipeline.
Que se logra
- Resultado: hace visible el avance de cada oportunidad y permite moverla al siguiente punto del proceso comercial.
- Caso de uso: un concesionario detecta en qué etapa se estancan las cotizaciones y reasigna las tarjetas prioritarias.
- Se combina con: Cambio de etapa del deal e Historial de etapas.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > Pipeline view - Componente(s):
PipelineView.tsx,DealCard.tsx
Como funciona
- Selecciona un pipeline.
- Revisa las columnas de etapas.
- Arrastra tarjetas, abre un deal o selecciónalo para acciones masivas.
Reglas y validaciones
- Al mover a una etapa perdida se solicita un motivo opcional.
Backend
- Servicios:
deals,pipeline-stages,deal-stage-history(método: find/patch/create)
Relaciones
- Requiere: Pipelines y etapas.
- Dispara / afecta: Cambio de etapa e historial.
Notas
- Admite carga progresiva por columna y selección con Shift.
id: deal-list modulo: deals app: crm nombre: Lista y búsqueda de deals tipo: vista
Lista y búsqueda de deals
Consulta oportunidades por pipeline, estado, responsable y texto de búsqueda.
Que se logra
- Resultado: encuentra las oportunidades que requieren atención y el contexto de su cuenta o contacto.
- Caso de uso: una inmobiliaria revisa los negocios abiertos de un asesor antes de su reunión diaria.
- Se combina con: Filtros, búsqueda y vistas de deals y Perfil del deal.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Sidebar > CRM > Deals - Componente(s):
DealsView.tsx,DealListView.tsx
Como funciona
- Abre
Deals. - Cambia filtros y busca por deal, contacto o compañía.
- Selecciona un resultado para abrir el perfil.
Reglas y validaciones
- Un pipeline restringido puede no aparecer para un miembro sin acceso.
Backend
- Servicios:
deals,pipelines(método: find)
Relaciones
- Requiere: Contactos y Compañías.
- Dispara / afecta: Perfil del deal.
Notas
- La búsqueda cubre nombre de deal, contacto y compañía.
id: deal-lost modulo: deals app: crm nombre: Marcar deal como perdido tipo: accion
Marcar deal como perdido
Cierra un deal como perdido y permite registrar el motivo.
Que se logra
- Resultado: cierra una oportunidad sin éxito con información reutilizable para entender pérdidas comerciales.
- Caso de uso: una inmobiliaria registra que un comprador eligió otra propiedad y conserva el motivo para análisis posterior.
- Se combina con: Gestión de motivos de pérdida y Acciones masivas de deals.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Lost - Componente(s):
LostReasonDialog.tsx
Como funciona
- Selecciona
Losto mueve el deal a una etapa perdida. - Elige un motivo,
OtheroSkip. - Guarda el motivo o continúa sin él.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Lost reason |
selección | No | Motivos de la organización u Other. |
Custom reason |
texto largo | No | Disponible para Other. |
Reglas y validaciones
- El motivo no es obligatorio.
- Propietarios y administradores pueden crear un motivo en línea.
Backend
- Servicios:
deals,deals-lost-reasons(método: patch/find/create)
Relaciones
- Requiere: Motivos de pérdida.
- Dispara / afecta: Estado y timeline del deal.
Notas
- En un deal ya perdido se puede agregar o modificar el motivo.
id: deal-owner-change modulo: deals app: crm nombre: Cambio de responsable del deal tipo: accion
Cambio de responsable del deal
Asigna uno o varios deals a otro miembro de la organización.
Que se logra
- Resultado: transfiere responsabilidad comercial conservando el registro de quién atendió la oportunidad.
- Caso de uso: una agencia redistribuye la cartera de un ejecutivo ausente entre los demás miembros del equipo.
- Se combina con: Acciones masivas de deals y Filtros por responsable.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > seleccionar deals > Bulk Actions > Change Owner - Componente(s):
BulkChangeOwnerDialog.tsx
Como funciona
- Selecciona deals, una vista guardada o todos los resultados filtrados.
- Elige
Change Owner. - Selecciona un miembro de la organización.
- Confirma con
Assign Owner.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Select Owner |
selección | Sí | Lista los miembros de la organización. |
Reglas y validaciones
- Debe existir al menos un deal en el alcance seleccionado.
- Si se reasignan deals de una vista filtrada, pueden dejar de aparecer en ella.
- El historial de propietarios se registra mediante el servicio
owner-changes.
Backend
- Servicios:
deals-bulk-actions(método: create),owner-changes(método: create/find),organizations-users(método: find) - Hooks relevantes solo si cambian el comportamiento visible: el procesamiento masivo resuelve el alcance antes de reasignar.
- Efectos: cambia el responsable y conserva su trazabilidad.
Relaciones
- Requiere: Miembros de la organización y deals seleccionados.
- Dispara / afecta: Filtro por responsable y acciones masivas.
Notas
- Por confirmar: la acción individual exacta de cambio de propietario desde el perfil del deal.
id: deal-products modulo: deals app: crm nombre: Productos y totales del deal tipo: accion
Productos y totales del deal
Asocia productos a una oportunidad para que su valor se calcule a partir de las líneas comerciales.
Que se logra
- Resultado: convierte el valor de una oportunidad en un total respaldado por los productos o servicios que se negocian.
- Caso de uso: un e-commerce B2B añade artículos y cantidades a un deal para que ventas trabaje con un valor consistente.
- Se combina con: Productos, Crear deal y Duplicar deal.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Products - Componente(s):
DealDetailsView.tsx
Como funciona
- Abre un deal.
- Añade o administra sus productos desde la sección correspondiente.
- El valor del deal se actualiza a partir de los productos asociados.
Reglas y validaciones
- Cuando un deal tiene productos asociados,
Deal Valuequeda deshabilitado en la edición del deal. - Al duplicar un deal se pueden incluir sus productos.
Backend
- Servicios:
deal-products(método: find/create/patch/remove),deals(método: get/patch) - Hooks relevantes solo si cambian el comportamiento visible: los productos se clonan opcionalmente al duplicar un deal.
- Efectos: el total comercial del deal deja de depender del valor manual.
Relaciones
- Requiere: Productos, Currencies y el deal.
- Dispara / afecta: Edición y duplicación de deals.
Notas
- Por confirmar: los controles de UI y las reglas exactas de descuentos, impuestos y redondeos.
id: deal-related-records modulo: deals app: crm nombre: Registros relacionados del deal tipo: vista
Registros relacionados del deal
Reúne la actividad comercial y los recursos vinculados a una oportunidad dentro de su perfil.
Que se logra
- Resultado: permite trabajar una oportunidad sin perder sus tareas, notas, archivos y conversación asociados.
- Caso de uso: una consultora prepara una llamada de cierre revisando la última actividad y los documentos del deal.
- Se combina con: Actividades, Conversaciones, Notas y archivos.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Activity,Notes,Files,EmailyHistory - Componente(s):
DealDetailsView.tsx,CRMMainContent.tsx,CRMTimeline.tsx,ActivityForm.tsx
Como funciona
- Abre un deal.
- Consulta la actividad, notas, archivos y cronología desde el área principal.
- Crea una actividad desde el deal para que quede vinculada a la oportunidad.
- Abre la conversación asociada desde la tarjeta del kanban cuando existe.
Reglas y validaciones
- Las actividades creadas desde el deal conservan su vínculo con él.
- La conversación disponible en el kanban se actualiza en tiempo real cuando cambia.
Backend
- Servicios:
activities,notes,files,conversationsydeals(método: find/get/create/patch) - Hooks relevantes solo si cambian el comportamiento visible: la consulta de kanban adjunta el resumen de actividad y la conversación vinculada.
- Efectos: centraliza la trazabilidad comercial en el perfil.
Relaciones
- Requiere: Actividades, Notas, Archivos, Contactos y Conversaciones.
- Dispara / afecta: Timeline CRM y composición de invitaciones de actividades.
Notas
- Por confirmar: los controles exactos de carga y eliminación de archivos dentro del perfil.
id: deal-sales-documents modulo: deals app: crm nombre: Documentos comerciales y enlaces del deal tipo: vista
Documentos comerciales y enlaces del deal
Conecta una oportunidad con estimates, invoices y smart links que forman parte de su proceso comercial.
Que se logra
- Resultado: relaciona el avance de una venta con sus cotizaciones, facturas y enlaces compartibles.
- Caso de uso: una agencia consulta desde el deal el estimate enviado y la factura generada para preparar el cierre.
- Se combina con: Estimates, Invoices, Smart Links y Marcar deal como ganado.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > secciones de documentos y enlaces - Componente(s):
DealDetailsView.tsx,DealHeader.tsx
Como funciona
- Abre el perfil del deal.
- Consulta o crea los documentos comerciales y enlaces asociados desde sus secciones.
- Al marcar el deal como
Won, decide si aceptar estimates vinculados y sincronizar el valor.
Reglas y validaciones
- La elección relacionada con estimates solo se presenta si el deal tiene estimates vinculados.
- El valor del deal puede sincronizarse en el cierre ganado según la opción elegida.
Backend
- Servicios:
deals,estimates,invoicesysmart-links(método: find/create/patch) - Hooks relevantes solo si cambian el comportamiento visible: el cierre ganado trata los estimates vinculados.
- Efectos: relaciona el avance del deal con documentos de venta y enlaces compartibles.
Relaciones
- Requiere: Estimates, Invoices y Smart Links.
- Dispara / afecta: Marcar deal como ganado.
Notas
- Por confirmar: los botones y flujos específicos para crear invoices y smart links desde el perfil.
id: deal-stage-change modulo: deals app: crm nombre: Cambiar etapa del deal tipo: accion
Cambiar etapa del deal
Mueve una oportunidad entre las etapas de su pipeline.
Que se logra
- Resultado: actualiza el estado operativo del deal y deja una huella de su avance por el proceso de ventas.
- Caso de uso: un despacho legal mueve una propuesta de revisión a negociación cuando el cliente responde.
- Se combina con: Tablero kanban de deals e Historial de etapas del deal.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > barra de etapas, o arrastre en kanban - Componente(s):
DealStatusBar.tsx,PipelineView.tsx
Como funciona
- Selecciona una flecha de etapa o arrastra la tarjeta.
- Elige la etapa de destino.
- Registra un motivo si corresponde a pérdida.
Reglas y validaciones
- Las etapas muestran el tiempo transcurrido al pasar el cursor.
Backend
- Servicios:
deals,pipeline-stages,deal-stage-history(método: patch/find/create)
Relaciones
- Requiere: Pipelines.
- Dispara / afecta: Historial de etapas.
Notas
- También se puede cambiar el pipeline desde su nombre en la barra de estado.
id: deal-stage-history modulo: deals app: crm nombre: Historial de etapas del deal tipo: vista
Historial de etapas del deal
Conserva el registro de entrada, salida y duración de cada etapa por la que pasa un deal.
Que se logra
- Resultado: evidencia cuánto tiempo permanecen las oportunidades en cada etapa y quién realizó los movimientos cuando está disponible.
- Caso de uso: un gerente de ventas detecta que las propuestas de una agencia se demoran más de lo previsto en negociación.
- Se combina con: Cambio de etapa del deal y Gestión de etapas del pipeline.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Historyy tiempo mostrado al pasar por una etapa - Componente(s):
DealStatusBar.tsx,CRMTimeline.tsx
Como funciona
- Crea un deal o muévelo a una nueva etapa.
- El sistema abre una entrada para la etapa de destino.
- Al salir de la etapa, cierra la entrada anterior y calcula su duración.
- Consulta la cronología del deal para revisar sus cambios.
Reglas y validaciones
- Solo se agrega historial cuando cambia la etapa, no con cualquier edición del deal.
- Si se elimina una etapa que contiene deals, el traslado a la etapa elegida también cierra y crea entradas de historial.
Backend
- Servicios:
deal-stage-history(método: find/create/patch),deals(método: create/patch),pipeline-stages(método: remove) - Hooks relevantes solo si cambian el comportamiento visible: el seguimiento se ejecuta al crear o cambiar de etapa.
- Efectos: conserva el tiempo por etapa y el autor del cambio cuando está disponible.
Relaciones
- Requiere: Deals, pipelines y etapas.
- Dispara / afecta: Kanban y timeline del deal.
Notas
- Por confirmar: el formato y la superficie exacta de consulta completa del historial en el perfil.
id: deal-watchers modulo: deals app: crm nombre: Watchers del deal tipo: accion
Watchers del deal
Permite asociar contactos observadores a un deal y usarlos como sugerencias de invitados al crear una actividad.
Que se logra
- Resultado: incorpora a los interesados de una oportunidad y acelera la preparación de reuniones con ellos.
- Caso de uso: una consultora añade al director financiero como watcher para sugerirlo al convocar una reunión del deal.
- Se combina con: Crear y editar actividades e Invitados y enlace de reunión.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Watchers > Add - Componente(s):
DealWatchers.tsx
Como funciona
- Abre el perfil del deal.
- En
Watchers, seleccionaAdd. - Busca un contacto por nombre y, opcionalmente, escribe su rol.
- Guarda el watcher o usa
×junto a uno existente para eliminarlo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Contacto | búsqueda | Sí | La búsqueda comienza desde dos caracteres. |
| Rol | texto | No | Se muestra como etiqueta junto al contacto. |
Reglas y validaciones
- La UI excluye del selector al contacto principal del deal y a los watchers ya asociados.
- Al duplicar un deal, sus watchers se copian siempre.
Backend
- Servicios:
deal-watchers(método: find/create/remove),contacts(método: búsqueda) - Hooks relevantes solo si cambian el comportamiento visible: valida la asociación de watcher.
- Efectos: los watchers con correo se sugieren como invitados de actividades del deal.
Relaciones
- Requiere: Contactos y deals.
- Dispara / afecta: Invitados de actividades y duplicación de deals.
Notas
- Por confirmar: si ser watcher produce notificaciones propias fuera de las invitaciones sugeridas.
id: deal-won modulo: deals app: crm nombre: Marcar deal como ganado tipo: accion
Marcar deal como ganado
Cierra una oportunidad abierta como ganada.
Que se logra
- Resultado: registra una venta conseguida y alinea su valor con los estimates que la respaldan cuando existen.
- Caso de uso: una agencia marca ganada una propuesta aceptada y confirma el estimate que se convirtió en el acuerdo.
- Se combina con: Estimates y Documentos comerciales y enlaces del deal.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > Won - Componente(s):
DealHeader.tsx
Como funciona
- Abre un deal abierto.
- Selecciona
Won. - Si tiene estimates vinculados, elige si aceptarlos y sincronizar el valor.
Reglas y validaciones
- La opción de estimates solo aparece cuando hay estimates vinculados.
Backend
- Servicios:
deals(método: patch)
Relaciones
- Requiere: Estimates cuando existen vínculos.
- Dispara / afecta: Estado del deal y estimates elegidos.
Notas
- Puede reabrirse posteriormente.
id: deals-bulk-actions modulo: deals app: crm nombre: Acciones masivas de deals tipo: accion
Acciones masivas de deals
Permite reasignar, mover, marcar como ganados o perdidos, eliminar y exportar varias oportunidades.
Que se logra
- Resultado: actualiza una cartera completa o extrae sus datos sin repetir la misma operación deal por deal.
- Caso de uso: un concesionario mueve todos los leads calificados de una campaña a la etapa de prueba de manejo.
- Se combina con: Filtros, búsqueda y vistas, Cambio de responsable y Cambio de etapa.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > seleccionar deals > Bulk Actions - Componente(s):
DealsView.tsx,BulkChangeOwnerDialog.tsx,BulkMoveDealsDialog.tsx
Como funciona
- Selecciona deals de una página o elige todos los resultados de la vista.
- Abre
Bulk Actions. - Elige
Change Owner,Move Deals, marcar como ganado, marcar como perdido, eliminar o exportar. - Completa la selección de responsable o de pipeline y etapa cuando corresponda, y confirma.
Reglas y validaciones
- Las acciones pueden aplicarse a IDs seleccionados, una vista guardada o los resultados del filtro actual.
- Mover exige elegir pipeline y etapa.
- Marcar como perdido permite indicar motivo y texto personalizado.
- El procesamiento masivo requiere propietario o administrador.
- La exportación está disponible para planes de pago;
Freemuestra la restricción de plan.
Backend
- Servicios:
deals-bulk-actions(método: create),export-data(método: create) - Hooks relevantes solo si cambian el comportamiento visible: resuelve los deals por filtro o vista antes de procesar la acción.
- Efectos: actualiza o elimina múltiples deals y puede generar un archivo de exportación.
Relaciones
- Requiere: Lista, filtros o vistas de deals.
- Dispara / afecta: Cambio de responsable, cambio de etapa, cierre y exportación.
Notas
- Por confirmar: el detalle de resultados parciales para cada acción procesada por el backend.
id: duplicate-deal modulo: deals app: crm nombre: Duplicar deal tipo: accion
Duplicar deal
Crea una copia de un deal y permite incluir parte de sus registros relacionados.
Que se logra
- Resultado: reutiliza una oportunidad repetible sin reconstruir manualmente sus productos, notas, actividades y archivos.
- Caso de uso: una agencia replica una propuesta estándar para un nuevo cliente y conserva solo las relaciones necesarias.
- Se combina con: Productos y totales, Notas y archivos y Actividades.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > More actions > Duplicate Deal - Componente(s):
DuplicateDealDialog.tsx
Como funciona
- Abre el deal y selecciona
Duplicate Deal. - Elige si incluir notas, archivos, actividades o productos.
- Confirma la duplicación.
- La aplicación abre el perfil de la nueva copia.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Include Notes |
casilla | No | Copia las notas relacionadas. |
Include Files |
casilla | No | Copia las referencias de archivos relacionadas. |
Include Activities |
casilla | No | Copia las actividades sin sincronizarlas al calendario. |
Include Products |
casilla | No | Copia las líneas de producto. |
Reglas y validaciones
- Requiere autenticación y pertenecer a la organización del deal.
- La copia se crea abierta y su nombre añade
(Copy). - Los watchers se copian siempre, aunque no aparezcan como opción de la UI.
Backend
- Servicios:
deal-duplicate(método: create),deals,notes,files,activities,deal-productsydeal-watchers - Hooks relevantes solo si cambian el comportamiento visible: las actividades copiadas omiten la sincronización externa y la creación del deal omite automatizaciones.
- Efectos: crea una nueva oportunidad y sus relaciones seleccionadas.
Relaciones
- Requiere: Deal de origen y pertenencia a la organización.
- Dispara / afecta: Productos, notas, archivos, actividades y watchers.
Notas
- No copia el estado de cierre: la nueva oportunidad queda abierta.
id: edit-deal modulo: deals app: crm nombre: Editar deal tipo: accion
Editar deal
Actualiza los datos y campos configurables de una oportunidad.
Que se logra
- Resultado: mantiene vigente el pronóstico y la información comercial de una oportunidad durante su negociación.
- Caso de uso: una consultora ajusta la fecha prevista y los datos de alcance de una propuesta tras una reunión con el cliente.
- Se combina con: Campos personalizados de deals y Productos y totales del deal.
Donde esta
- Ruta:
/[orgId]/deals/[id] - Acceso en UI:
Deal profile > icono de lápiz - Componente(s):
EditDealDialog.tsx
Como funciona
- Abre el perfil.
- Selecciona el lápiz junto al nombre.
- Actualiza detalles o
Custom Fields. - Guarda los cambios.
Reglas y validaciones
- El contacto es obligatorio.
Deal Valuese deshabilita cuando existen productos asociados.
Backend
- Servicios:
deals,contacts,custom-fields(método: get/patch/find)
Relaciones
- Requiere: Contactos y productos.
- Dispara / afecta: Detalle y pipeline del deal.
Notas
- Los productos calculan el valor de forma independiente.
id: lost-reasons modulo: deals app: crm nombre: Gestión de motivos de pérdida tipo: configuracion
Gestión de motivos de pérdida
Permite consultar y administrar los motivos que se pueden registrar al cerrar un deal como perdido.
Que se logra
- Resultado: estandariza el registro de pérdidas para que los cierres fallidos sean comparables.
- Caso de uso: una academia separa pérdidas por precio, horario y elección de competidor al cerrar sus inscripciones.
- Se combina con: Marcar deal como perdido y Acciones masivas de deals.
Donde esta
- Ruta:
/[orgId]/settings/deals-lost-reasons - Acceso en UI:
Settings > Deals Lost Reasons - Componente(s):
DealsLostReasonsList.tsx,LostReasonDialog.tsx
Como funciona
- Abre
Deals Lost Reasonsen configuración. - Crea, edita o elimina los motivos disponibles para la organización.
- Al marcar un deal como
Lost, selecciona un motivo, usaOtherpara escribirlo o continúa conSkip.
Reglas y validaciones
- El motivo es opcional al cerrar un deal como perdido.
- Propietarios y administradores pueden crear un motivo desde el diálogo de pérdida.
- El backend evita motivos duplicados.
Backend
- Servicios:
deals-lost-reasons(método: find/create/patch/remove),deals(método: patch) - Hooks relevantes solo si cambian el comportamiento visible: evita duplicados y puede asignar automáticamente el motivo al deal.
- Efectos: aporta el motivo registrado al cierre y a su timeline.
Relaciones
- Requiere: Deals.
- Dispara / afecta: Marcar deal como perdido y acciones masivas de deals.
Notas
- Por confirmar: los permisos granulares específicos para modificar la lista desde configuración.
id: pipeline-management modulo: deals app: crm nombre: Gestión de pipelines de deals tipo: configuracion
Gestión de pipelines de deals
Permite crear, renombrar, configurar el estado inicial y eliminar pipelines para organizar oportunidades.
Que se logra
- Resultado: modela procesos comerciales distintos y controla qué equipos pueden trabajar cada pipeline.
- Caso de uso: una agencia separa su pipeline de nuevos clientes del pipeline de renovaciones y limita cada uno a su equipo.
- Se combina con: Gestión de etapas del pipeline, Tablero kanban de deals y permisos de organizaciones.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > selector de pipeline > Add New Pipelineo menú⋯de un pipeline - Componente(s):
DealsView.tsx,CreatePipelineDialog.tsx,DeletePipelineDialog.tsx,PipelineAccessSection.tsx
Como funciona
- Abre el selector de pipeline.
- Elige
Add New Pipeline, escribe el nombre y selecciona el estado predeterminado. - Para uno existente, usa
⋯paraRename, abrirPipeline Settingso eliminarlo. - Desde
Pipeline Settings > Accessconfigura quién puede acceder al pipeline.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Pipeline Name |
texto | Sí | El botón de creación se habilita cuando tiene contenido. |
Default Deal Status |
selección | Sí | Ofrece Open, Won, Lost y All. |
Access |
configuración | No | Disponible en los ajustes del pipeline. |
Reglas y validaciones
- Los miembros no ven las acciones para crear, renombrar, ajustar o eliminar pipelines.
- En el plan
Freesolo se permite un pipeline; los planes de pago no tienen ese límite en la UI. - Los pipelines restringidos solo son visibles para los miembros con acceso; propietarios y administradores ven todos.
Backend
- Servicios:
pipelines(método: find/create/patch/remove),pipeline-members(método: find/create/patch/remove) - Hooks relevantes solo si cambian el comportamiento visible: la asignación del creador se realiza al crear un pipeline.
- Efectos: el pipeline elegido determina las etapas y deals mostrados.
Relaciones
- Requiere: Etapas de pipeline y miembros de la organización.
- Dispara / afecta: Tablero kanban, creación de deals y filtros de deals.
Notas
- Por confirmar: el flujo visible completo para administrar miembros individuales del pipeline dentro de
PipelineAccessSection.
id: pipeline-stages modulo: deals app: crm nombre: Gestión de etapas del pipeline tipo: configuracion
Gestión de etapas del pipeline
Permite crear, renombrar, ordenar y eliminar las columnas que componen un pipeline de deals.
Que se logra
- Resultado: adapta las etapas y tiempos de referencia a la forma real en que el negocio califica y cierra oportunidades.
- Caso de uso: un concesionario crea etapas de prueba de manejo, financiación y entrega para ordenar su proceso comercial.
- Se combina con: Gestión de pipelines de deals, Tablero kanban e Historial de etapas.
Donde esta
- Ruta:
/[orgId]/deals - Acceso en UI:
Deals > selector de pipeline > Edit Pipeline Stages - Componente(s):
PipelineView.tsx
Como funciona
- Selecciona un pipeline y activa
Edit Pipeline Stages. - Usa
Add Stagepara añadir una etapa. - Selecciona el lápiz de una etapa para cambiar su nombre y el plazo
Rotting in. - Arrastra una columna por su asa para cambiar el orden.
- Para eliminar una etapa, selecciona la papelera y, si contiene deals, elige la etapa de destino.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Nombre de etapa | texto | Sí | Se puede modificar en modo de edición. |
Rotting in |
número | No | Define los días mostrados como referencia de antigüedad de la etapa. |
| Etapa de destino | selección | Condicional | Es necesaria si la etapa que se elimina contiene deals. |
Reglas y validaciones
- El plan
Freepermite hasta cinco etapas; los planes de pago no tienen este límite en la UI. - Al borrar una etapa con deals, se exige una etapa de destino válida del mismo pipeline.
- El cambio de orden se guarda para todas las etapas del pipeline.
Backend
- Servicios:
pipeline-stages(método: find/create/patch/remove),deals(método: find) - Hooks relevantes solo si cambian el comportamiento visible: antes de borrar una etapa con deals se trasladan los deals y se actualiza su historial de etapa.
- Efectos: cambia las columnas del kanban y el destino disponible para los deals.
Relaciones
- Requiere: Un pipeline de tipo deal.
- Dispara / afecta: Cambio de etapa e historial de etapas.
Notas
- La probabilidad de una etapa no se expone en el editor encontrado. Por confirmar: si existe otra superficie de UI para configurarla.
id: email-builder app: crm nombre: Constructor de emails estado: shipped permiso: can_access_campaigns
Constructor de emails
Permite crear plantillas de email visuales, reutilizables y preparadas para campañas o envíos directos.
Para que sirve
- Un e-commerce crea emails de lanzamiento con productos, imágenes y llamados a la acción para sus campañas.
- Una clínica prepara recordatorios de cita con su identidad visual y datos personalizados del paciente.
- Una agencia guarda encabezados, pies legales y secciones de marca para reutilizarlos entre clientes o campañas.
- Una organización sin fines de lucro redacta un newsletter con IA y luego revisa los cambios antes de aplicarlos.
Que lo hace diferente
- Convierte un editor visual por bloques en email listo para entrega mediante compilación MJML, HTML y texto plano.
- Las plantillas se usan directamente en campañas de Apex y envíos individuales, con datos de Contactos, Deals, Productos y Compañías.
- La IA propone cambios acotados sobre el documento y el usuario puede aplicar o descartar la propuesta.
- Combina bloques de marketing para productos con recursos visuales de la organización y secciones reutilizables.
- Los envíos de prueba pasan por Email Broadcasting y sus remitentes configurados.
Acceso
- Ruta principal:
/[orgId]/campaigns/email-templates - Como se llega:
Sidebar > Campaigns > Email Templates - Permiso requerido:
can_access_campaigns
Alcance tecnico
- Frontend: rutas de plantillas y assets,
EmailBuildery sus paneles. - Backend: servicios
email-builder-*. - Integraciones externas: MJML, S3, OpenRouter y AWS SES.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Gestionar plantillas | email-template-gallery.md | Crea, filtra, copia y elimina plantillas. |
| Editar documento visual | email-visual-editor.md | Diseña el email y guarda asunto, vista previa y contenido. |
| Agregar bloques | email-content-blocks.md | Inserta bloques de contenido, layout, marketing, marca y avanzados. |
| Usar secciones prediseñadas | email-section-presets.md | Añade estructuras de sección reutilizables. |
| Configurar estilo | email-document-inspector.md | Ajusta propiedades del documento, secciones y bloques. |
| Previsualizar email | email-preview.md | Renderiza el resultado compilado. |
| Crear con IA | email-ai-assistant.md | Propone cambios revisables desde lenguaje natural. |
| Gestionar assets | email-assets-library.md | Sube, selecciona y elimina recursos visuales. |
| Reutilizar bloques | email-reusable-blocks.md | Guarda e inserta bloques o secciones de la organización. |
| Enviar plantilla | email-template-send.md | Envía un email usando variables y remitente verificado. |
Relaciones
- Depende de: Productos, Contactos, Deals, Compañías y Email Broadcasting.
- Usado por: campañas email y Automatizaciones.
Limitaciones y notas
- Las plantillas del sistema se copian al espacio de la organización antes de editarse.
- La previsualización y los envíos compilan el documento antes de entregar el email.
id: email-ai-assistant modulo: email-builder app: crm nombre: Crear y editar emails con IA tipo: integracion
Crear y editar emails con IA
Propone cambios en la plantilla a partir de instrucciones conversacionales.
Que se logra
- Resultado: Una propuesta de email o cambio de contenido se genera desde una instrucción y se revisa antes de aplicarla.
- Caso de uso: Un e-commerce describe una campaña de carrito abandonado y obtiene un borrador visual que su equipo puede ajustar.
- Se combina con: Editor visual, bloques de contenido y plantillas de email.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > AI - Componente(s):
AIEmailChatSidebar.tsx
Como funciona
- Seleccione opcionalmente una sección o bloque.
- Elija modelo, escriba una instrucción o use una acción rápida.
- Revise el diff propuesto.
- Use
Applyo descarte los cambios.
Reglas y validaciones
- La IA propone cambios; no se aplican sin confirmación.
Backend
- Servicios:
ai-assistant-system(create),email-builder-assets(find),email-builder-reusable-blocks(find).
Relaciones
- Requiere: plantilla, assets y bloques reutilizables de la organización.
- Dispara / afecta: lienzo, asunto y texto de vista previa.
Notas
- La IA recibe hasta 50 assets y bloques recientes como contexto.
id: email-assets-library modulo: email-builder app: crm nombre: Gestionar recursos visuales de email tipo: configuracion
Gestionar recursos visuales de email
Sube, selecciona y elimina imágenes o archivos para usarlos en plantillas.
Que se logra
- Resultado: Logos e imágenes aprobadas quedan disponibles para reutilizarlos en plantillas de la organización.
- Caso de uso: Una cadena hotelera centraliza fotografías y logotipos para que sus campañas mantengan la misma identidad.
- Se combina con: Editor visual y bloques de contenido.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/assets - Acceso en UI:
Campaigns > Email Templates > Assets - Componente(s):
AssetUploader.tsx,AssetsLibraryDialog.tsx
Como funciona
- Abra
Assetso el selector de una imagen. - Suba un archivo o seleccione un asset existente.
- También puede buscar una imagen de Producto en el selector.
- Elimine assets desde la biblioteca.
Reglas y validaciones
- Los productos sin imagen principal no se pueden seleccionar como imagen.
Backend
- Servicios:
email-builder-assets(find/create/remove),s3-url-signing(create).
Relaciones
- Requiere: almacenamiento de la organización y Productos para el selector alterno.
- Dispara / afecta: bloques de imagen del email.
Notas
- Los assets de la organización aparecen tanto en el selector como en la página completa.
id: email-content-blocks modulo: email-builder app: crm nombre: Agregar bloques de contenido tipo: configuracion
Agregar bloques de contenido
Incorpora contenido y estructuras al email desde Blocks.
Que se logra
- Resultado: El usuario arma emails con componentes de texto, imagen, productos, llamados a la acción y marca.
- Caso de uso: Una tienda incorpora una cuadrícula de productos y un botón de compra en el anuncio de una nueva colección.
- Se combina con: Editor visual, biblioteca de recursos y plantillas.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > Blocks - Componente(s):
BlocksPalette.tsx
Como funciona
- Seleccione o arrastre un bloque al lienzo.
- Selecciónelo para editarlo en el inspector.
Reglas y validaciones
- Los bloques se insertan en el elemento o columna seleccionados.
Backend
- Servicios:
email-builder-templates(patch).
Relaciones
- Requiere: editor visual.
- Dispara / afecta: contenido compilado.
Notas
- Incluye encabezado, texto, imagen, botón, lista, cita, social, cuadrícula de imágenes, divisor, espaciador, hero, tarjetas y cuadrículas de productos, testimonio, CTA, pie de cancelación, HTML y referencias reutilizables.
id: email-document-inspector modulo: email-builder app: crm nombre: Configurar estilo de email tipo: configuracion
Configurar estilo de email
Edita las propiedades del documento, sección o bloque seleccionado.
Que se logra
- Resultado: Se define una presentación consistente del email, incluyendo sus estilos generales y los del elemento seleccionado.
- Caso de uso: Una firma de servicios ajusta tipografía y colores para que los correos de todos sus equipos respeten su marca.
- Se combina con: Editor visual, bloques y previsualización.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > inspector derecho - Componente(s):
DocumentInspector.tsx,BlockInspector.tsx,SelectionBreadcrumb.tsx
Como funciona
- Seleccione documento, sección o bloque.
- Cambie sus propiedades en el panel derecho.
- Guarde y compruebe el resultado en
Preview.
Reglas y validaciones
- Las opciones visibles cambian según el tipo de selección.
Backend
- Servicios:
email-builder-templates(patch).
Relaciones
- Requiere: editor visual.
- Dispara / afecta: apariencia compilada del email.
Notas
- El documento permite ajustar colores, ancho, tipografía y colores de enlaces; cada bloque ofrece sus propias opciones.
id: email-preview modulo: email-builder app: crm nombre: Previsualizar email tipo: vista
Previsualizar email
Renderiza la plantilla como el email final antes de enviarlo.
Que se logra
- Resultado: El equipo revisa el email compilado antes de usarlo en una campaña o envío.
- Caso de uso: Una organización sin fines de lucro valida que su boletín se vea correctamente antes de enviarlo a donantes.
- Se combina con: Editor visual y envío de plantilla.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > Preview - Componente(s):
MjmlPreview.tsx,DeviceFrame.tsx
Como funciona
- Abra una plantilla.
- Cambie de
BuilderaPreview. - Revise el resultado y vuelva a editar si es necesario.
Reglas y validaciones
- El resultado se genera a partir del documento actual.
Backend
- Servicios:
email-builder-render(create).
Relaciones
- Requiere: documento de plantilla.
- Dispara / afecta: validación visual previa a campañas o envíos.
Notas
- El render devuelve advertencias si existen problemas de compilación.
id: email-reusable-blocks modulo: email-builder app: crm nombre: Reutilizar bloques de email tipo: configuracion
Reutilizar bloques de email
Guarda bloques o secciones de la organización y los inserta en nuevas plantillas.
Que se logra
- Resultado: Secciones aprobadas, como encabezados o pies de página, se guardan para insertarse de nuevo sin reconstruirlas.
- Caso de uso: Una franquicia reutiliza el mismo bloque legal y de redes sociales en los correos de todas sus sedes.
- Se combina con: Bloques de contenido, recursos visuales y editor visual.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > Blocks > reusable blocks - Componente(s):
SaveAsReusableDialog.tsx,ReusablePalette.tsx,ReusablePicker.tsx
Como funciona
- Seleccione un bloque o sección.
- Guárdelo como reutilizable.
- Abra la paleta de reutilizables e insértelo en otra plantilla.
Reglas y validaciones
- Puede insertarse como copia o como referencia reutilizable.
Backend
- Servicios:
email-builder-reusable-blocks(find/create/patch/remove).
Relaciones
- Requiere: editor visual.
- Dispara / afecta: contenido de otras plantillas.
Notas
- Una referencia reutilizable se mantiene vinculada al elemento de biblioteca.
id: email-section-presets modulo: email-builder app: crm nombre: Usar secciones prediseñadas tipo: configuracion
Usar secciones prediseñadas
Inserta estructuras listas para editar desde la galería del constructor.
Que se logra
- Resultado: El usuario parte de estructuras de secciones listas para adaptar, reduciendo el trabajo de maquetación.
- Caso de uso: Una empresa de eventos agrega una sección de invitación con llamada a la acción y personaliza sus datos.
- Se combina con: Editor visual, bloques de contenido y plantillas.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > Gallery - Componente(s):
SectionsPalette.tsx,TemplatesPalette.tsx
Como funciona
- Abra
Gallery. - Seleccione una sección o plantilla prediseñada.
- Ajústela en el lienzo y guarde.
Reglas y validaciones
- Las secciones se añaden como contenido editable de la plantilla.
Backend
- Servicios:
email-builder-presets(find/get).
Relaciones
- Requiere: editor visual.
- Dispara / afecta: diseño de la plantilla.
Notas
- Existen secciones de cabecera, hero, características, imagen-texto, CTA, testimonio y pies de página; las plantillas de sistema se copian desde la galería principal.
id: email-template-gallery modulo: email-builder app: crm nombre: Gestionar plantillas de email tipo: vista
Gestionar plantillas de email
Explora las plantillas de la organización y del sistema, con filtros de origen y categoría.
Que se logra
- Resultado: La organización crea, copia, encuentra y mantiene las plantillas que empleará en comunicaciones comerciales.
- Caso de uso: Una tienda duplica su plantilla de promoción mensual para una nueva categoría de productos.
- Se combina con: Editor visual, campañas de email y Email Broadcasting.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates - Acceso en UI:
Campaigns > Email Templates - Componente(s):
page.tsx
Como funciona
- Busque o filtre las tarjetas.
- Abra una plantilla propia para editarla.
- Seleccione una del sistema y confirme
Copy to My templates. - Use
Create Templatepara crear una plantilla vacía. - Elimine una plantilla propia desde su tarjeta.
Reglas y validaciones
- Las plantillas del sistema se copian antes de editarse.
- Para crear, el nombre no puede estar vacío.
Backend
- Servicios:
email-builder-templates(find/create/remove),email-builder-presets(find/get),email-builder-template-categories(find).
Relaciones
- Requiere: Constructor de emails.
- Dispara / afecta: editor y campañas email.
Notas
- Cada tarjeta puede mostrar miniatura o una vista compilada.
id: email-template-send modulo: email-builder app: crm nombre: Enviar una plantilla de email tipo: accion
Enviar una plantilla de email
Envía una plantilla guardada a un contacto con datos y variables resueltas.
Que se logra
- Resultado: Una plantilla se entrega a un destinatario usando datos personalizados y un remitente configurado.
- Caso de uso: Un despacho profesional envía una comunicación individual con el nombre del cliente y un enlace relevante.
- Se combina con: Contactos, Email Broadcasting y plantillas de email.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email builder > Send - Componente(s):
SendTemplateDialog.tsx
Como funciona
- Abra
Send. - Confirme asunto y texto de previsualización.
- Seleccione contacto, canal y remitente.
- Complete deal, compañía o variables personalizadas cuando se pidan.
- Envíe.
Reglas y validaciones
- Contacto, asunto, canal y remitente son obligatorios.
- El contacto debe tener email.
- Solo aparecen remitentes verificados.
Backend
- Servicios:
email-builder-send-template(create),email-broadcast-sends(create). - Efectos: resuelve variables y envía mediante el canal configurado.
Relaciones
- Requiere: Contactos, Email Broadcasting y, según variables, Deals y Compañías.
- Dispara / afecta: entrega de email y wallet.
Notas
contact.*,deal.*,company.*,organization.*y la URL de cancelación se completan automáticamente.
id: email-visual-editor modulo: email-builder app: crm nombre: Editar documento visual de email tipo: configuracion
Editar documento visual de email
Construye el contenido de una plantilla en un lienzo con secciones, columnas y bloques.
Que se logra
- Resultado: El equipo diseña y guarda una plantilla de email visual que se compila para usarse en envíos reales.
- Caso de uso: Un restaurante arma un anuncio de menú semanal con fotos, botones de reserva y contenido propio.
- Se combina con: Bloques de contenido, previsualización, IA y campañas de email.
Donde esta
- Ruta:
/[orgId]/campaigns/email-templates/[templateId] - Acceso en UI:
Email Templates > abrir plantilla - Componente(s):
EmailBuilder.tsx,EmailBuilderCanvas.tsx,EmailBuilderTopbar.tsx
Como funciona
- Abra una plantilla.
- Escriba
SubjectyPreview text. - Inserte o arrastre contenido al lienzo.
- Seleccione elementos para configurar sus propiedades.
- Use
Savepara persistir yBuilderoPreviewpara cambiar de modo.
Reglas y validaciones
- El envío guarda automáticamente la plantilla antes de entregarla.
Backend
- Servicios:
email-builder-templates(get/patch). - Efectos: al guardar contenido se compila para previsualización y envío.
Relaciones
- Requiere: bloques, secciones, assets y estilos.
- Dispara / afecta: campañas y envíos de email.
Notas
Outlinepermite recorrer el árbol de contenido.
id: formularios app: crm nombre: Formularios estado: shipped permiso: permisos de formularios
Formularios
Permite crear formularios para compartirlos públicamente, recibir respuestas y analizarlas desde el CRM.
Para que sirve
- Una clínica publica un formulario de solicitud para captar datos previos de pacientes y revisar cada respuesta en el CRM.
- Una inmobiliaria crea un formulario de calificación de prospectos con preguntas que cambian según el tipo de propiedad buscada.
- Una agencia inserta un formulario en su sitio y recibe una notificación por cada nueva solicitud comercial.
- Un equipo comercial vincula un formulario a un contacto o conversación existente para incorporar información sin perder el contexto.
- Una empresa activa una automatización al llegar una respuesta para iniciar tareas o comunicaciones posteriores.
- Un negocio exporta las respuestas filtradas para analizarlas fuera de la plataforma.
Que lo hace diferente
- Los formularios públicos, embeds y widgets comparten el mismo constructor y configuración; no se mantiene una versión distinta para cada canal.
- Cada respuesta puede asociarse de forma segura a un contacto o conversación existente mediante el contexto compartido, sin crear contactos automáticamente.
- La creación de una respuesta puede ejecutar automatizaciones activas vinculadas a un formulario específico o a cualquier formulario.
- El constructor incluye IA que propone una estructura editable; el equipo revisa y guarda el resultado antes de publicarlo.
- Las notificaciones por respuesta se envían mediante el correo transaccional de Apex y no bloquean el registro si el correo falla.
Acceso
- Ruta principal:
/[orgId]/forms - Como se llega:
Sidebar > Forms - Permiso requerido: permisos de formularios
Alcance tecnico
- Frontend: rutas
forms/page.tsx,forms/[id]/page.tsx,forms/[id]/responses/page.tsxyf/[formId]/page.tsx; componentesFormsView,FormDetail,FormBuilderyFormAnalytics - Backend:
formsyform-submissions - Superficies publicas:
/f/[formId] - Integraciones externas: correo transaccional mediante SES para notificaciones de respuestas
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Constructor | form-builder.md | Diseña el formulario mediante arrastre, árbol, vista previa y guardado. |
| IA del constructor | form-builder-ai.md | Genera o modifica la estructura del formulario a partir de instrucciones. |
| Tipos de campo | form-field-types.md | Añade campos de entrada, contenido y estructuras de diseño. |
| Validaciones de campo | field-validation.md | Configura obligatoriedad, reglas de formato y límites por campo. |
| Lógica condicional | conditional-logic.md | Muestra u oculta elementos según respuestas anteriores. |
| Ajustes y publicación | form-settings-publishing.md | Configura el comportamiento público y publica o despublica el formulario. |
| Presentación pública | form-display.md | Ajusta tamaño, ancho y la visualización de errores del formulario público. |
| Compartir | form-sharing.md | Obtiene enlace público, iframe y código de inserción. |
| Formulario público | public-form.md | Recoge respuestas sin requerir inicio de sesión. |
| Asociación contextual | submission-association.md | Vincula una respuesta a un contacto o conversación existentes. |
| Notificaciones de respuestas | submission-notifications.md | Envía un correo a destinatarios configurados tras un envío. |
| Automatizaciones por respuesta | automation-trigger.md | Inicia automatizaciones cuando se crea una respuesta. |
| Respuestas y analítica | form-responses.md | Consulta métricas, respuestas individuales y estado de spam. |
| Exportar respuestas | response-export.md | Descarga las respuestas visibles en formato CSV. |
Relaciones
- Depende de: Contactos y Conversaciones para asociaciones contextuales.
- Usado por: Automatizaciones, Nova y CRM.
Limitaciones y notas
- Solo los formularios publicados aceptan envíos públicos.
- Por confirmar: no se encontró una función que cree, actualice o mapee automáticamente contactos o campos personalizados al enviar una respuesta.
- Por confirmar: el formulario conserva contexto de URL y referencia de origen, pero no se encontró una configuración específica para capturar UTM.
- Por confirmar: existe un elemento visual de CAPTCHA, pero no se encontró validación de CAPTCHA en el flujo de envío público.
id: automation-trigger modulo: formularios app: crm nombre: Automatizaciones por respuesta tipo: automatizacion
Automatizaciones por respuesta
Inicia automatizaciones activas cuando se crea una respuesta de formulario.
Que se logra
- Resultado: cada respuesta compatible inicia automáticamente el flujo operativo configurado por el negocio.
- Caso de uso: una inmobiliaria recibe un formulario de valoración y crea el seguimiento comercial definido en Automatizaciones.
- Se combina con: formulario público, respuestas y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > Settings > Automations - Componente(s):
FormSettings.tsx,AutomationCanvas.tsx
Como funciona
- Abre
Settingsdel formulario. - En
Automations, seleccionaCreate Automation. - El sistema crea una automatización activa vinculada a ese formulario.
- Configura sus acciones desde el editor de automatizaciones.
- Cada nueva respuesta del formulario inicia la automatización vinculada.
Reglas y validaciones
- Una automatización puede vincularse a un formulario específico o a cualquier formulario.
- Solo se ejecutan automatizaciones activas cuyo vínculo coincide con la respuesta creada.
- Desde los ajustes se pueden previsualizar o abrir las automatizaciones vinculadas.
Backend
- Servicios:
automations(método: find/create/patch),automations-webhooks(método: find/create),form-submissions(método: create),automation-run(método: create) - Efectos: inicia una ejecución por cada automatización coincidente.
Relaciones
- Requiere: Respuestas de formularios y Automatizaciones.
- Dispara / afecta: Ejecuciones de automatización.
Notas
- Si una automatización falla al iniciarse, la respuesta del formulario se conserva.
id: conditional-logic modulo: formularios app: crm nombre: Lógica condicional tipo: configuracion
Lógica condicional
Muestra u oculta un elemento según el valor de uno o varios campos del formulario.
Que se logra
- Resultado: cada visitante ve solo preguntas pertinentes a sus respuestas, evitando formularios extensos e irrelevantes.
- Caso de uso: una inmobiliaria muestra preguntas de financiación solo a quienes indicaron que requieren crédito.
- Se combina con: tipos de campo, validaciones y formulario público.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > elemento > Conditions - Componente(s):
ElementEditor.tsx,page.tsx
Como funciona
- Selecciona el elemento que debe mostrarse de forma condicional.
- Abre
Conditions. - Elige el campo que se evaluará, el operador y el valor.
- Añade condiciones o grupos con
ANDuORsi es necesario. - Guarda y verifica el resultado en
Previewo en el formulario público.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Campo | selección | Sí | Debe ser otro elemento del formulario. |
| Operador | selección | Sí | Incluye igualdad, contenido, vacío, comparación y coincidencia de inicio o fin. |
| Valor | texto | Condicional | No se solicita con Is empty ni Is not empty. |
| Grupo | lista | No | Combina sus condiciones con AND u OR. |
Reglas y validaciones
- Un campo no puede condicionarse a sí mismo.
- Los campos ocultos no bloquean la validación de requeridos.
- Cuando hay grupos, todos los grupos configurados deben cumplirse.
Backend
- Servicios:
forms(método: patch) - Efectos: modifica qué elementos puede ver y completar el visitante.
Relaciones
- Requiere: Tipos de campo y elementos.
- Dispara / afecta: Validaciones de campo y formulario público.
Notas
- Existe compatibilidad con condiciones simples y con grupos de condiciones.
id: field-validation modulo: formularios app: crm nombre: Validaciones de campo tipo: configuracion
Validaciones de campo
Permite exigir respuestas y definir reglas de formato, longitud o valor para los campos del formulario.
Que se logra
- Resultado: se reduce la recepción de respuestas incompletas o con formato incorrecto antes de que lleguen al equipo.
- Caso de uso: una financiera exige correo válido, número de identificación con longitud definida y datos obligatorios de un solicitante.
- Se combina con: tipos de campo, presentación y formulario público.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > elemento > Validation - Componente(s):
ElementEditor.tsx,page.tsx
Como funciona
- Selecciona un campo en el lienzo.
- Activa
Requiredsi debe completarse. - En
Validation, define patrón, mensaje o reglas adicionales. - Guarda y prueba el comportamiento desde
Previewo el formulario público.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Required |
interruptor | No | Impide avanzar o enviar sin una respuesta válida. |
Pattern |
texto | No | Define una expresión regular. |
Error message |
texto | No | Personaliza el mensaje de error. |
Rules |
lista | No | Admite mínimo, máximo, longitud, email, URL y patrón. |
Reglas y validaciones
- Los campos obligatorios visibles se validan antes de avanzar o enviar.
- La validación puede mostrarse durante la interacción si está habilitada en los ajustes del formulario.
- Los elementos de diseño y botones no muestran el panel de validación.
Backend
- Servicios:
forms(método: patch),form-submissions(método: create) - Efectos: el formulario público bloquea el avance o envío cuando detecta errores.
Relaciones
- Requiere: Tipos de campo y elementos.
- Dispara / afecta: Formulario público.
Notas
- Las reglas se evalúan en la interfaz pública.
id: form-builder-ai modulo: formularios app: crm nombre: IA del constructor de formularios tipo: integracion
IA del constructor de formularios
Genera una estructura nueva o propone cambios sobre los elementos actuales a partir de instrucciones en lenguaje natural.
Que se logra
- Resultado: una instrucción en lenguaje natural se convierte en una propuesta editable de estructura para acelerar el diseño.
- Caso de uso: una academia pide a la IA un formulario de inscripción y ajusta las preguntas antes de guardarlo.
- Se combina con: constructor, tipos de campo, validaciones y lógica condicional.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > AI - Componente(s):
AIChatSidebar.tsx,AIPromptDialog.tsx
Como funciona
- Abre un formulario y selecciona la pestaña
AI. - Describe el formulario o el cambio que necesitas.
- Revisa la propuesta de elementos, explicación y sugerencias.
- Selecciona
Apply to Formpara llevar el resultado al lienzo. - Guarda el formulario para conservar los cambios.
Reglas y validaciones
- Puede crear un formulario nuevo o modificar los elementos existentes.
- La propuesta no se guarda automáticamente al aplicarse al lienzo; requiere guardar el formulario.
- La respuesta incluye el consumo de tokens cuando está disponible.
Backend
- Servicios:
ai-assistant-system(método: create),forms(método: patch) - Efectos: genera o modifica la estructura editable del formulario.
Relaciones
- Requiere: Constructor de formularios.
- Dispara / afecta: Tipos de campo, validaciones y lógica condicional presentes en la propuesta.
Notas
- La IA utiliza los tipos de elemento registrados por el constructor.
id: form-builder modulo: formularios app: crm nombre: Constructor de formularios tipo: accion
Constructor de formularios
Diseña el contenido mediante elementos arrastrables, árbol y vista previa.
Que se logra
- Resultado: un equipo puede diseñar y revisar formularios de varios pasos sin programar la estructura.
- Caso de uso: una consultora construye un diagnóstico inicial con secciones, preguntas y una página final de envío.
- Se combina con: tipos de campo, validaciones, lógica condicional y formulario público.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario - Componente(s):
FormBuilder.tsx,ElementPalette.tsx,ElementEditor.tsx
Como funciona
- Abre un formulario.
- Arrastra campos, contenido estático o estructuras al lienzo.
- Selecciona un elemento para configurarlo.
- Usa
Preview,Save,UndooRedo.
Reglas y validaciones
- Existe guardado automático aproximado de 30 segundos y guardado manual.
Backend
- Servicios:
forms(método: get/patch)
Relaciones
- Requiere: Formularios.
- Dispara / afecta: Formulario público.
Notas
Page Breakcrea flujos de varios pasos.
id: form-display modulo: formularios app: crm nombre: Presentación del formulario público tipo: configuracion
Presentación del formulario público
Configura el tamaño visual, el ancho y la forma de mostrar errores en el formulario público y en su iframe.
Que se logra
- Resultado: el formulario público y su embed se presentan con una escala y mensajes de error adecuados para el sitio donde se publica.
- Caso de uso: una empresa adapta un formulario compacto para una landing móvil y activa validación inmediata.
- Se combina con: ajustes y publicación, validaciones y compartir formularios.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > Settings > Form Display - Componente(s):
FormSettings.tsx,page.tsx
Como funciona
- Abre el formulario y selecciona
Settings. - En
Form Display, elige el tamaño y, si hace falta, define un ancho. - Activa o desactiva la validación en vivo y el resumen de errores.
- Selecciona
Save Settings.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Form size |
selección | No | Ofrece Small, Medium y Large. |
Form width |
texto | No | Define un ancho personalizado. |
Live validation |
interruptor | No | Está activado de forma predeterminada. |
Display errors above |
interruptor | No | Muestra un resumen de campos pendientes encima del formulario. |
Reglas y validaciones
- Estos ajustes se aplican al formulario público.
- La vista previa del constructor permite comprobar escritorio, tableta y móvil.
Backend
- Servicios:
forms(método: patch) - Efectos: cambia la presentación y validación de la experiencia pública.
Relaciones
- Requiere: Ajustes y publicación de formularios.
- Dispara / afecta: Formulario público y compartir formularios.
Notas
- El iframe usa la misma página pública con el parámetro
embed=true.
id: form-field-types modulo: formularios app: crm nombre: Tipos de campo y elementos tipo: configuracion
Tipos de campo y elementos
El constructor ofrece campos de entrada, contenido estático y estructuras para organizar el formulario.
Que se logra
- Resultado: el formulario puede recoger datos, presentar contenido y organizar recorridos de varios pasos según la necesidad.
- Caso de uso: una clínica combina datos de contacto, consentimiento, archivos y una sección explicativa en una sola solicitud.
- Se combina con: constructor, validaciones y lógica condicional.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > Elements - Componente(s):
ElementPalette.tsx,ElementRenderer.tsx
Como funciona
- Abre un formulario y selecciona
Elements. - Arrastra un elemento al lienzo o dentro de una estructura compatible.
- Selecciona el elemento para editar sus propiedades.
- Guarda para publicar los cambios en el formulario.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Entrada de datos | texto, email, teléfono, número, URL, fecha, hora, selección, archivo, firma y otros | No | La obligatoriedad se configura por elemento. |
| Contenido | encabezado, párrafo, imagen, video, enlace, HTML, alerta y botones | No | Se usa para presentar información o acciones. |
| Estructura | salto de página, columnas, cuadrícula, pestañas, pasos, secciones, listas, acordeón y tarjeta | No | Organiza el contenido y permite flujos de varios pasos. |
Reglas y validaciones
- Cada elemento debe tener un identificador único.
- Los elementos anidados se pueden seleccionar desde
Tree. Page Breakdivide el formulario en pasos.
Backend
- Servicios:
forms(método: patch) - Efectos: guarda la composición que verá el visitante en el formulario público.
Relaciones
- Requiere: Constructor de formularios.
- Dispara / afecta: Formulario público y respuestas.
Notas
- El elemento
Captchaestá disponible en el constructor. Por confirmar: no se encontró validación de su respuesta al enviar el formulario.
id: form-responses modulo: formularios app: crm nombre: Respuestas y analítica de formularios tipo: vista
Respuestas y analítica de formularios
Consulta métricas, respuestas, filtros, detalle y exportación.
Que se logra
- Resultado: el equipo conoce el volumen y estado de los envíos y puede revisar cada respuesta para actuar sobre ella.
- Caso de uso: una empresa de eventos detecta registros incompletos o spam antes de preparar su lista de asistentes.
- Se combina con: formulario público, asociación contextual y exportar respuestas.
Donde esta
- Ruta:
/[orgId]/forms/[id]/responses - Acceso en UI:
Form detail > View responses - Componente(s):
FormAnalytics.tsx
Como funciona
- Abre
View responses. - Consulta las tarjetas y
Summary. - Usa
Responsespara buscar, filtrar, abrir o eliminar envíos. - Selecciona
Export CSVpara descargar resultados.
Reglas y validaciones
- Clasifica respuestas como completadas, parciales o spam.
Backend
- Servicios:
forms,form-submissions(método: get/find/remove)
Relaciones
- Requiere: Envíos públicos.
- Dispara / afecta: Ninguna.
Notas
View Formsolo aparece cuando el formulario está publicado.
id: form-settings-publishing modulo: formularios app: crm nombre: Ajustes y publicación de formularios tipo: configuracion
Ajustes y publicación de formularios
Configura comportamiento del envío y alterna entre borrador y publicación.
Que se logra
- Resultado: el equipo controla cuándo un formulario acepta envíos y qué sucede después de responderlo.
- Caso de uso: una marca prepara un formulario en borrador, configura la confirmación y lo publica al comenzar una campaña.
- Se combina con: formulario público, notificaciones y automatizaciones por respuesta.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Form detail > SettingsyPublish/Unpublish - Componente(s):
FormDetail.tsx,FormSettings.tsx
Como funciona
- Abre
Settings. - Ajusta mensaje, redirección, notificaciones y presentación.
- Guarda los ajustes.
- Selecciona
Publishpara habilitar el formulario público.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Form name |
texto | Sí | Identifica el formulario. |
Redirect URL |
URL | No | Tiene prioridad sobre mensaje de éxito. |
Enable email notifications |
interruptor | No | Activa destinatarios configurables. |
Reglas y validaciones
- Solo un formulario
publishedestá disponible públicamente.
Backend
- Servicios:
forms(método: patch)
Relaciones
- Requiere: Formulario público.
- Dispara / afecta: Recepción de respuestas.
Notas
- Duplicar y eliminar se encuentran en el menú de más acciones.
id: form-sharing modulo: formularios app: crm nombre: Compartir formularios tipo: publico
Compartir formularios
Proporciona enlace público, iframe y código de widget para distribuir un formulario.
Que se logra
- Resultado: el mismo formulario puede distribuirse como enlace, iframe o widget y recibir respuestas en Apex.
- Caso de uso: una agencia inserta el formulario de contacto en el sitio de un cliente sin reconstruirlo fuera del CRM.
- Se combina con: publicación, formulario público y asociación contextual.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Form detail > Share - Componente(s):
ShareFormDialog.tsx
Como funciona
- Abre el formulario.
- Selecciona
Share. - Copia el enlace directo, iframe o código de embed.
- Publica antes de recibir envíos reales.
Reglas y validaciones
- Se muestra advertencia cuando el formulario no está publicado.
- Los parámetros que coinciden con Field IDs permiten prellenar valores.
Backend
- Servicios:
forms(método: get)
Relaciones
- Requiere: Publicación del formulario.
- Dispara / afecta: Formulario público.
Notas
- El iframe usa el parámetro
embed=true.
id: public-form modulo: formularios app: crm nombre: Formulario público tipo: publico
Formulario público
Presenta y recibe un formulario publicado sin requerir inicio de sesión.
Que se logra
- Resultado: visitantes sin cuenta pueden completar un formulario publicado y recibir una confirmación o redirección definida.
- Caso de uso: una escuela comparte una solicitud de admisión por enlace y recoge respuestas de familias interesadas.
- Se combina con: validaciones, lógica condicional, respuestas y automatizaciones.
Donde esta
- Ruta:
/f/[formId] - Acceso en UI: enlace directo, iframe o widget
- Componente(s):
page.tsx
Como funciona
- El visitante abre el enlace.
- Completa campos visibles y avanza pasos si corresponde.
- Envía el formulario.
- Ve el mensaje de éxito o es redirigido.
Reglas y validaciones
- Rechaza formularios no publicados.
- Valida campos requeridos y reglas de cada campo.
- La redirección configurada prevalece sobre el mensaje de éxito.
Backend
- Servicios:
forms,form-submissions(método: get/create)
Relaciones
- Requiere: Publicación y configuración del formulario.
- Dispara / afecta: Respuestas de formularios.
Notas
- Admite prellenado y asociación contextual con contacto o conversación mediante parámetros URL.
id: response-export modulo: formularios app: crm nombre: Exportar respuestas tipo: accion
Exportar respuestas
Descarga en CSV las respuestas disponibles del formulario para analizarlas fuera de AchieveApex.
Que se logra
- Resultado: las respuestas filtradas se convierten en un archivo utilizable para análisis o procesos externos.
- Caso de uso: un centro de formación exporta solo las inscripciones completadas para preparar la convocatoria.
- Se combina con: respuestas y analítica de formularios.
Donde esta
- Ruta:
/[orgId]/forms/[id]/responses - Acceso en UI:
Forms > formulario > View responses > Export CSV - Componente(s):
FormAnalytics.tsx
Como funciona
- Abre
View responsesen un formulario. - Opcionalmente busca respuestas o filtra por estado.
- Selecciona
Export CSV. - El navegador descarga el archivo con las respuestas.
Reglas y validaciones
Export CSVpermanece deshabilitado cuando no hay respuestas.- Si hay búsqueda o filtro activos, se exportan las respuestas visibles tras aplicar esos criterios.
- Los archivos de firma se representan como imagen en la exportación.
Backend
- Servicios:
form-submissions(método: find) - Efectos: genera la descarga localmente en el navegador.
Relaciones
- Requiere: Respuestas y analítica de formularios.
- Dispara / afecta: Ninguna.
Notas
- La exportación usa los nombres de los campos como encabezados.
id: submission-association modulo: formularios app: crm nombre: Asociación contextual de respuestas tipo: integracion
Asociación contextual de respuestas
Vincula una respuesta a un contacto o una conversación que ya existan en la misma organización.
Que se logra
- Resultado: la información enviada se conserva dentro del historial del contacto o conversación correctos, cuando se comparte contexto válido.
- Caso de uso: un asesor envía por chat un formulario de actualización a un cliente y su respuesta queda vinculada a ese hilo.
- Se combina con: formulario público, Contactos, Conversaciones y respuestas de formularios.
Donde esta
- Ruta:
/f/[formId] - Acceso en UI: enlace público o embed con contexto incluido
- Componente(s):
page.tsx,urlPrefill.ts
Como funciona
- Comparte el formulario con el identificador de contacto o conversación como parámetro de URL, o incluye campos ocultos con esos identificadores.
- El visitante completa y envía el formulario.
- El sistema valida que los recursos indicados pertenezcan a la organización del formulario.
- La respuesta queda asociada al contacto y/o a la conversación válidos.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
contact_id |
parámetro URL o campo oculto | No | Debe identificar un contacto existente de la organización. |
conversation_id |
parámetro URL o campo oculto | No | Puede resolver el contacto asociado a la conversación. |
Reglas y validaciones
- Se rechazan identificadores inválidos o pertenecientes a otra organización.
- Los valores enviados explícitamente prevalecen sobre el contexto encontrado en la URL.
Backend
- Servicios:
form-submissions(método: create),contacts(método: get),conversations(método: get) - Efectos: guarda la asociación contextual en la respuesta.
Relaciones
- Requiere: Formulario público, Contactos o Conversaciones existentes.
- Dispara / afecta: Respuestas y analítica; consultas de Nova sobre respuestas.
Notas
- No crea ni actualiza contactos automáticamente.
id: submission-notifications modulo: formularios app: crm nombre: Notificaciones de respuestas tipo: configuracion
Notificaciones de respuestas
Envía un correo transaccional con los valores enviados cada vez que se recibe una respuesta.
Que se logra
- Resultado: los responsables reciben por correo el contenido de cada respuesta sin tener que vigilar el panel de formularios.
- Caso de uso: una clínica avisa a recepción cuando llega una solicitud de cita desde su web.
- Se combina con: ajustes y publicación, formulario público y correo transaccional.
Donde esta
- Ruta:
/[orgId]/forms/[id] - Acceso en UI:
Forms > formulario > Settings > Email Notifications - Componente(s):
FormSettings.tsx
Como funciona
- Abre
Settingsen el formulario. - Activa
Enable email notifications. - Indica uno o más destinatarios en
Notification emails. - Selecciona
Save Settings. - Al recibirse una respuesta, los destinatarios configurados reciben el correo.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Enable email notifications |
interruptor | No | Habilita el envío de correos por respuesta. |
Notification emails |
texto | Condicional | Acepta destinatarios separados por comas cuando las notificaciones están activas. |
Reglas y validaciones
- No se envía correo si las notificaciones están desactivadas o no hay destinatarios configurados.
- El correo incluye el nombre del formulario, los valores enviados y el momento del envío.
Backend
- Servicios:
form-submissions(método: create) - Efectos: envía correo transaccional mediante SES después de crear la respuesta.
Relaciones
- Requiere: Ajustes y publicación de formularios.
- Dispara / afecta: Correo transaccional.
Notas
- Un error al enviar el correo no detiene la creación de la respuesta.
id: productos app: crm nombre: Productos estado: shipped permiso: permisos granulares de productos
Productos
Administra productos y servicios reutilizables en ventas y conversaciones. Permite preparar su información comercial, media, categorías e indexación para IA.
Para que sirve
- Una tienda de equipos comerciales centraliza productos, precios y material visual para que ventas comparta siempre la oferta vigente.
- Una empresa de servicios recurrentes registra planes y frecuencias de cobro para reutilizarlos en propuestas comerciales.
- Una distribuidora importa su catálogo y clasifica las referencias para reducir la carga manual de alta.
- Un negocio que vende por chat envía fichas y enlaces de productos desde una conversación, sin copiar datos entre herramientas.
- Un equipo de preventa hace que el asistente IA encuentre ofertas habilitadas al responder preguntas de clientes.
Que lo hace diferente
- El mismo catálogo alimenta
Dealsy estimates, de modo que una oferta comercial se reutiliza en ventas y documentos. - Desde el composer del Inbox se pueden enviar productos, categorías o enlaces de catálogo con plantillas específicas por modo de envío.
- Los productos habilitados para IA y sus campos personalizados se indexan para que asistentes IA y automatizaciones localicen la oferta adecuada.
- La media se gestiona en la ficha y se aprovecha al compartir productos cuando el canal admite imágenes.
- Las categorías y los productos pueden alimentar Catálogos públicos sin duplicar el catálogo.
Acceso
- Ruta principal:
/[orgId]/products - Como se llega:
Sidebar > CRM > Products - Permiso requerido: permisos granulares de productos
Alcance tecnico
- Frontend:
ProductsView,ProductDetailsView,ProductMediaUploady categorías. - Backend:
products,products-categories,products-media,product-send-message-templatesyproduct-embeddings. - Superficies publicas: ninguna.
- Integraciones externas: S3 e IA.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Catálogo | product-catalog.md | Consulta, filtra y abre productos y servicios. |
| Crear producto o servicio | create-product.md | Da de alta una oferta y abre su detalle. |
| Detalle de producto | product-detail.md | Configura precio, estado y facturación. |
| Editar producto | edit-product.md | Actualiza información comercial y organización. |
| Eliminar producto | delete-product.md | Retira una oferta mediante confirmación. |
| Categorías de producto | product-categories.md | Crea, renombra y elimina categorías. |
| Media de producto | product-media.md | Añade imágenes y videos. |
| Importar productos | import-products.md | Carga una hoja, mapea datos y revisa resultados. |
| IA y campos personalizados | product-ai-custom-fields.md | Configura indexación y datos de producto. |
| Búsqueda de productos con IA | product-ai-search.md | Expone ofertas indexables a asistentes y automatizaciones. |
| Plantillas para enviar productos | product-message-templates.md | Define textos reutilizables por modo de envío. |
| Enviar productos desde una conversación | send-products-from-conversation.md | Comparte productos CRM como mensajes del canal. |
Relaciones
- Depende de: Campos personalizados y categorías.
- Usado por: Deals, Estimates y asistentes IA.
Limitaciones y notas
- Catalog Links pertenece al módulo
catalogos-publicos, no a este. - No se confirmó una función separada para exportación o acciones masivas de productos.
- Por confirmar: impuestos, variantes/SKU avanzados y orden manual de categorías.
id: create-product modulo: productos app: crm nombre: Crear producto o servicio tipo: accion
Crear producto o servicio
Crea una oferta inicial y abre su ficha para completar el catálogo.
Que se logra
- Resultado: una nueva oferta queda disponible como producto o servicio, con precio y modalidad de cobro definidos.
- Caso de uso: una agencia crea su plan mensual de gestión de redes antes de incluirlo en propuestas a clientes.
- Se combina con: detalle de producto y estimates.
Donde esta
- Ruta:
/[orgId]/products - Acceso en UI:
Products > Add Product - Componente(s):
AddProductDialog.tsx
Como funciona
- Selecciona
Add Product. - Elige
ProductoService. - Indica nombre, descripción, precio, estado y modalidad de cobro.
- Selecciona
Add Product; la aplicación abre el detalle creado.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Name |
texto | Sí | Debe tener al menos dos caracteres. |
Type |
selección | Sí | Product o Service. |
Price |
número | Sí | No acepta valores negativos. |
Billing |
selección | Sí | One-time o Recurring. |
Interval |
selección y número | Condicional | Se muestra para cobro recurrente. |
Status |
selección | Sí | Active o Inactive. |
Reglas y validaciones
- El intervalo recurrente predeterminado es mensual y su cantidad mínima es uno.
- La categoría, SKU, media y campos personalizados se completan después en el detalle.
Backend
- Servicios:
products(método: create)
Relaciones
- Requiere: Productos.
- Dispara / afecta: Detalle de producto.
Notas
- Por confirmar: si la creación inicial permite seleccionar moneda distinta de la base.
id: delete-product modulo: productos app: crm nombre: Eliminar producto tipo: accion
Eliminar producto
Retira un producto o servicio desde su ficha mediante una confirmación explícita.
Que se logra
- Resultado: una oferta deja de estar disponible en el catálogo y se retira su media asociada tras confirmación.
- Caso de uso: una tienda descontinúa una línea de productos para que el equipo no vuelva a compartirla con clientes.
- Se combina con: detalle y media de producto.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Product Details > … > Delete - Componente(s):
ProductDetailsView.tsx
Como funciona
- Abre el menú
…. - Selecciona
Delete. - Confirma la acción en el diálogo.
- La aplicación vuelve al catálogo.
Reglas y validaciones
- La interfaz exige confirmación antes de enviar la eliminación.
- El backend aplica la eliminación en cascada de los recursos de media asociados.
Backend
- Servicios:
products,products-media(método: remove) - Hooks relevantes: la eliminación del producto limpia sus relaciones de media.
Relaciones
- Requiere: Detalle de producto.
- Dispara / afecta: Media de producto y la disponibilidad de la oferta en el catálogo.
Notas
- Por confirmar: el comportamiento de líneas históricas de deals y estimates después de eliminar la oferta.
id: edit-product modulo: productos app: crm nombre: Editar producto tipo: accion
Editar producto
Actualiza la información comercial, organización y facturación de un producto o servicio.
Que se logra
- Resultado: las condiciones comerciales de una oferta se actualizan en un único lugar antes de reutilizarla en ventas.
- Caso de uso: una empresa SaaS cambia un plan de anual a mensual y ajusta su precio sin crear una referencia nueva.
- Se combina con: categorías, monedas de la organización y estimates.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Products > fila de producto - Componente(s):
ProductDetailsView.tsx
Como funciona
- Abre la ficha de un producto.
- Edita nombre, SKU o descripción.
- Ajusta estado, categoría, tipo, existencias, precio o facturación en el panel lateral.
- Selecciona
Save Changes.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
SKU |
texto | No | Identificador comercial visible en la ficha. |
Status |
selección | Sí | Permite activar o desactivar la oferta. |
Category |
selección | No | Puede administrarse desde el mismo control. |
Type |
selección | Sí | Producto o servicio. |
Price |
importe | Sí | Se presenta con la moneda de la organización. |
Billing |
selección | Sí | Único o recurrente, con intervalo. |
Reglas y validaciones
- Los cambios de
Custom Fieldsse guardan por campo, aparte deSave Changes. - El detalle muestra los estimates relacionados que incluyen el producto.
Backend
- Servicios:
products,products-categories,organization-currencies(método: get/find/patch)
Relaciones
- Requiere: Categorías y monedas de la organización.
- Dispara / afecta: Deals y estimates que ya usan la oferta.
Notas
- Por confirmar: el alcance de impuestos y variantes en la interfaz actual.
id: import-products modulo: productos app: crm nombre: Importar productos tipo: accion
Importar productos
Carga productos desde un archivo y guía el mapeo de datos, categorías y opciones de importación.
Que se logra
- Resultado: una hoja existente se convierte en productos organizados, con categorías y búsqueda IA opcionales.
- Caso de uso: un mayorista incorpora cientos de referencias desde su lista comercial y revisa los registros con errores.
- Se combina con: categorías y búsqueda de productos con IA.
Donde esta
- Ruta:
/[orgId]/products - Acceso en UI:
Products > Import - Componente(s):
ImportProductsDialog.tsx,ImportProcessor.ts
Como funciona
- Carga un archivo en
Upload File. - En
Map Columns, asocia como mínimo la columna de nombre. - En
Map Categories, revisa las categorías detectadas. - En
Configure Options, decide si genera búsqueda IA y el tratamiento de duplicados. - Selecciona
Start Importy revisa el progreso, avisos y errores.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Mapeo de nombre | selección | Sí | Debe quedar asignado antes de continuar. |
| Categorías | mapeo | No | Es un paso opcional. |
| Generar IA | casilla | No | Está activada inicialmente. |
| Duplicados | selección | No | Inicialmente se omiten. |
Reglas y validaciones
- No se puede cerrar el diálogo mientras la importación está en curso.
- Los problemas encontrados pueden exportarse como CSV desde el resultado.
Backend
- Servicios:
products,products-categories,product-embeddings(método: create/find)
Relaciones
- Requiere: Catálogo y categorías.
- Dispara / afecta: Búsqueda IA cuando se selecciona su generación.
Notas
- Admite archivos XLSX, XLS y CSV.
id: product-ai-custom-fields modulo: productos app: crm nombre: IA y campos personalizados del producto tipo: configuracion
IA y campos personalizados del producto
Expone datos configurables del producto a búsquedas de asistentes IA.
Que se logra
- Resultado: los atributos relevantes de cada oferta pasan a formar parte de la información que puede recuperar la IA.
- Caso de uso: una inmobiliaria añade zona, habitaciones y tipo de inmueble para que el asistente encuentre opciones adecuadas.
- Se combina con: campos personalizados y búsqueda de productos con IA.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Product detail > Make searchable by AIyCustom Fields - Componente(s):
ProductDetailsView.tsx,ProductEmbeddingsReprocessDialog.tsx
Como funciona
- Define campos de tipo Product en
Settings. - Completa valores en el producto.
- Activa
Make searchable by AIsi debe aparecer en búsquedas IA.
Reglas y validaciones
- Los cambios de campos de un producto indexable actualizan el índice de IA.
Backend
- Servicios:
custom-fields,product-embeddings,products(método: find/create/patch)
Relaciones
- Requiere: Campos personalizados y asistentes IA.
- Dispara / afecta: Búsqueda de productos por IA.
Notas
- El mantenimiento de índices permite procesar embeddings faltantes, reprocesar todos los productos habilitados y eliminar embeddings huérfanos.
id: product-ai-search modulo: productos app: crm nombre: Búsqueda de productos con IA tipo: configuracion
Búsqueda de productos con IA
Permite que asistentes y automatizaciones encuentren productos configurados como buscables por IA.
Que se logra
- Resultado: asistentes IA y automatizaciones pueden localizar productos habilitados para responder con ofertas pertinentes.
- Caso de uso: una academia permite que su asistente recomiende el curso que corresponde a la pregunta de un prospecto.
- Se combina con: asistentes IA, automatizaciones y campos personalizados de producto.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Product Details > Make searchable by AI - Componente(s):
ProductDetailsView.tsx,ProductEmbeddingsReprocessDialog.tsx,SearchProductDialog.tsx
Como funciona
- Abre una ficha de producto.
- Activa
Make searchable by AI. - Completa información comercial y campos personalizados relevantes.
- Usa el flujo de reprocesamiento cuando esté disponible para renovar el índice.
Reglas y validaciones
- La búsqueda del selector de productos clasifica coincidencias por nombre y SKU.
- Los valores de campos personalizados participan en texto de búsqueda y, cuando se actualiza un producto indexable, en la actualización de IA.
- Por confirmar: qué roles y controles exponen el reprocesamiento masivo.
Backend
- Servicios:
products,product-embeddings(método: find/create/patch) - Hooks relevantes: los cambios de buscabilidad o campos personalizados actualizan el índice de ofertas indexables.
Relaciones
- Requiere: Asistentes IA y campos personalizados de producto.
- Dispara / afecta: Búsquedas de productos de Nova y automatizaciones.
Notas
- No se identificó una superficie de búsqueda semántica independiente para usuarios fuera de asistentes o automatizaciones.
id: product-catalog modulo: productos app: crm nombre: Catálogo de productos tipo: vista
Catálogo de productos
Consulta, crea y organiza productos y servicios.
Que se logra
- Resultado: un inventario comercial consultable que permite al equipo encontrar, crear y clasificar productos y servicios.
- Caso de uso: una distribuidora separa repuestos y servicios de instalación para que ventas elija rápidamente la oferta correcta.
- Se combina con: detalle de producto, categorías y
Deals.
Donde esta
- Ruta:
/[orgId]/products - Acceso en UI:
Sidebar > CRM > Products - Componente(s):
ProductsView.tsx,AddProductDialog.tsx,ProductCategoryManagement.tsx
Como funciona
- Abre
Products. - Busca o filtra el catálogo.
- Crea un producto o abre uno existente.
- Gestiona categorías desde el control correspondiente.
Reglas y validaciones
- Por confirmar: los límites de acciones masivas e importación.
Backend
- Servicios:
products,products-categories(método: find/create/patch/remove)
Relaciones
- Requiere: Categorías.
- Dispara / afecta: Detalle de producto.
Notas
- El catálogo admite productos y servicios.
id: product-categories modulo: productos app: crm nombre: Categorías de producto tipo: configuracion
Categorías de producto
Crea, renombra y elimina categorías para clasificar productos del catálogo.
Que se logra
- Resultado: el catálogo se agrupa con categorías reutilizables que facilitan la búsqueda y selección de ofertas.
- Caso de uso: una empresa de bienestar agrupa membresías, sesiones individuales y bonos para ordenarlas al vender.
- Se combina con: catálogo de productos y Catálogos públicos.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Product Details > Category > icono de configuración - Componente(s):
ProductCategoryManagement.tsx
Como funciona
- Abre el administrador de categorías.
- Escribe un nombre y selecciona
Add. - Usa el icono de lápiz para editar una categoría.
- Usa el icono de papelera y confirma para eliminarla.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Category name |
texto | Sí | No permite guardar un valor vacío. |
Reglas y validaciones
- La lista se ordena alfabéticamente y está paginada.
- La interfaz permite elegir 5, 10, 20 o 50 filas por página.
- Por confirmar: si el backend impide eliminar una categoría en uso.
Backend
- Servicios:
products-categories(método: find/create/patch/remove)
Relaciones
- Requiere: Productos.
- Dispara / afecta: Selector
Categorydel detalle de producto.
Notas
- No se encontró control de orden manual de categorías; se muestran por nombre.
id: product-detail modulo: productos app: crm nombre: Detalle de producto tipo: accion
Detalle de producto
Edita información comercial, precio, categoría, estado y facturación.
Que se logra
- Resultado: una ficha comercial completa y mantenible para que la misma oferta conserve información, precio, categoría y estado consistentes.
- Caso de uso: una clínica actualiza el valor y la modalidad de un tratamiento antes de que su equipo lo cotice.
- Se combina con: media, campos personalizados,
Dealsy estimates.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Products > fila de producto - Componente(s):
ProductDetailsView.tsx
Como funciona
- Abre un producto.
- Modifica detalles y organización.
- Selecciona
Save Changes. - Usa
DuplicateoDeleteen el menú.
Reglas y validaciones
- Los cambios de campos personalizados se guardan de forma independiente.
Backend
- Servicios:
products,products-categories(método: get/patch/find/remove)
Relaciones
- Requiere: Categorías y campos personalizados.
- Dispara / afecta: Deals y estimates que usan el producto.
Notas
- Admite tipos producto y servicio, y cobro único o recurrente.
id: product-media modulo: productos app: crm nombre: Media de producto tipo: accion
Media de producto
Adjunta imágenes y videos a un producto del catálogo.
Que se logra
- Resultado: cada oferta puede mostrar imágenes o videos que ayudan a reconocerla y explicarla visualmente.
- Caso de uso: un concesionario añade fotos y videos a cada vehículo para compartirlos desde conversaciones.
- Se combina con: detalle de producto y envío de productos desde conversaciones.
Donde esta
- Ruta:
/[orgId]/products/[id] - Acceso en UI:
Product detail > Media - Componente(s):
ProductMediaUpload.tsx
Como funciona
- Abre el producto.
- Arrastra o selecciona archivos en
Media. - Guarda el producto.
Reglas y validaciones
- Admite JPEG, PNG, WebP, MP4 y MOV.
- Las imágenes admiten hasta 5 MB y los videos hasta 100 MB.
Backend
- Servicios:
products-media,products(método: create/find/patch)
Relaciones
- Requiere: Producto.
- Dispara / afecta: Presentación del producto.
Notas
- El orden de la media se modifica arrastrando los elementos en la interfaz.
id: product-message-templates modulo: productos app: crm nombre: Plantillas para enviar productos tipo: configuracion
Plantillas para enviar productos
Define textos reutilizables para los distintos modos de compartir productos en conversaciones.
Que se logra
- Resultado: el equipo reutiliza mensajes coherentes al enviar productos, categorías o catálogos en una conversación.
- Caso de uso: una tienda define una plantilla con precio, descripción y enlace para responder consultas de WhatsApp con rapidez.
- Se combina con: envío de productos desde conversaciones y Catálogos públicos.
Donde esta
- Ruta:
/[orgId]/settings/products/product-message-templates - Acceso en UI:
Avatar menu > Settings > Products > Product Message Templates - Componente(s):
ProductMessageTemplatesList.tsx,AddEditProductMessageTemplateDialog.tsx
Como funciona
- Abre la configuración.
- Selecciona la pestaña del modo de envío.
- Selecciona
Add, redacta la plantilla y guárdala. - Usa el lápiz para editar o la papelera para eliminar una plantilla.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Nombre | texto | Sí | Identifica la plantilla. |
| Contenido | texto | Sí | Se usa como vista previa y mensaje enviado. |
| Predeterminada | opción | No | Se prioriza en el composer del mismo modo. |
Reglas y validaciones
- Los modos son
single_product,multi_individual,multi_catalog_linkycategory_link. - La lista muestra únicamente las plantillas del modo activo.
- Los campos personalizados de producto pueden utilizarse como marcadores de texto.
Backend
- Servicios:
product-send-message-templates,custom-fields(método: find/create/patch/remove)
Relaciones
- Requiere: Enviar productos desde conversaciones.
- Dispara / afecta: Vista previa de mensajes de producto.
Notas
- Por confirmar: la regla exacta que garantiza una única plantilla predeterminada por modo.
id: send-products-from-conversation modulo: productos app: crm nombre: Enviar productos desde una conversación tipo: integracion
Enviar productos desde una conversación
Comparte productos CRM como texto y, cuando el canal lo permite, imagen y enlace de catálogo.
Que se logra
- Resultado: un agente comparte una oferta seleccionada del CRM con su información y enlace, directamente en el hilo del cliente.
- Caso de uso: una tienda de muebles responde una consulta de WhatsApp con dos productos y el enlace de su catálogo público.
- Se combina con: Conversaciones, plantillas para enviar productos y Catálogos públicos.
Donde esta
- Ruta:
/[orgId]/conversations/[id] - Acceso en UI:
MessageInput > icono Products - Componente(s):
SendProductDialog.tsx,ProductSendTemplatePicker.tsx
Como funciona
- Abre el composer de una conversación y selecciona
Products. - Elige el modo, productos o categoría y, cuando aplica, un
Catalog Link. - Ajusta imagen, precio, descripción y enlace; selecciona una plantilla o edita el
Preview. - Selecciona
Send.
Reglas y validaciones
single_productrequiere un producto;multi_catalog_linkrequiere al menos dos;category_linkrequiere una categoría.- Los modos de catálogo o categoría requieren enlace público activo.
- En SMS solo se envía texto; no ofrece imagen.
- Solo administradores o propietarios pueden activar un catálogo o crear plantillas desde el composer.
Backend
- Servicios:
products,products-categories,product-send-message-templates,catalog-links,organization-currencies(método: find/create)
Relaciones
- Requiere: Conversaciones, productos y, para enlaces, Catalog Links.
- Dispara / afecta: Mensajes salientes de la conversación.
Notas
- No es WhatsApp Commerce ni crea deals automáticamente.
id: series app: crm nombre: Series estado: shipped permiso: can_access_campaigns
Series
Secuencias de automatizaciones que avanzan a cada contacto de forma independiente según sus propios tiempos y condiciones.
Para que sirve
- Una academia incorpora nuevos alumnos a una secuencia de bienvenida con mensajes y tareas separadas por días.
- Una inmobiliaria nutre prospectos que descargaron una guía y detiene la secuencia cuando agendan una visita.
- Un SaaS programa seguimientos comerciales que respetan la hora y los días permitidos para cada contacto.
- Una agencia revisa qué paso de una secuencia falló antes de volver a contactar a un lead.
Que lo hace diferente
- Cada contacto avanza en su propio calendario; no recibe todos los pasos al mismo tiempo que el resto de la audiencia.
- Cada paso ejecuta una automatización existente, conectando la secuencia con acciones del CRM y canales disponibles.
- Las automatizaciones pueden suscribir o retirar contactos de series según eventos del negocio.
- Pausar una serie congela los tiempos restantes y reanudarla los recupera, sin eliminar suscripciones.
- Incluye registros por paso para rastrear ejecuciones enviadas, fallidas u omitidas.
Acceso
- Ruta principal:
/[orgId]/campaigns/series - Como se llega:
Sidebar > Campaigns > Series - Permiso requerido:
can_access_campaigns
Alcance tecnico
- Frontend: rutas
/[orgId]/campaigns/series/**y componentesSeriesListView,SeriesStepEditorySeriesSubscribersTable. - Backend:
series,series-steps,series-subscriptions,series-subscription-logs,series-statsyprocess-series-step. - Integraciones externas: AWS EventBridge para las esperas programadas.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Gestionar series | series-management.md | Crea, activa, pausa y elimina secuencias. |
| Configurar pasos | series-step-editor.md | Vincula automatizaciones, demoras y ventanas de envío. |
| Consultar registros de pasos | series-step-logs.md | Audita ejecuciones enviadas, fallidas u omitidas. |
| Suscribir contactos | series-subscriptions.md | Agrega contactos individual o masivamente. |
| Gestionar suscriptores | series-subscriber-management.md | Filtra, ejecuta, completa o retira suscripciones. |
| Pausar y reanudar series | series-pause-resume.md | Congela y recupera las esperas pendientes. |
| Integrar series en automatizaciones | series-automation-nodes.md | Suscribe o retira contactos desde nodos de automatización. |
Relaciones
- Depende de: Automatizaciones y Contactos.
- Usado por: Automatizaciones, Contactos y Conversaciones.
Limitaciones y notas
- Una serie inactiva no admite suscripciones nuevas ni ejecuta pasos.
- Pausar no elimina contactos; eliminar la serie sí cancela suscripciones activas.
id: series-automation-nodes modulo: series app: crm nombre: Integrar series en automatizaciones tipo: automatizacion
Integrar series en automatizaciones
Permite suscribir o retirar contactos de una serie desde un flujo de automatización.
Que se logra
- Resultado: Las automatizaciones pueden incorporar o retirar contactos de secuencias de seguimiento según eventos reales.
- Caso de uso: Una inmobiliaria inscribe un lead en una serie de nutrición cuando completa un formulario y lo retira al agendar visita.
- Se combina con: Automatizaciones, Contactos y series.
Donde esta
- Ruta:
/[orgId]/automations/[automationId] - Acceso en UI:
Automation editor > Series - Componente(s):
SubscribeToSeriesDialog.tsx,UnsubscribeFromSeriesDialog.tsx
Como funciona
- Agregue un nodo de suscripción o retirada.
- Seleccione una serie; para retirada puede marcar todas.
- Guarde y publique la automatización.
- Cuando el flujo se ejecute, el contacto se suscribe o se retira.
Reglas y validaciones
- Suscribir omite contactos ya activos y series inactivas.
- Retirar cancela programaciones antes de marcar la suscripción retirada.
Backend
- Servicios:
automation-node-system-subscribe-to-series,automation-node-system-unsubscribe-from-series,series-subscriptions.
Relaciones
- Requiere: Automatizaciones, Series y Contactos.
- Dispara / afecta: avance en la secuencia.
Notas
Unsubscribepermite apuntar a una serie o a todas las series activas del contacto.
id: series-management modulo: series app: crm nombre: Gestionar series tipo: vista
Gestionar series
Crea, visualiza y elimina secuencias de automatización.
Que se logra
- Resultado: El equipo mantiene secuencias activas, pausadas o eliminadas sin perder visibilidad de sus contactos.
- Caso de uso: Una academia activa una serie de bienvenida para nuevos alumnos y la pausa durante vacaciones.
- Se combina con: Suscripciones de series, Automatizaciones y Contactos.
Donde esta
- Ruta:
/[orgId]/campaigns/series - Acceso en UI:
Campaigns > Series - Componente(s):
SeriesListView.tsx
Como funciona
- Cree una serie y asigne nombre.
- Abra la serie para añadir pasos y contactos.
- Active o pause mediante el interruptor.
- Elimine desde las acciones de la serie.
Reglas y validaciones
- Una serie inactiva no acepta contactos nuevos.
- Al eliminarla se cancelan las agendas de suscriptores activos y quedan retirados.
Backend
- Servicios:
series(find/create/patch/remove). - Efectos: al borrar, se cancelan programaciones de suscripciones activas.
Relaciones
- Requiere: Automatizaciones.
- Dispara / afecta: pasos, suscripciones y agendas.
Notas
- La activación se controla tanto desde la lista como desde la cabecera del detalle.
id: series-pause-resume modulo: series app: crm nombre: Pausar y reanudar una serie tipo: accion
Pausar y reanudar una serie
Detiene temporalmente una secuencia sin retirar a sus contactos.
Que se logra
- Resultado: Las esperas pendientes se congelan y continúan después, sin sacar a los contactos de la secuencia.
- Caso de uso: Una agencia pausa una serie durante una contingencia comercial y la reanuda respetando el avance de cada lead.
- Se combina con: Gestión de series y suscriptores.
Donde esta
- Ruta:
/[orgId]/campaigns/seriesy/[orgId]/campaigns/series/[id] - Acceso en UI:
Series row o header > status switch - Componente(s):
SeriesStatusToggle.tsx
Como funciona
- Desactive el interruptor.
- Confirme si existen contactos activos.
- Vuelva a activarlo para recuperar la ejecución.
Reglas y validaciones
- Pausar conserva la posición de los contactos y congela la espera restante.
- Mientras está inactiva no admite contactos ni ejecuta pasos.
Backend
- Servicios:
series(patch). - Efectos: cancela agendas al pausar y las recrea al reanudar.
Relaciones
- Requiere: serie existente.
- Dispara / afecta: suscripciones y programación.
Notas
- Pausar no equivale a eliminar.
id: series-step-editor modulo: series app: crm nombre: Configurar pasos de una serie tipo: configuracion
Configurar pasos de una serie
Construye una secuencia de automatizaciones con demora, horario y días permitidos por paso.
Que se logra
- Resultado: Cada contacto recibe acciones encadenadas con demoras, días y ventanas de envío definidos para cada paso.
- Caso de uso: Un SaaS programa un email de bienvenida, una tarea comercial dos días después y un recordatorio una semana más tarde.
- Se combina con: Automatizaciones, registros de pasos y suscripciones.
Donde esta
- Ruta:
/[orgId]/campaigns/series/[id] - Acceso en UI:
Campaigns > Series > abrir serie > Schedule - Componente(s):
SeriesStepEditor.tsx
Como funciona
- Use
Add Stepy seleccione una automatización. - Abra el icono de engranaje del paso.
- Configure demora, ventana horaria y días permitidos.
- Guarde y active o desactive el paso.
- Previsualice la automatización o elimine el paso.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
| Automation | selector | Sí | Automatización ejecutada por el paso. |
| Delay type | selector | No | Inmediato, minutos, horas o días. |
| Delay value | número | Condicional | Obligatorio si no es inmediato. |
| Send window | selector | No | anytime o intervalo horario. |
| Allowed days | selección múltiple | No | Días no elegidos aplazan el envío. |
| Step active | interruptor | No | Un paso inactivo se omite. |
Reglas y validaciones
- Al borrar un paso con contactos esperando, debe moverlos, completarlos o retirarlos.
Backend
- Servicios:
series-steps(create/patch/remove),series-stats(find). - Efectos: crea o ajusta la próxima programación individual.
Relaciones
- Requiere: Automatizaciones.
- Dispara / afecta: suscripciones activas y ejecución de automatizaciones.
Notas
- La ejecución inmediata no espera programación externa.
id: series-step-logs modulo: series app: crm nombre: Consultar registros de pasos tipo: vista
Consultar registros de pasos
Permite auditar las ejecuciones de un paso de serie y abrir su recorrido de automatización.
Que se logra
- Resultado: Se puede auditar si cada paso se envió, falló o fue omitido y vincularlo a su ejecución.
- Caso de uso: Un equipo de ventas revisa por qué un lead no recibió el segundo seguimiento de una serie.
- Se combina con: Automatizaciones, pasos de series y Contactos.
Donde esta
- Ruta:
/[orgId]/campaigns/series/[id] - Acceso en UI:
Series step > icono de registros - Componente(s):
SeriesStepLogsDrawer.tsx
Como funciona
- Abra el registro de un paso.
- Filtre por estado.
- Consulte fecha, contacto y estado.
- Abra la ejecución vinculada cuando esté disponible.
Reglas y validaciones
- Registra ejecuciones enviadas, fallidas u omitidas.
Backend
- Servicios:
series-subscription-logs(find).
Relaciones
- Requiere: pasos y suscripciones de Series.
- Dispara / afecta: auditoría de Automatizaciones.
Notas
- La vista tiene paginación.
id: series-subscriber-management modulo: series app: crm nombre: Gestionar suscriptores de series tipo: vista
Gestionar suscriptores de series
Consulta el avance de contactos suscritos y permite intervenir sobre sus ejecuciones activas.
Que se logra
- Resultado: El equipo identifica contactos en espera, completados o retirados y actúa sobre su participación.
- Caso de uso: Una consultora retira a un prospecto que ya firmó del flujo automático de seguimiento.
- Se combina con: Series, Contactos y registros de pasos.
Donde esta
- Ruta:
/[orgId]/campaigns/series/[id]/subscribers - Acceso en UI:
Series > Subscribers - Componente(s):
SeriesSubscribersTable.tsx
Como funciona
- Filtre por estado o paso actual.
- Abra el contacto desde su fila.
- Para una suscripción activa use
Run Now,Mark CompleteoRemove.
Reglas y validaciones
- Las acciones solo aparecen para suscripciones
active. Run Nowpuede ejecutar, reprogramar, omitir o completar según las condiciones del paso.
Backend
- Servicios:
series-subscriptions(find/patch),process-series-step(create). - Efectos: retirar o completar cancela la programación pendiente.
Relaciones
- Requiere: Series y suscripciones.
- Dispara / afecta: ejecución del siguiente paso.
Notas
- Lista 20 suscripciones por página, con las más recientes primero.
id: series-subscriptions modulo: series app: crm nombre: Suscribir contactos a una serie tipo: accion
Suscribir contactos a una serie
Agrega uno o varios contactos a una secuencia.
Que se logra
- Resultado: Contactos individuales o grupos entran a una secuencia y avanzan con un calendario propio.
- Caso de uso: Una escuela añade todos los inscritos a un programa de orientación sin enviar el mismo paso al mismo tiempo.
- Se combina con: Contactos, series y Automatizaciones.
Donde esta
- Ruta:
/[orgId]/campaigns/series/[id] - Acceso en UI:
Series > Add Contact - Componente(s):
AddToSeriesDialog.tsx,ContactSeriesSection.tsx
Como funciona
- Abra
Add Contact. - Seleccione una serie si no estaba preseleccionada.
- Busque un contacto por nombre o agregue contactos preseleccionados.
- Confirme la suscripción.
Reglas y validaciones
- La búsqueda requiere dos caracteres.
- Una serie inactiva no admite suscriptores.
- Suscripciones activas duplicadas no se crean; reingreso depende de la configuración de la serie.
Backend
- Servicios:
series-subscriptions(create). - Efectos: ejecuta el primer paso o crea su programación.
Relaciones
- Requiere: Series activa y Contactos.
- Dispara / afecta: pasos y agendas individuales.
Notas
- Puede abrirse desde detalle de contacto o acciones masivas.
id: tickets-legacy app: crm nombre: Tickets legacy estado: shipped permiso: permisos granulares de tickets
Tickets legacy
Customer Service original basado en correo para atender solicitudes vinculadas con contactos. Convive con la app Helpdesk, que tiene su propio módulo y flujos.
Para que sirve
- Una empresa que recibe solicitudes por correo reúne los casos de clientes en una bandeja operativa vinculada a sus contactos.
- Un equipo de soporte clasifica prioridades, responsables y etapas para que las solicitudes no queden sin seguimiento.
- Una mesa de ayuda procesa lotes de casos para asignar, cerrar o marcar tickets sin repetir la acción uno por uno.
- Una organización migra un histórico de solicitudes desde una hoja para conservar la continuidad de atención.
- Un miembro del equipo abre un caso de soporte sobre AchieveApex desde
Support, incluso sin acceso a CRM.
Que lo hace diferente
- Los tickets legacy se vinculan con Contactos, etiquetas, pipelines y campos personalizados del CRM en lugar de vivir como correos aislados.
- El hilo usa el Inbox Channel que originó el ticket y enruta las respuestas por Gmail u Outlook, manteniendo el proveedor del caso.
- Puede asignarse un asistente IA y una regla de seguimiento directamente en las propiedades del ticket.
- El módulo legacy y Helpdesk coexisten pero son productos distintos: Helpdesk tiene sus propios tickets, fuentes y flujos; no se confunden las rutas ni los datos.
- El portal
Supportse destina a casos sobre AchieveApex y permite creación manual o asistida por Nova, separado de la bandeja de correo legacy.
Acceso
- Ruta principal:
/[orgId]/customer-service - Como se llega:
Sidebar > Tickets - Permiso requerido: permisos granulares de tickets
Alcance tecnico
- Frontend:
CustomerServiceView, detalle y componentestickets. - Backend:
support-tickets,support-tickets-batch-actions,support-ticket-email-templates,ticket-messages-*eimport-support-tickets. - Superficies publicas: ninguna.
- Integraciones externas: Gmail y Outlook.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Bandeja y filtros | ticket-inbox.md | Consulta tickets, vistas y criterios de búsqueda. |
| Crear ticket | create-ticket.md | Crea un ticket para un contacto. |
| Propiedades y seguimiento | ticket-properties.md | Gestiona estado, prioridad, responsables y seguimiento. |
| Responder por email | ticket-email-replies.md | Envía respuestas o notas internas. |
| Mensajes por Gmail y Outlook | ticket-email-channels.md | Integra el hilo con el proveedor conectado. |
| Acciones masivas | ticket-batch-actions.md | Opera varios tickets seleccionados. |
| Tablero Kanban | ticket-kanban.md | Mueve tickets por etapas de pipeline. |
| Importar tickets | import-tickets.md | Carga y mapea tickets desde una hoja. |
| Plantillas de email | ticket-email-templates.md | Registra la capacidad backend de plantillas. |
| Portal de casos de soporte | support-portal.md | Describe la superficie /support y Nova Support. |
Relaciones
- Depende de: Contactos, Inbox Channels, Tags y asistentes IA.
- Usado por: Contactos y Automatizaciones.
Limitaciones y notas
- Es el sistema legacy y no reemplaza el módulo Helpdesk.
- Convive con la app Helpdesk; sus tickets, rutas y flujos no deben asumirse equivalentes.
- No se identificó una interfaz independiente para administrar plantillas de email; estas se utilizan en seguimientos de asistentes de tickets.
- Los tickets creados manualmente no permiten seleccionar un proveedor de correo en el formulario.
id: create-ticket modulo: tickets-legacy app: crm nombre: Crear ticket tipo: accion
Crear ticket
Abre un ticket asociado a un contacto existente o creado durante el flujo.
Que se logra
- Resultado: una solicitud queda registrada y vinculada a un contacto, con una etapa de trabajo opcional.
- Caso de uso: una empresa B2B registra una incidencia reportada por teléfono para mantenerla junto al historial del cliente.
- Se combina con: Contactos, pipelines y bandeja de tickets.
Donde esta
- Ruta:
/[orgId]/customer-service - Acceso en UI:
Tickets > New Ticket - Componente(s):
NewTicketDialog.tsx
Como funciona
- Selecciona
New Ticket. - Escribe el asunto.
- Busca un contacto o crea uno desde el selector.
- Si eliges pipeline, selecciona también una etapa.
- Selecciona
Create Ticket.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Subject |
texto | Sí | Identifica el ticket. |
Contact |
búsqueda | Sí | Puede crear un contacto nuevo. |
Contact Email |
Condicional | Se ofrece si el contacto elegido no tiene email. | |
Pipeline y Pipeline Stage |
selección | No / condicional | La etapa es obligatoria al elegir pipeline. |
Reglas y validaciones
- La búsqueda de contacto comienza con dos caracteres.
- No permite crear si falta asunto, contacto o etapa requerida.
Backend
- Servicios:
support-tickets,contacts,pipelines,pipeline-stages(método: find/create/patch)
Relaciones
- Requiere: Contactos; opcionalmente Pipelines.
- Dispara / afecta: Bandeja y detalle de tickets.
Notas
- La creación manual no permite seleccionar ni asigna un canal de correo en el formulario.
id: import-tickets modulo: tickets-legacy app: crm nombre: Importar tickets tipo: accion
Importar tickets
Importa tickets desde una hoja de cálculo mediante carga, mapeo y procesamiento.
Que se logra
- Resultado: un histórico de solicitudes se incorpora al módulo, creando los contactos y tickets necesarios desde una hoja.
- Caso de uso: una empresa que cambia de sistema migra sus casos abiertos para que el equipo continúe su seguimiento.
- Se combina con: Contactos, asistentes IA, pipelines y bandeja de tickets.
Donde esta
- Ruta:
/[orgId]/customer-service - Acceso en UI:
Tickets > Import Tickets - Componente(s):
ImportTicketsButton.tsx,UploadFile.tsx,ColumnsMapper.tsx,ImportTickets.tsx
Como funciona
- Selecciona
Import Ticketsy carga un archivo. - Relaciona columnas de origen con los datos de ticket.
- Completa los campos requeridos mediante mapeo o configuración de IA.
- Configura asistente, seguimiento y pipeline si corresponde.
- Continúa al procesamiento y finaliza el flujo.
Reglas y validaciones
- Deben resolverse
subject, contenido, nombre y email, por mapeo o IA. - El diálogo no permite cerrarse mientras procesa.
Backend
- Servicios:
import-support-tickets,support-tickets,contacts(método: create)
Relaciones
- Requiere: Contactos y tickets legacy.
- Dispara / afecta: Bandeja de tickets.
Notas
- La interfaz admite únicamente archivos XLSX.
- Por confirmar: política de duplicados.
id: support-portal modulo: tickets-legacy app: crm nombre: Portal de casos de soporte tipo: vista
Portal de casos de soporte
Ofrece a miembros de la organización una bandeja de casos propios y un flujo de creación manual o asistido por Nova.
Que se logra
- Resultado: los miembros de una organización pueden abrir y seguir sus propios casos de soporte sobre AchieveApex.
- Caso de uso: un usuario sin acceso CRM solicita ayuda a Nova y confirma la creación del caso desde
Support. - Se combina con: Nova Support y organizaciones.
Donde esta
- Ruta:
/[orgId]/support - Acceso en UI:
Header app switcher > Support - Componente(s):
SupportCasesListView.tsx
Como funciona
- Abre
Support. - Filtra o busca casos por estado, asunto, número o fuente.
- Selecciona
Generate ticket with Novapara pedir ayuda guiada, oCreate manuallypara abrir un caso. - Abre un caso para responder, adjuntar archivos y, si corresponde, marcarlo como resuelto.
Reglas y validaciones
- Está disponible para miembros de la organización sin depender del acceso CRM u Operations.
- Administradores y propietarios ven casos de la organización; miembros ven los creados por ellos.
- Nova crea el ticket después de confirmación o solicitud explícita del usuario.
Backend
- Servicios: Por confirmar: servicios específicos del portal de soporte no incluidos en el inventario solicitado.
Relaciones
- Requiere: Organizaciones y Nova Support.
- Dispara / afecta: Casos de soporte de AchieveApex.
Notas
- Esta superficie es distinta de la bandeja legacy de correo y del módulo Helpdesk.
id: ticket-batch-actions modulo: tickets-legacy app: crm nombre: Acciones masivas de tickets tipo: accion
Acciones masivas de tickets
Aplica cambios operativos a varios tickets seleccionados desde la bandeja.
Que se logra
- Resultado: varios casos reciben una misma actualización operativa en una sola operación.
- Caso de uso: una empresa de envíos cierra y marca como leídos los tickets resueltos de una incidencia masiva.
- Se combina con: bandeja y filtros de tickets, asistentes IA y miembros de equipo.
Donde esta
- Ruta:
/[orgId]/customer-service - Acceso en UI:
Tickets > seleccionar filas > BatchActionBar - Componente(s):
BatchActionBar.tsx
Como funciona
- Selecciona una o varias filas.
- Asigna un asistente IA o miembro de equipo, cambia prioridad, marca como no leído, cierra o elimina.
- Confirma las acciones de cierre o eliminación.
Reglas y validaciones
- La barra muestra el número de tickets seleccionados.
- Las operaciones se ejecutan como una acción única y después se actualiza la bandeja.
Backend
- Servicios:
support-tickets-batch-actions(método: create)
Relaciones
- Requiere: Bandeja de tickets.
- Dispara / afecta: Estado, prioridad, asignación y lectura de tickets.
Notas
- Por confirmar: el modelo de permisos aplicado por el servicio para cada tipo de acción.
id: ticket-email-channels modulo: tickets-legacy app: crm nombre: Mensajes de tickets por Gmail y Outlook tipo: integracion
Mensajes de tickets por Gmail y Outlook
El ticket carga y envía correo según el Inbox Channel conectado.
Que se logra
- Resultado: los mensajes del caso se leen y responden mediante el proveedor de correo conectado al ticket.
- Caso de uso: un despacho legal atiende un correo entrante desde Outlook y conserva copias, adjuntos y el hilo en el caso.
- Se combina con: Inbox Channels, respuestas y notas de tickets.
Donde esta
- Ruta:
/[orgId]/customer-service/[ticketId] - Acceso en UI:
Ticket detail > Reply - Componente(s):
EmailEditor.tsx,EmailActionBar.tsx,EmailContent.tsx
Como funciona
- Abre un ticket procedente de un canal conectado.
- Selecciona
Reply, completa el editor y, opcionalmente,Cc,Bcc, adjuntos o imágenes. - Selecciona
SendoSend and close. - Alternativamente, usa
Add notepara registrar una nota interna.
Reglas y validaciones
- Los tickets cerrados deben reabrirse para responder.
- Las notas son internas y no presentan el control de adjuntos.
- El editor admite formato enriquecido, listas, enlaces, alineación e imágenes.
Backend
- Servicios:
ticket-messages-gmail,ticket-messages-outlook,ticket-messages-transform-incoming-gmail,ticket-messages-transform-incoming-outlook,ticket-messages-transform-outgoing-gmail,ticket-messages-transform-outgoing-outlook(método: find/create)
Relaciones
- Requiere: Gmail u Outlook configurados como Inbox Channel.
- Dispara / afecta: Hilo, archivos y estado del ticket.
Notas
- El canal aplicable se decide por el ticket; no se confirma una selección manual de proveedor en el editor.
id: ticket-email-replies modulo: tickets-legacy app: crm nombre: Respuestas y notas de tickets tipo: accion
Respuestas y notas de tickets
Responde al cliente por email o añade una nota interna en la conversación.
Que se logra
- Resultado: el equipo responde al cliente o deja una nota interna sin salir del contexto del ticket.
- Caso de uso: un proveedor de software contesta una incidencia con un adjunto y la cierra cuando confirma la solución.
- Se combina con: Gmail u Outlook e hilo del ticket.
Donde esta
- Ruta:
/[orgId]/customer-service/[ticketId] - Acceso en UI:
Ticket detail > ReplyoAdd note - Componente(s):
EmailEditor.tsx,EmailActionBar.tsx
Como funciona
- Abre un ticket no cerrado.
- Elige
ReplyoAdd note. - Escribe el contenido y añade adjuntos para una respuesta.
- Selecciona
SendoSend and close.
Reglas y validaciones
- Los tickets cerrados deben reabrirse para permitir una respuesta.
- Las notas son internas y no aceptan adjuntos.
Backend
- Servicios:
ticket-messages-gmailoticket-messages-outlook(método: find/create),support-tickets(método: patch)
Relaciones
- Requiere: Gmail u Outlook configurado.
- Dispara / afecta: Hilo de ticket y estado.
Notas
Send and closeenvía y cierra en una misma acción.
id: ticket-email-templates modulo: tickets-legacy app: crm nombre: Plantillas de email de tickets tipo: configuracion
Plantillas de email de tickets
El backend expone plantillas de email para los flujos de tickets.
Que se logra
- Resultado: el sistema dispone de una capacidad backend para gestionar textos reutilizables de correo en flujos de tickets.
- Caso de uso: una mesa de ayuda puede estandarizar una respuesta inicial cuando su superficie de configuración esté disponible.
- Se combina con: tickets legacy y respuestas por email.
Donde esta
- Ruta: Por confirmar: no se identificó una ruta de configuración en las superficies revisadas.
- Acceso en UI: Por confirmar: componente de administración no localizado.
- Componente(s): Por confirmar.
Como funciona
- Por confirmar: flujo de creación, selección y edición de plantillas.
Reglas y validaciones
- Por confirmar: variables permitidas, destinatarios y permisos.
Backend
- Servicios:
support-ticket-email-templates(método: find/get/create/patch/remove)
Relaciones
- Requiere: Tickets legacy.
- Dispara / afecta: Respuestas de correo de tickets.
Notas
- Se conserva como capacidad backend confirmada; su superficie web no se pudo verificar en el código indicado.
id: ticket-inbox modulo: tickets-legacy app: crm nombre: Bandeja y filtros de tickets tipo: vista
Bandeja y filtros de tickets
Lista los tickets de correo y permite filtrarlos antes de abrir su detalle.
Que se logra
- Resultado: el equipo ve y prioriza la cola de solicitudes de correo usando vistas, búsqueda y filtros operativos.
- Caso de uso: una empresa de mantenimiento filtra los casos urgentes asignados a un técnico antes de iniciar la jornada.
- Se combina con: propiedades del ticket, Inbox Channels y vistas.
Donde esta
- Ruta:
/[orgId]/customer-service - Acceso en UI:
Sidebar > Tickets - Componente(s):
CustomerServiceView.tsx,TicketList.tsx,TicketFilters.tsx
Como funciona
- Abre
Tickets. - Busca o selecciona una vista.
- Filtra por contacto, agente, estado, prioridad, pipeline o etapa.
- Selecciona una fila para abrir el detalle.
Reglas y validaciones
- Cambiar el pipeline elimina el filtro de etapa hasta elegir una nueva.
- La página exige al menos un Inbox Channel activo; en caso contrario muestra la configuración vacía.
Backend
- Servicios:
support-tickets,inbox-channels,views(método: find)
Relaciones
- Requiere: Inbox Channels.
- Dispara / afecta: Detalle de ticket.
Notas
- Por confirmar: los filtros de etiquetas declarados por el tipo de datos no se presentan en el panel revisado.
id: ticket-kanban modulo: tickets-legacy app: crm nombre: Tablero Kanban de tickets tipo: vista
Tablero Kanban de tickets
Visualiza tickets por etapas de un pipeline y permite moverlos entre columnas.
Que se logra
- Resultado: el estado de los casos se visualiza como un flujo y cada ticket puede avanzar entre etapas.
- Caso de uso: una empresa de instalación mueve solicitudes desde diagnóstico hasta visita agendada para detectar cuellos de botella.
- Se combina con: pipelines y propiedades del ticket.
Donde esta
- Ruta:
/[orgId]/customer-service - Acceso en UI:
Tickets > vista Kanban - Componente(s):
TicketKanbanView.tsx,TicketCard.tsx
Como funciona
- Abre la vista Kanban y selecciona un pipeline.
- Aplica condiciones de filtrado si son necesarias.
- Arrastra tarjetas a otra etapa.
- En modo de edición, crea, renombra, ordena o elimina etapas.
Reglas y validaciones
- Al mover una tarjeta se actualiza su etapa de pipeline.
- En plan Free la interfaz limita el pipeline a cinco etapas.
- Al eliminar una etapa, la interfaz mueve sus tickets a la etapa anterior cuando existe.
Backend
- Servicios:
support-tickets,pipelines,pipeline-stages(método: find/create/patch/remove)
Relaciones
- Requiere: Pipelines de tickets.
- Dispara / afecta: Propiedades del ticket.
Notas
- Por confirmar: límites de cantidad de pipelines según plan.
id: ticket-properties modulo: tickets-legacy app: crm nombre: Propiedades y seguimiento del ticket tipo: accion
Propiedades y seguimiento del ticket
Edita estado, prioridad, responsables, etiquetas, pipeline, campos personalizados y seguimiento.
Que se logra
- Resultado: cada caso conserva responsable, prioridad, estado y seguimiento para que el equipo sepa quién debe actuar y cuándo.
- Caso de uso: una aseguradora asigna un reclamo urgente a un especialista y programa una regla de seguimiento con IA.
- Se combina con: etiquetas, campos personalizados, asistentes IA y pipelines.
Donde esta
- Ruta:
/[orgId]/customer-service/[ticketId] - Acceso en UI:
Ticket detail > panel derecho - Componente(s):
TicketProperties.tsx,CustomFieldsDialog.tsx
Como funciona
- Abre un ticket.
- Ajusta las propiedades requeridas.
- Selecciona
Updatepara aplicar los cambios pendientes. - Para seguimiento, asigna un asistente IA con reglas habilitadas y selecciona regla y fecha.
Reglas y validaciones
- Los estados disponibles son
Open,Pending,ClosedyWaiting Customer. - Las prioridades son
Low,Medium,HighyUrgent. - Cambiar el asistente IA borra la regla de seguimiento seleccionada.
- La fecha de seguimiento permanece deshabilitada hasta escoger una regla.
Backend
- Servicios:
support-tickets,tags,custom-fields,ai-assistants,pipelines,pipeline-stages(método: find/get/patch)
Relaciones
- Requiere: Etiquetas, campos personalizados y asistentes IA.
- Dispara / afecta: Estado, responsable y seguimiento del ticket.
Notas
- Las actualizaciones en tiempo real sincronizan el panel cuando otro usuario modifica el ticket.
id: vector-storage app: crm nombre: Almacenamiento vectorial estado: shipped permiso: can_access_ai_assistant
Almacenamiento vectorial
Pantalla para crear y revisar contenedores vectoriales de la organización. Muestra documentos y el avance de embedding que devuelve el servicio.
Para que sirve
- Una empresa con documentación propia crea contenedores separados para controlar el material vectorizado de cada área.
- Un equipo de operaciones revisa cuántos documentos de un contenedor ya están listos para usarse en búsquedas semánticas.
- Una empresa de servicios crea un contenedor inicial para preparar una base de conocimiento vectorial de la organización.
Que lo hace diferente
- El almacenamiento se administra dentro de la organización de AchieveApex y muestra por contenedor los documentos detectados y el avance de embedding.
- El estado visible distingue entre material pendiente y material completamente vectorizado, en vez de ocultar el procesamiento tras una carga de archivos.
- La pantalla actual es una superficie de administración: el código revisado no confirma todavía qué módulos consumen esos contenedores, cómo ingresan los documentos ni el proveedor de embeddings.
Acceso
- Ruta principal:
/[orgId]/ai-vector-storage - Como se llega: URL directa
/[orgId]/ai-vector-storage - Permiso requerido:
can_access_ai_assistant
Alcance tecnico
- Frontend:
ai-vector-storage/page.tsxyVectorStorageView.tsx. - Backend:
vector-storagesse invoca desde frontend, pero no hay implementación de ese servicio en este repositorio;product-embeddingsyproducts-embeddings-adminson servicios internos. - Superficies publicas: ninguna.
- Integraciones externas: ninguna identificada en esta pantalla.
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Listado de almacenamientos vectoriales | storage-list.md | Muestra almacenamientos, documentos y progreso de embeddings. |
| Crear almacenamiento vectorial | create-storage.md | Crea un almacenamiento con nombre obligatorio y descripción opcional. |
| Progreso de vectorización | storage-progress.md | Compara documentos totales y documentos con embedding. |
Relaciones
- Depende de: el servicio
vector-storages. - Usado por: la propia pantalla de almacenamiento vectorial.
Limitaciones y notas
Por confirmar: la fuente de documentos, el proveedor de embeddings y los permisos reales de vector-storages; no están implementados en el backend revisado.
id: create-storage modulo: vector-storage app: crm nombre: Crear almacenamiento vectorial tipo: accion
Crear almacenamiento vectorial
Crea un almacenamiento con nombre obligatorio y descripción opcional.
Que se logra
- Resultado: la organización crea un contenedor identificable para separar y seguir su material vectorizado.
- Caso de uso: una red de franquicias abre un contenedor para la documentación de soporte antes de preparar su base de conocimiento.
- Se combina con: Listado de almacenamientos vectoriales y Progreso de vectorización.
Donde esta
- Ruta:
/[orgId]/ai-vector-storage - Acceso en UI:
AI Vector Storage - Componente(s): VectorStorageView.tsx y servicios de embeddings
Como funciona
- Pulsa
Create New Storage. - Escribe
Storage Name;Descriptiones opcional. - Pulsa
Create Storage; la tarjeta nueva se coloca al inicio con cero documentos y cero embeddings. - En una pantalla vacía,
Create First Storagecrea directamente un contenedor llamadoDefault Storage.
Campos y opciones
| Campo | Tipo | Obligatorio | Notas |
|---|---|---|---|
Storage Name |
texto | Si | El formulario usa la validación HTML requerida. |
Description |
texto | No | Se muestra debajo del nombre en la tarjeta. |
Reglas y validaciones
- La interfaz registra fallos en consola; no muestra un aviso de error al usuario.
Backend
- Servicios:
vector-storages(create). - Efectos: crea el registro con contadores iniciales en cero.
Relaciones
- Requiere: una organización en la ruta.
- Dispara / afecta:
storage-listystorage-progress.
Notas
Por confirmar: validación de nombre, persistencia y autorización del servicio; el backend no contiene vector-storages.
id: storage-list modulo: vector-storage app: crm nombre: Listado de almacenamientos vectoriales tipo: vista
Listado de almacenamientos vectoriales
Muestra almacenamientos, documentos y progreso de embeddings.
Que se logra
- Resultado: el equipo ve qué contenedores vectoriales existen, cuánto material contienen y si su preparación ya terminó.
- Caso de uso: una empresa de consultoría compara sus contenedores de conocimiento comercial y técnico para detectar cuál sigue pendiente de procesamiento.
Donde esta
- Ruta:
/[orgId]/ai-vector-storage - Acceso en UI:
AI Vector Storage - Componente(s): VectorStorageView.tsx
Como funciona
- Abre la ruta directa
/[orgId]/ai-vector-storage. - Espera el indicador de carga mientras se consulta la lista ordenada por creación descendente.
- Revisa cada tarjeta: nombre, descripción si existe, fecha, número de documentos y avance de embedding.
- Si no hay registros, usa el estado vacío para crear el primero.
Reglas y validaciones
- No hay acciones de editar, eliminar, cargar documentos ni buscar en esta interfaz.
- La consulta usa
orgIdy recibe hasta lo que el servicio devuelva; la pantalla no impone paginación.
Backend
- Servicios:
vector-storages(find).
Relaciones
- Requiere: respuesta del servicio
vector-storages. - Dispara / afecta: muestra el avance descrito en
storage-progress.
Notas
Por confirmar: el servicio backend y sus permisos no existen en este checkout.
id: storage-progress modulo: vector-storage app: crm nombre: Progreso de vectorización tipo: vista
Progreso de vectorización
Compara documentos totales y documentos con embedding.
Que se logra
- Resultado: el equipo sabe si todos los documentos visibles de un contenedor ya cuentan con embedding o si debe esperar procesamiento.
- Caso de uso: un equipo de soporte comprueba que el contenedor de manuales terminó de vectorizarse antes de evaluar su uso posterior.
- Se combina con: Listado de almacenamientos vectoriales y Crear almacenamiento vectorial.
Donde esta
- Ruta:
/[orgId]/ai-vector-storage - Acceso en UI:
AI Vector Storage - Componente(s): VectorStorageView.tsx y servicios de embeddings
Como funciona
- Abre una tarjeta de
Vector Storages. - Compara el valor de
documentsconembedded. - El icono de verificación verde indica que ambos conteos coinciden; el indicador giratorio señala que todavía falta procesamiento.
Reglas y validaciones
- La pantalla considera completo un contenedor cuando los dos conteos son iguales, incluidos los contenedores vacíos.
- No hay acción para iniciar, pausar ni reintentar el procesamiento.
Backend
- Servicios:
vector-storages(find).
Relaciones
- Requiere: contadores de documentos y embeddings provistos por el servicio.
- Dispara / afecta: solo la representación de cada tarjeta.
Notas
Por confirmar: qué proceso incrementa los conteos y cómo se recupera de un error.
id: voice-sms app: crm nombre: Calling y SMS estado: shipped permiso: can_access_crm
Calling y SMS
Administra telefonía Telnyx, SMS, números, agentes, llamadas y cumplimiento A2P por organización.
Para que sirve
- Un concesionario compra un número local y distribuye las llamadas de ventas entre sus asesores disponibles.
- Una clínica define saludo, cola y grabación para que pacientes esperen una respuesta o dejen información útil al equipo.
- Una inmobiliaria enruta llamadas a un asistente de voz y usa agentes humanos como respaldo.
- Un negocio estadounidense registra su campaña 10DLC para enviar SMS A2P desde sus números locales.
- Un despacho legal consulta grabaciones y transcripciones para revisar la atención telefónica y los cargos asociados.
Que lo hace diferente
- Configura llamadas, SMS, números, agentes, cumplimiento y costos en la misma organización que usa el CRM y el inbox.
- Puede enrutar llamadas hacia agentes humanos, asistentes de voz o un esquema humano con respaldo de IA.
- El historial de llamadas incorpora grabaciones, transcripciones y diagnóstico, y se relaciona con Conversaciones para conservar contexto.
- Gestiona el ciclo 10DLC, incluida una página pública de consentimiento, junto con el bloqueo de envíos SMS del contacto.
- Une la compra de números y los servicios recurrentes con Stripe, mientras el uso y algunas tarifas se muestran dentro de Apex.
Acceso
- Ruta principal:
/[orgId]/settings/voice-channel - Como se llega:
Avatar menu > Settings > Calling & SMS - Permiso requerido:
can_access_crm; los enlaces Telnyx y costos son de superadmin.
Alcance tecnico
- Frontend: rutas
settings/voice-channely componentes de configuración de voz - Backend:
voice-channels,voice-agents,voice-phone-numbers,voice-calls,telnyx-webhooks - Superficies publicas: página de consentimiento SMS por organización
- Integraciones externas: Telnyx y Stripe
Funcionalidades internas
| Funcionalidad | Archivo | Resumen |
|---|---|---|
| Activar Calling y SMS | voice-channel-activation.md | Provisiona el canal Telnyx. |
| Números telefónicos | phone-numbers.md | Comprar y administrar números. |
| Agentes de voz | voice-agents.md | Disponibilidad, peso y SIP. |
| Enrutamiento de llamadas | call-routing.md | Personas e IA. |
| Configuración SMS | sms-settings.md | Perfil, destinos y sincronización. |
| Cumplimiento 10DLC | 10dlc-compliance.md | Registro SMS A2P estadounidense. |
| Historial de llamadas | call-history.md | Filtros, grabación y depuración. |
| Experiencia de llamada | call-experience.md | Destinos, grabación, saludo y cola. |
| Precios | pricing.md | Tarifas por país. |
Relaciones
- Depende de: Stripe, Telnyx, Organización y asistentes de IA.
- Usado por: Conversaciones, Automatizaciones y Plataforma/Softphone.
Limitaciones y notas
- Plataforma/Softphone es la superficie de llamadas dentro de la app; aquí se configura la infraestructura y agentes.
id: 10dlc-compliance modulo: voice-sms app: crm nombre: Cumplimiento SMS 10DLC tipo: configuracion
Cumplimiento SMS 10DLC
Guía el registro de marca, campaña y asignación de números para SMS A2P de Estados Unidos.
Que se logra
- Resultado: un negocio puede completar el proceso requerido para enviar SMS A2P desde números locales estadounidenses y dar consentimiento por una página pública.
- Caso de uso: una clínica estadounidense registra su campaña de recordatorios y enlaza el formulario de consentimiento para sus pacientes.
- Se combina con: Configurar SMS, Comprar y administrar números, Conversaciones y Contactos.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/compliance - Acceso en UI:
Calling & SMS > 10DLC Compliance - Componente(s):
SmsComplianceSettings.tsx,TenDlcComplianceFaqDialog.tsx,TenDlcLiveStatusPanel.tsx
Como funciona
- Activar SMS.
- Registrar la marca y, opcionalmente, solicitar evaluación mejorada.
- Registrar la campaña con casos de uso, ejemplos y URL de consentimiento.
- Actualizar estado hasta completar la activación y asignación de números.
Reglas y validaciones
- Marca y campaña aprobada son requeridas para SMS A2P en números locales de EE. UU.
- Una campaña rechazada se corrige con
Resubmit corrected campaign, no duplicando el registro.
Backend
- Servicios:
voice-channels,public-sms-opt-in(método: get/patch) - Efectos: registra en Telnyx/TCR, sincroniza estado y asigna números cuando estén listos.
Relaciones
- Requiere: SMS y números locales estadounidenses.
- Dispara / afecta: entrega de SMS y página pública de consentimiento.
Notas
- La aprobación de operadores y la activación final de red son pasos diferentes.
id: call-experience modulo: voice-sms app: crm nombre: Configurar experiencia de llamada tipo: configuracion
Configurar experiencia de llamada
Configura destinos permitidos, grabación, saludo, cola y enlaces administrativos de Telnyx.
Que se logra
- Resultado: las llamadas siguen la experiencia definida por la organización, desde el país permitido hasta la espera, grabación y saludo.
- Caso de uso: una clínica graba llamadas con aviso, reproduce un saludo y mantiene a pacientes en cola mientras espera un agente disponible.
- Se combina con: Configurar enrutamiento de llamadas, Administrar agentes de voz y Consultar historial de llamadas.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/voice/destinations,/recording,/greeting,/queuey/telnyx - Acceso en UI:
Calling & SMS > Calling - Componente(s):
VoiceSettingsNav.tsx,VoiceSettingsQueue.tsx,VoiceSettingsTelnyxPortal.tsx
Como funciona
- Agregar o retirar países permitidos en
Destinations. - Activar grabación, formato, canales, aviso y transcripción en
Recording & Transcription. - Definir saludo y mensaje sin agentes en
Greeting. - Activar cola, espera, mensajes y música en
Queue.
Reglas y validaciones
- La transcripción requiere grabación activada.
- La espera de cola permite de 30 a 1800 segundos y la música debe ser MP3 o WAV HTTPS público.
Telnyxes exclusivo de superadmin.
Backend
- Servicios:
voice-channels(método: find/patch) - Efectos: sincroniza perfiles de salida y configuración de llamadas con Telnyx.
Relaciones
- Requiere: canal Calling & SMS activo.
- Dispara / afecta: llamadas entrantes y salientes.
Notas
- La raíz de
Callingredirige aDestinations.
id: call-history modulo: voice-sms app: crm nombre: Consultar historial de llamadas tipo: vista
Consultar historial de llamadas
Muestra llamadas con filtros, grabaciones, transcripciones, costos y diagnóstico.
Que se logra
- Resultado: supervisores revisan qué ocurrió en cada llamada y cuentan con evidencia para seguimiento, capacitación o diagnóstico.
- Caso de uso: un despacho legal escucha la grabación y lee la transcripción de una llamada para confirmar la información recibida de un cliente.
- Se combina con: Conversaciones, Configurar experiencia de llamada y Asistentes de IA de voz.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/calls - Acceso en UI:
Calling & SMS > Calls - Componente(s):
VoiceCallsHistory.tsx
Como funciona
- Aplicar filtros por contacto, fecha, dirección, estado, detección o duración.
- Abrir
Transcript, reproducir la grabación o elegirDebug. - Elegir
Exportsi se necesita exportar.
Reglas y validaciones
- El filtro de detección se oculta cuando la dirección es entrante.
Exportmuestra una notificación; no descarga CSV actualmente.- La columna de cargo a wallet es solo para superadmin.
Backend
- Servicios:
voice-calls,voice-call-transcriptions(método: find/get) - Efectos: recibe estados, grabaciones y costos desde webhooks Telnyx.
Relaciones
- Requiere: llamadas procesadas por Telnyx.
- Dispara / afecta: Conversaciones y análisis de llamadas.
Notas
- Las filas no abren una página de detalle al hacer clic.
id: call-routing modulo: voice-sms app: crm nombre: Configurar enrutamiento de llamadas tipo: configuracion
Configurar enrutamiento de llamadas
Define si las llamadas entrantes van a personas, a IA o a personas con respaldo de IA.
Que se logra
- Resultado: cada llamada sigue una política explícita de atención, con una alternativa humana si la IA no puede iniciar la atención.
- Caso de uso: un concesionario atiende primero con una IA que califica la solicitud y transfiere al equipo comercial cuando corresponde.
- Se combina con: Administrar agentes de voz, Asistentes de IA de voz y Configurar experiencia de llamada.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/voice/routing - Acceso en UI:
Calling & SMS > Calling > Routing - Componente(s):
VoiceSettingsRouting.tsx
Como funciona
- Elegir
Human Only,AI FirstoHuman First with AI Fallback. - Seleccionar un asistente de voz predeterminado si aplica.
- Definir
AI Greeting.
Reglas y validaciones
- Solo asistentes de voz preparados aparecen como opción utilizable.
- En
AI First, un fallo inicial de IA recurre a agentes humanos.
Backend
- Servicios:
voice-channels,ai-assistants,voice-agents(método: find/patch)
Relaciones
- Requiere: Agentes de voz o asistentes IA de voz.
- Dispara / afecta: llamadas entrantes.
Notas
- La configuración avanzada del asistente vive en AI Assistant.
id: phone-numbers modulo: voice-sms app: crm nombre: Comprar y administrar números tipo: accion
Comprar y administrar números
Busca, compra y gestiona números Telnyx para llamadas y SMS.
Que se logra
- Resultado: la empresa obtiene y mantiene números para llamadas y SMS, incluido un número principal para las salidas.
- Caso de uso: una inmobiliaria compra un número local para su nueva sede y lo establece como identificador de las llamadas de sus asesores.
- Se combina con: Activar Calling y SMS, Configurar SMS, Cumplimiento SMS 10DLC y Stripe.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/numbers - Acceso en UI:
Calling & SMS > Numbers - Componente(s):
PhoneNumbersManagement.tsx,SearchPhoneNumbersDialog.tsx,PurchaseConfirmDialog.tsx
Como funciona
- Elegir
Purchase Number. - Buscar por país y filtros disponibles, añadir al carrito y confirmar.
- Revisar disponibilidad, estado y requisitos.
- Definir
Set as primary, actualizar estado o cancelar la suscripción del número.
Reglas y validaciones
- La compra requiere método de pago de la organización.
- Un número debe estar activo antes de ser principal.
Backend
- Servicios:
voice-phone-number-search,voice-phone-numbers(método: find/create/patch) - Efectos: crea suscripción y reserva/compra el número en Telnyx.
Relaciones
- Requiere: canal Calling & SMS y Stripe.
- Dispara / afecta: llamadas salientes, SMS y cumplimiento 10DLC.
Notas
- El número principal es el identificador predeterminado de llamadas salientes.
id: pricing modulo: voice-sms app: crm nombre: Consultar precios de voz y SMS tipo: vista
Consultar precios de voz y SMS
Presenta tarifas de referencia por país para voz, SMS y MMS.
Que se logra
- Resultado: el equipo estima el costo de habilitar números y de comunicarse por voz, SMS o MMS en los países con cobertura.
- Caso de uso: una empresa de turismo compara las tarifas de dos mercados antes de comprar un número local para su operación.
- Se combina con: Comprar y administrar números y Configurar SMS.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/pricing - Acceso en UI:
Calling & SMS > Pricing - Componente(s):
VoicePricing.tsx
Como funciona
- Elegir un país disponible.
- Alternar entre
VoiceySMS / MMS. - Consultar las tablas de precios.
Reglas y validaciones
- Solo se muestran países donde hay números disponibles.
Backend
- Servicios:
voice-pricing,voice-phone-numbers-country-coverage(método: find)
Relaciones
- Requiere: cobertura publicada por Telnyx.
- Dispara / afecta: compra de números y previsión de costos.
Notas
- La interfaz indica el margen de plataforma como referencia.
id: sms-settings modulo: voice-sms app: crm nombre: Configurar SMS tipo: configuracion
Configurar SMS
Activa SMS, limita destinos, sincroniza números y define identificador alfanumérico.
Que se logra
- Resultado: la organización controla desde qué números y hacia qué países puede enviar SMS desde el inbox.
- Caso de uso: una cadena de restaurantes habilita SMS solo para sus mercados activos y sincroniza los números usados por cada sede.
- Se combina con: Comprar y administrar números, Cumplimiento SMS 10DLC y Conversaciones.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/sms - Acceso en UI:
Calling & SMS > SMS - Componente(s):
SmsSettings.tsx
Como funciona
- Elegir
Enable SMS. - Añadir o quitar países en
Allowed Destinations. - Elegir
Sync Phone Numbers. - Configurar
Alphanumeric Sender IDy guardar.
Reglas y validaciones
- Requiere un canal de voz activo.
- El identificador alfanumérico admite máximo 11 caracteres.
Backend
- Servicios:
voice-channels(método: patch) - Hooks relevantes: creación/actualización de perfil de mensajería y sincronización de números.
Relaciones
- Requiere: canal Calling & SMS y números activos.
- Dispara / afecta: mensajes SMS del inbox.
Notas
- Los detalles avanzados exponen el identificador del perfil de mensajería.
id: voice-agents modulo: voice-sms app: crm nombre: Administrar agentes de voz tipo: configuracion
Administrar agentes de voz
Configura los miembros que reciben llamadas y sus credenciales SIP externas.
Que se logra
- Resultado: las llamadas llegan a miembros definidos y se distribuyen según su disponibilidad y peso de enrutamiento.
- Caso de uso: una clínica prioriza a dos recepcionistas durante el día y deja a un tercer agente con menor peso para cubrir picos.
- Se combina con: Configurar enrutamiento de llamadas, Activar Calling y SMS y Asistentes de IA de voz.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/agents - Acceso en UI:
Calling & SMS > Agents - Componente(s):
VoiceAgentsManagement.tsx,AddVoiceAgentDialog.tsx
Como funciona
- Elegir
Add Agenty seleccionar un usuario. - Cambiar disponibilidad, estado o peso de enrutamiento.
- Usar el icono de ojo para consultar credenciales SIP y seleccionar identificador de llamada.
- Eliminar agentes que ya no reciban llamadas.
Reglas y validaciones
- El peso está entre 1 y 100; el total recomendado es 100%.
- Las credenciales son por agente y no las de la página
Status.
Backend
- Servicios:
voice-agents,voice-phone-numbers(método: find/create/patch/remove)
Relaciones
- Requiere: Canal Calling & SMS y miembros de organización.
- Dispara / afecta: enrutamiento y transferencia humana de IA.
Notas
- El softphone in-app se documenta en Plataforma/Softphone.
id: voice-channel-activation modulo: voice-sms app: crm nombre: Activar Calling y SMS tipo: integracion
Activar Calling y SMS
Provisiona el canal Telnyx de una organización y presenta su estado de conexión.
Que se logra
- Resultado: la organización obtiene la infraestructura Telnyx necesaria para configurar números, agentes, llamadas y SMS desde Apex.
- Caso de uso: un concesionario activa Calling y SMS antes de asignar su primer número comercial a los asesores de ventas.
- Se combina con: Comprar y administrar números, Administrar agentes de voz y Configurar SMS.
Donde esta
- Ruta:
/[orgId]/settings/voice-channel/setup - Acceso en UI:
Avatar menu > Settings > Calling & SMS > Status - Componente(s):
VoiceChannelSetup.tsx,VoiceChannelActivate.tsx
Como funciona
- Elegir
Activate Voice Channel. - Esperar la creación de los recursos de llamadas.
- Usar
Refreshpara actualizar estado y diagnóstico.
Reglas y validaciones
- Los identificadores técnicos compartidos no son credenciales de softphone.
Backend
- Servicios:
voice-channels(método: find/create/patch) - Efectos: crea recursos Telnyx de voz, conexión SIP y perfil de salida.
Relaciones
- Requiere: Telnyx.
- Dispara / afecta: números, agentes, llamadas y SMS.
Notas
- El softphone in-app corresponde al módulo Plataforma/Softphone.