Automatizaciones
Guia completa para crear, configurar y optimizar tus flujos automaticos. Desde los conceptos basicos hasta casos de uso avanzados.
Introduccion
Las automatizaciones son flujos de trabajo que se ejecutan de forma automatica cuando ocurre un evento especifico. Permiten que tu asistente y tu plataforma realicen acciones sin intervencion manual.
¿Como funcionan?
Cada automatizacion se compone de tres elementos fundamentales que trabajan juntos:
GATILLO (Trigger) → FLUJO DE ACCIONES (Steps) → RESULTADO
"Que lo dispara" "Que hace" "Que pasa"¿Que puedes automatizar?
Panel de Automatizaciones
El dashboard donde gestionas todas tus automatizaciones: creas nuevas, ves metricas, activas/desactivas y organizas en grupos.
Acceder al panel
Haz clic en "Avanzado" en la barra lateral izquierda
Haz clic en "Automatizaciones"

Tarjetas de metricas
En la parte superior del panel veras 4 tarjetas con estadisticas resumidas:
Activas
Automatizaciones encendidas
Inactivas
Automatizaciones apagadas
Ejecuciones
Total de ejecuciones
Ultima ejecucion
Fecha mas reciente
Lista de automatizaciones
Cada automatizacion en la lista muestra:
| Elemento | Descripcion |
|---|---|
| Nombre | Nombre descriptivo de la automatizacion |
| Descripcion | Texto opcional que explica que hace |
| Estado | Badge "Activa" (verde) o "Inactiva" (gris) |
| Tipo de gatillo | Icono indicando el tipo de trigger configurado |
| Fecha de creacion | Cuando fue creada la automatizacion |
| Menu de opciones | Editar, Duplicar, Compartir, Activar/Desactivar, Eliminar |
Crear nueva automatizacion
Tienes dos opciones para crear una automatizacion:
Nueva automatizacion
Abre directamente el editor visual para construir el flujo manualmente.
Asistente IA
Abre el chat con IA para crear automatizaciones conversando (ver seccion Asistente IA).
Crear una Automatizacion
El editor visual es un canvas interactivo donde construyes el flujo arrastrando y conectando nodos. Aqui te explicamos cada area y el proceso paso a paso.

Estructura del editor
| Area | Descripcion |
|---|---|
| Barra superior | Campo de nombre, boton "Crear/Actualizar Automatizacion" y boton cerrar (X) |
| Canvas central | Area de trabajo donde se visualizan los nodos. Soporta zoom (rueda), pan (clic + arrastrar) y minimap |
| Panel lateral (Drawer) | Se abre al hacer clic en un nodo para configurar el gatillo o accion |
| Panel flotante de nodos | En la parte inferior: muestra acciones y controles de flujo disponibles para agregar |
| Panel de pruebas | Boton flotante en la esquina inferior para ejecutar pruebas |
Paso a paso: Crear tu primera automatizacion
Nombrar la automatizacion
Configurar el Gatillo
Agregar acciones al flujo
Guardar la automatizacion
Consejo
Validaciones
- "Debe seleccionar un gatillo" — Si no configuraste el trigger
- "Condiciones invalidas en paso [X]" — Si una condicion esta incompleta
- "Iteraciones invalidas en paso [X]" — Si una iteracion no tiene la lista configurada
Acciones disponibles
| Accion | Descripcion |
|---|---|
| Crear Registro en Tabla de Datos | Guarda datos en una tabla personalizada |
| Buscar Registros en Tabla de Datos | Busca datos existentes con filtros avanzados |
| Actualizar Registros en Tabla de Datos | Modifica registros encontrados en tablas |
| Enviar Mensaje | Envia un mensaje al usuario o al asistente |
| Enviar Email | Envia un correo electronico |
| Asignar Etiquetas | Agrega o remueve etiquetas del chat |
| Transformar datos con IA | Usa IA para procesar, clasificar o resumir datos |
| Llamar API Externa | Hace una peticion HTTP a un servicio externo |
| Ejecutar Javascript | Ejecuta codigo JavaScript personalizado |
Gatillos (Triggers)
El gatillo es el evento que dispara tu automatización. Ventor soporta gatillos conversacionales, programados, manuales, por API, por cambios en tablas y por comentarios en redes sociales.

| Gatillo | Cuándo usarlo | Contexto principal |
|---|---|---|
| ai_context | Cuando la IA debe reconocer una intención o situación en una conversación. | Chat activo |
| cron | Cuando el flujo debe correr por horario, por día del mes o cada cierto intervalo. | Sin chat directo |
| message_contains | Cuando basta con detectar palabras clave exactas en un mensaje entrante. | Chat activo |
| trigger_api_call | Cuando un sistema externo dispara la automatización por HTTP. | Payload externo |
| manual | Cuando un usuario de Ventor quiere ejecutarla bajo demanda desde la plataforma. | Parámetros completados al ejecutar |
| data_added | Cuando una fila de una tabla se crea, actualiza o elimina. | Fila observada |
| instagram_comment | Cuando llega un comentario nuevo en Instagram. | Comentario y publicación |
| tiktok_comment | Cuando llega un comentario nuevo en TikTok. | Comentario y video |
1. "Debo reconocer una situación" (ai_context)
IA reconoce una situación
RecomendadoLa inteligencia artificial analiza cada mensaje entrante y decide si coincide con la situación que describiste. Es el gatillo más flexible para flujos conversacionales.
Úsalo cuando: necesitas detectar intención, contexto o datos que no se pueden resolver solo con palabras clave.
En Situación a reconocer, describe el escenario con suficiente detalle para que la IA sepa cuándo activar el flujo. Los parámetros definidos en el gatillo se extraen del mensaje o se solicitan al cliente si son obligatorios. Si el mensaje incluye imágenes o documentos, el asistente los analiza como parte de la conversación; no necesitas declarar una variable de adjuntos.
Ejemplo bueno
"Cuando el cliente confirma que quiere agendar una cita y proporciona una fecha y hora específica"
Ejemplo vago
"Cuando el cliente quiere algo"
| Campo | Descripción |
|---|---|
| Nombre | Nombre en snake_case, por ejemplo nombre_cliente o fecha_cita. |
| Tipo | string, integer, float, boolean, date, timestamp, json, list o media. |
| Descripción | Explica qué debe extraer o pedir la IA. |
| Obligatorio | Si está activo, la IA intentará completar el dato antes de continuar. |
Vincular tabla
System Message
{{ChatId}}si no quieres respuestas duplicadas.2. "Programado" (cron)
Horario programado
Se ejecuta automáticamente en días y horas específicas, en días del mes o cada cierto intervalo de minutos.
Úsalo para: reportes diarios, recordatorios, sincronizaciones y tareas recurrentes.
| Frecuencia | Configuración | Ejemplo |
|---|---|---|
| Diaria | Días de la semana y uno o más horarios. | Lunes a viernes a las 09:00 y 14:00. |
| Mensual | Días del mes y uno o más horarios. | Días 1 y 15 de cada mes a las 09:00. |
| Intervalo | Cada N minutos, opcionalmente dentro de un rango horario. | Cada 30 minutos de 08:00 a 20:00. |
{
"frequency": "interval",
"times": [],
"selectedDays": [],
"daysOfMonth": [],
"intervalMinutes": 30,
"activeHoursStart": "08:00",
"activeHoursEnd": "20:00"
}Importante
{{ChatId}}, {{Nombre}} o {{NroTeléfono}}; busca los destinatarios en una tabla, itera sobre los resultados y usa un campo como {{P_L:loop_item.chat_uuid}} o {{P_L:loop_item.telefono}}.3. "Mensaje Contiene" (message_contains)
Mensaje contiene palabras clave
Se activa cuando el cliente envía un mensaje que contiene una de las palabras clave configuradas. La comparación no distingue mayúsculas y minúsculas.
| Campo | Descripción |
|---|---|
| Palabras clave | Escribe cada palabra o frase y presiona Enter para agregarla como chip. |
4. "Llamada a la API" (trigger_api_call)
Webhook / API externa
Se activa desde un sistema externo mediante una petición HTTP. Ideal para tiendas online, CRMs, ERPs, formularios externos o webhooks propios.
POST /automatization/{uuid}/run
Headers:
Authorization: Bearer {tu_api_key}
Content-Type: application/json
Body:
{
"nombre_cliente": "María López",
"monto": 150.50,
"producto": "Plan Premium"
}| Elemento | Detalle |
|---|---|
| requireAuth | Por defecto debe estar activo para exigir Authorization: Bearer. |
| payload | El body completo llega como {{payload}} y soporta dot notation. |
| Parámetros | Úsalos cuando conoces la estructura y quieres validar campos requeridos. |
5. "Manual" (manual)
Ejecución bajo demanda
No se dispara automáticamente. Un usuario la ejecuta desde Ventor, desde un chat o desde el panel de pruebas, completando los parámetros necesarios.
| Campo | Descripción |
|---|---|
| Parámetros | Datos que el usuario debe completar antes de ejecutar el flujo. |
| Chat o destino | Si se ejecuta desde un chat puede usar ChatId; si no, declara destino, teléfono, email o chat_id como parámetro. |
6. "Observar una tabla" (data_added)
Cambios en filas de una tabla
Se activa cuando una fila se crea, actualiza o elimina en la tabla seleccionada. Las columnas de esa fila se convierten en variables del trigger.
| Campo | Descripción |
|---|---|
| Tabla | Tabla existente que Ventor debe observar. |
| Eventos | created, updated y deleted. Si no eliges, el default suele ser created + updated. |
| Campos modificados | Filtro opcional para ejecutar solo cuando cambian columnas específicas, por ejemplo estado. |
| Ignorar cambios de automatización | Recomendado para evitar ciclos si otro paso modifica la misma tabla. |
Variables meta disponibles
{{event_type}}, {{changed_fields}}, {{current_row}} y {{previous_row}}. En eventos deleted normalmente usarás la fila anterior.7. Instagram: Nuevo comentario (instagram_comment)
Comentario nuevo de Instagram
Se activa cuando llega un comentario nuevo en publicaciones o lives de Instagram conectados a Ventor.
| Variable | Descripción |
|---|---|
{{comment_text}} | Texto del comentario. |
{{commenter_username}} | Usuario que comentó. |
{{media_permalink}} | Link de la publicación. |
{{comment_created_at}} | Fecha del comentario. |
{{user_follows_business}} | Booleano: si el usuario sigue al negocio. |
Reglas de acciones
8. TikTok: Nuevo comentario (tiktok_comment)
Comentario nuevo de TikTok
Se activa cuando llega un comentario nuevo en videos de TikTok conectados a Ventor.
| Variable | Descripción |
|---|---|
{{comment_text}} | Texto del comentario. |
{{commenter_username}} | Usuario que comentó. |
{{video_share_url}} | Link del video. |
{{comment_created_at}} | Fecha del comentario. |
{{user_follows_business}} | Booleano: si el usuario sigue al negocio. |
Reglas de TikTok
Acciones
Las acciones son los pasos que se ejecutan cuando se activa el gatillo. El editor actual incluye 16 acciones de negocio, además de condiciones, iteraciones y secuencias programadas como control de flujo.

| Acción | Para qué sirve | Cuándo aparece |
|---|---|---|
| create_record | Crear una fila en una tabla de datos. | Siempre |
| search_record | Buscar filas en una tabla usando condiciones. | Siempre |
| update_record | Actualizar filas existentes en una tabla. | Siempre |
| send_message | Enviar texto, plantilla, adjuntos, formulario Flow u opciones interactivas. | Siempre, salvo restricciones de comentario |
| reply_comment | Responder públicamente un comentario. | Triggers de Instagram o TikTok |
| send_private_reply | Enviar el primer DM permitido por Meta a quien comentó. | Solo trigger de Instagram |
| request_information | Pedir datos y continuar cuando estén completos. | Flujos con conversación activa |
| send_email | Enviar email desde el servicio de Ventor. | Siempre |
| generate_document | Crear un PDF comercial sin validez tributaria. | Siempre |
| tag_assignment | Agregar o quitar etiquetas en un chat. | Chats normales |
| create_reminder | Crear recordatorios vinculados a chat o generales. | Siempre |
| execute_automation | Ejecutar otra automatización activa o inactiva y devolver sus salidas en JSON. | Siempre, salvo triggers de comentario |
| transform_data | Extraer, clasificar o transformar datos con IA. | Siempre |
| api_call | Llamar un endpoint externo. | Siempre |
| javascript_run | Ejecutar lógica JavaScript aislada. | Siempre |
| app_connection | Usar apps conectadas como Google Calendar, Gmail, Drive o Sheets. | Cuando hay o se conectará una app |
1. Crear Registro en Tabla (create_record)
Crear Registro
Guarda datos en una tabla personalizada. Selecciona la tabla, rellena campos con valores fijos o variables, y Ventor crea la fila automáticamente.
Tabla: Clientes
nombre -> {{Nombre}}
telefono -> {{NroTeléfono}}
email -> {{email}}
canal -> {{Canal}}
fecha -> {{FechaActual}}Outputs
{{N:_nombre}}, además de {{N:_created_at}}.2. Buscar Registros en Tabla (search_record)
Buscar Registros
Busca registros existentes usando condiciones simples o grupos de condiciones. Sirve para recuperar clientes, pedidos, productos o cualquier tabla del negocio.
| Campo | Descripción |
|---|---|
| Tabla | Tabla donde se realizará la búsqueda. |
| Condiciones | Constructor de condiciones con AND/OR, operadores por tipo y dot notation para JSON/listas. |
| Límite | Cantidad máxima de registros a devolver. |
{{N:_search_rows}} con una Iteración para recorrer cada fila.3. Actualizar Registros (update_record)
Actualizar Registros
Modifica registros existentes. Primero define qué filas buscar y luego qué campos actualizar.
Tabla: Pedidos
Condición: id es igual a {{id_pedido}}
Límite: 1
Campos a actualizar:
estado -> confirmado
fecha_confirmacion -> {{FechaActual}}4. Enviar Mensaje (send_message)
Enviar Mensaje
Envía mensajes al cliente o instrucciones al asistente. Soporta texto libre, plantillas, adjuntos, WhatsApp Flows, botones y listas interactivas.
Mensaje al usuario
Envía el texto, plantilla o adjunto al destino configurado. Por defecto usa {{ChatId}}.
Mensaje al asistente
El texto no se envía al cliente. Se usa como instrucción para que la IA genere una respuesta.
| Capacidad | Detalle |
|---|---|
| Plantillas | Permite usar plantillas Meta y plantillas WhatsApp Flow cuando corresponda. |
| Adjuntos | Solo en modo normal sin plantilla: imágenes, documentos, audio, video o URLs generadas por pasos previos. |
| Opciones | Hasta 10 opciones con ramas. De 1 a 3 se envían como botones cuando el canal lo soporta; con 4 o más WhatsApp usa lista. |
| Expiración | Las opciones interactivas pueden tener fecha de vencimiento. |
Outputs
{{N:_message_id}}, {{N:_timestamp}} y {{N:_chat_uuid}}. Si la plantilla es un WhatsApp Flow, los campos del formulario también se exponen como outputs al completarse.5. Responder comentario (reply_comment)
Responder comentario
Publica una respuesta visible debajo del comentario que activó el trigger. Funciona para Instagram y TikTok.
| Modo | Descripción |
|---|---|
| Mensaje fijo | Escribes el texto exacto. En TikTok debe quedar dentro de 150 caracteres. |
| Responder con IA | La IA redacta usando comentario, usuario y contexto de la publicación. Consume créditos de IA. |
6. Enviar mensaje privado (send_private_reply)
Enviar mensaje privado
Envía el primer mensaje privado permitido por Meta a la persona que comentó en Instagram.
| Regla | Detalle |
|---|---|
| Plataforma | Solo disponible para trigger instagram_comment. |
| Cantidad | Máximo un send_private_reply por automatización. |
| Ventana | Válido dentro de los 7 días posteriores al comentario. En Live, solo durante el live. |
| Modo | Puede ser mensaje fijo o redactado por IA. |
7. Solicitar Datos (request_information)
Solicitar Datos
Pausa el flujo, recopila información faltante y continúa cuando todos los campos requeridos están completos.
| Modo | Cuándo usarlo |
|---|---|
| Pedir con asistente | El asistente conversa hasta completar los parámetros definidos. |
| Enviar formulario | Envía un WhatsApp Flow dentro de una ventana activa. Puede usar una plantilla Flow existente o generar un formulario interno. |
Requiere conversación activa
8. Enviar Email (send_email)
Enviar Email
Envía un correo desde el servicio de Ventor con contenido HTML y adjuntos opcionales.
| Campo | Descripción |
|---|---|
| Para | Email del destinatario. En WhatsApp/Instagram normalmente debes capturarlo como {{email}}, no asumir {{Email}}. |
| Asunto | Soporta variables. |
| Cuerpo | HTML con variables. |
| Adjuntos | URLs, listas de URLs o datos generados por pasos previos. |
Gmail del usuario
9. Generar Documento PDF (generate_document)
Generar Documento PDF
Crea PDFs comerciales como cotizaciones, presupuestos, notas de venta, resúmenes de pedido u órdenes de despacho.
| Campo | Detalle |
|---|---|
| Tipo | Cotización, presupuesto, recibo/nota de venta, resumen de pedido, orden de despacho o personalizado. |
| Ítems | Desde una variable lista de productos/servicios o filas manuales con variables. |
| Diseño | Preset, color, logo, datos del emisor, notas y texto final. |
| Totales | Moneda, descuento, impuesto incluido o agregado y numeración. |
Outputs
{{N:_pdf_url}}, {{N:_document_number}}, {{N:_total}} y {{N:_filename}}. Para enviarlo, encadena un send_message posterior con el PDF como adjunto.11. Crear Recordatorio (create_reminder)
Crear Recordatorio
Programa una nota para una fecha futura. Puede quedar vinculada a una conversación o como recordatorio general.
| Campo | Tipo | Descripción |
|---|---|---|
| Nota | string | Texto del recordatorio. Soporta variables. |
| Fecha programada | timestamp | Cuándo debe activarse. Soporta aritmética: {{FechaActual+30m}}, {{FechaActual+2h}}. |
Outputs
{{N:_reminder_id}} y {{N:_reminder_scheduled_at}}.12. Ejecutar otra automatización (execute_automation)
Ejecutar otra automatización
Encadena otra automatización de la misma cuenta, activa o inactiva, y devuelve sus salidas declaradas como un JSON.
| Campo | Tipo | Descripción |
|---|---|---|
| Automatización | uuid | La automatización que se ejecutará. Puede estar activa o inactiva. |
| Parámetros | json | Valores para los trigger.parameters de la hija. Aceptan variables del flujo padre; la hija también recibe el contexto de conversación actual. |
Output
{{N:_outputs}} como JSON con las salidas de la automatización hija, usando sus tags como claves.13. Transformar datos con IA (transform_data)
Transformar con IA
Usa IA para procesar, interpretar, clasificar, resumir o estructurar texto, imágenes y documentos. Elige el modelo, define un prompt y los parámetros de salida esperados.
Prompt: "Del siguiente texto, extrae el producto,
la cantidad y el precio: {{mensaje_cliente}}"
Modelo: GPT-5.6 Terra
Adjuntos (opcional): {{1:_archivos}}
Parámetros de salida:
producto (string)
cantidad (integer)
precio (float)14. Llamar API Externa (api_call)
Llamar API
Realiza una petición HTTP a servicios externos: CRMs, ERPs, pasarelas de pago, webhooks o sistemas propios.
| Campo | Descripción |
|---|---|
| URL | Endpoint completo. Soporta variables. |
| Método | GET, POST, PUT, PATCH o DELETE. |
| Autenticación | none, bearer, basic o api_key según el servicio. |
| Cuerpo | JSON, form o sin body. Soporta variables y objetos nativos. |
Dot notation
{{N:_response_body.data.id}} o {{N:_response_body.items[0].sku}}.15. Ejecutar JavaScript (javascript_run)
Ejecutar JavaScript
Ejecuta código personalizado para lógica que no cabe en condiciones, tablas o transformaciones estándar.
| Aspecto | Detalle |
|---|---|
| Variables | Define entradas y salidas: string, number, boolean, array u object. |
| Permitido | Math, Date, String, Number, Boolean, Array, Object y JSON. |
| Bloqueado | Acceso a archivos, red, eval y Function. |
| Tiempo máximo | 5 segundos. |
// Variable de entrada: datos = {{lista_clientes}}
// Variable de salida: activos = []
activos = datos.filter((cliente) => cliente.estado === "activo");
console.log("Clientes activos:", activos.length);let, const o var. Asígnales valor directamente, como activos = ..., para que el motor pueda devolver los outputs.16. Aplicaciones conectadas (app_connection)
Aplicaciones conectadas
Ejecuta herramientas de apps conectadas por el usuario. Hoy el proveedor disponible es Google.
| Herramienta | Qué permite |
|---|---|
| Evento de Calendar | Crear, editar, cancelar o eliminar eventos en el calendario elegido. Puede agregar Meet. |
| Listar Eventos de Calendar | Leer próximos eventos en un rango de fechas y calendario. |
| Enviar Email con Gmail | Enviar desde la cuenta Gmail conectada, con CC y adjuntos. |
| Crear u obtener carpeta en Drive | Reutilizar una carpeta visible para Ventor del mismo nombre dentro del padre o crearla si todavía no existe. Devuelve folder_id/folder_link. |
| Subir Archivo a Drive | Subir un archivo desde una URL a una carpeta seleccionada o creada por un paso anterior, y devolver file_id/file_link. |
| Agregar Fila en Sheets | Append de filas a un spreadsheet y rango. |
| Leer datos de Sheets | Leer un rango de Google Sheets y devolver datos + cantidad de filas. |
El ID no reemplaza la autorización
{{N:_folder_id}}.A. Base / Mes: selecciona la base con Picker
1. Asegurar {{mes_documento}} dentro de la base -> {{1:_folder_id}}
2. Subir archivo con folder_id = {{1:_folder_id}}
B. Base / Año / Mes: selecciona la base con Picker
1. Asegurar {{anio_documento}} dentro de la base -> {{1:_folder_id}}
2. Asegurar {{mes_documento}} dentro de {{1:_folder_id}} -> {{2:_folder_id}}
3. Subir archivo con folder_id = {{2:_folder_id}}
C. Base creada por Ventor
1. Asegurar "Caja chica" sin parent_folder_id -> {{1:_folder_id}}
2. Asegurar {{anio_documento}} dentro de {{1:_folder_id}} -> {{2:_folder_id}}
3. Asegurar {{mes_documento}} dentro de {{2:_folder_id}} -> {{3:_folder_id}}
4. Subir archivo con folder_id = {{3:_folder_id}}VentorAI te guía con la configuración
Control de Flujo
Ademas de las acciones, puedes agregar condiciones (if/else), iteraciones (bucles) y secuencias programadas para crear logica mas compleja en tus flujos.
Condicion (if/else)
Bifurca el flujo en dos ramas basandose en una condicion. La rama izquierda (verde, "V") se ejecuta si la condicion es verdadera; la rama derecha (roja, "F") se ejecuta si es falsa.
[Condicion]
/ \
Verdadero (V) Falso (F)
| |
[Accion 1] [Accion A]
| |
[Accion 2] [Accion B]| Campo | Descripcion |
|---|---|
| Campo a evaluar | La variable a comparar (placeholder: "Valor 1") |
| Tipo de campo | string, integer, float, boolean, date, timestamp |
| Operador | La comparacion a realizar (ver tabla de operadores) |
| Valor | El valor contra el que comparar (placeholder: "Valor 2") |
Operadores por tipo de dato
Texto (string)
| Operador | Descripcion |
|---|---|
| equals | Es igual a (exacto, sensible a mayusculas) |
| not_equals | Es diferente a |
| contains | Contiene el texto (no sensible a mayusculas) |
| not_contains | No contiene el texto |
| starts_with | Empieza con |
| ends_with | Termina con |
| similar | Busqueda por similitud (fuzzy, umbral 0.2) |
| is_empty | Esta vacio (no requiere valor) |
| is_not_empty | No esta vacio (no requiere valor) |
Numeros (integer, float, serial)
| Operador | Descripcion |
|---|---|
| equals | Es igual a |
| not_equals | Es diferente a |
| greater_than | Es mayor que |
| less_than | Es menor que |
| greater_or_equal | Es mayor o igual que |
| less_or_equal | Es menor o igual que |
| is_empty | Es nulo (no requiere valor) |
| is_not_empty | No es nulo (no requiere valor) |
Booleano (boolean)
| Operador | Descripcion |
|---|---|
| isTrue | Es verdadero (no requiere valor) |
| isFalse | Es falso (no requiere valor) |
| is_empty | Es nulo (no requiere valor) |
| is_not_empty | No es nulo (no requiere valor) |
Fecha (date, timestamp)
| Operador | Descripcion |
|---|---|
| equals | Es la misma fecha |
| not_equals | Es diferente fecha |
| before | Es antes de |
| after | Es despues de |
| esHoy | Es de las ultimas 24 horas (no requiere valor) |
| esSemana | Es de esta semana (lunes a domingo, no requiere valor) |
| esQuincena | Es de esta quincena (1-15 o 16-fin, no requiere valor) |
| esMes | Es de este mes (no requiere valor) |
| is_empty | Es nulo (no requiere valor) |
| is_not_empty | No es nulo (no requiere valor) |
Iteracion (Bucle)
Repite un conjunto de acciones para cada elemento de una lista. Ideal para enviar mensajes masivos, procesar registros de una tabla o recorrer resultados de una busqueda.
[Iteracion: recorrer {{lista}}]
|
[Accion 1 (se repite por cada elemento)]
|
[Accion 2 (se repite por cada elemento)]| Campo | Descripcion |
|---|---|
| Lista a iterar | La variable tipo lista a recorrer (ej: {{2:_search_rows}}) |
Variables disponibles dentro del bucle:
| Variable | Tipo | Descripcion |
|---|---|---|
{{N_L:loop_item}} | json | El elemento actual de la lista |
{{N_L:loop_index}} | integer | El indice actual (comenzando en 1) |
Dot notation
{{3_L:loop_item.nombre}}, {{3_L:loop_item.email}}Paso 1: Buscar registros en tabla "Clientes" donde estado = "activo" (limite: 100)
Paso 2: Iteracion sobre {{1:_search_rows}}
└─ Paso 1 (dentro): Enviar mensaje "Hola {{2_L:loop_item.nombre}}!"
al destino {{2_L:loop_item.chat_uuid}}Secuencia Programada
Secuencia Programada
Programa un grupo de acciones para ejecutarse en una fecha futura. Funciona como una rama que se activa cuando llega el momento programado.
Define una fecha futura y coloca acciones dentro de la secuencia. Cuando llegue esa fecha, las acciones se ejecutan automaticamente. Tambien puedes reprogramar o cancelar una secuencia existente si guardaste antes su {{N:_scheduled_id}}.
[Secuencia Programada: {{FechaActual+1440m}}]
|
[Accion 1 (se ejecuta cuando llegue la fecha)]
|
[Accion 2 (se ejecuta cuando llegue la fecha)]| Campo | Tipo | Descripcion |
|---|---|---|
| Operacion | create / reschedule / cancel | Por defecto crea una nueva secuencia. Para reprogramar o cancelar, usa el ID de una secuencia ya creada. |
| Fecha programada | timestamp / string | Cuando ejecutar las acciones. Acepta: fecha fija ISO, variable de tipo timestamp o variable de texto que contenga un timestamp. Soporta aritmetica: {{FechaActual+30m}}, {{FechaActual+7d}}, {{1:_fecha_cita}} |
| ID programado | string | Requerido para reschedule/cancel. Normalmente viene de {{N:_scheduled_id}} guardado en una tabla. |
Outputs
{{N:_scheduled_id}}, {{N:_scheduled_at}} y {{N:_status}}. Al cancelar devuelve el ID y el estado.Anidamiento
Mecanismo de ejecucion
Modo test
Botones Interactivos (Opciones)
Cualquier paso de "Enviar Mensaje" puede incluir botones interactivos que permiten al cliente responder con un solo toque.
Configuracion de botones
En un paso de "Enviar Mensaje", abre "Configuraciones Avanzadas" y haz clic en "Agregar Boton". Puedes agregar hasta 10 opciones. Ventor adapta la experiencia segun el canal.
| Campo | Descripcion |
|---|---|
| Texto del boton | Texto multicanal visible para el cliente (maximo 20 caracteres) |
| Datos de lista WhatsApp | Con 4 o mas opciones puedes configurar seccion, titulo y descripcion de cada fila de la lista. |
| Pasos siguientes | Acciones que se ejecutan cuando el cliente presiona este boton |
| System Message | Si esta activo, la respuesta del boton se procesa por la IA |
[Enviar Mensaje con 3 botones]
| | |
[Boton 1] [Boton 2] [Boton 3]
| | |
[Accion] [Accion] (IA procesa)Expiracion de interaccion
Define hasta cuando son validos los botones. Acepta una fecha fija ISO (2026-12-31T23:59:00.000Z) o una variable dinamica ({{1:_timestamp}}). Si se omite, los botones no expiran.
Adaptacion por canal
| Canal | Formato de botones |
|---|---|
| WhatsApp (plantilla) | QUICK_REPLY de la plantilla Meta |
| WhatsApp (texto libre) | 1-3 opciones: botones. 4-10 opciones: lista interactiva |
| Instagram / Facebook | Quick Replies |
| Telegram | Inline Keyboard |
| TikTok | Texto numerado; el cliente responde con el numero |
Variables disponibles en pasos de botones
| Variable | Descripcion |
|---|---|
{{N:respuesta_boton}} | El texto (label) del boton presionado |
{{N:respuesta_boton_key}} | El identificador (key) del boton presionado |
Sistema de Variables
Las variables son el mecanismo que permite que los datos fluyan entre los pasos de una automatizacion. Todas usan el formato {{nombre}}.
Variables del contexto (triggers con chat)
| Variable | Tipo | Descripcion |
|---|---|---|
{{Nombre}} | string | Nombre del contacto |
{{ChatId}} | string | UUID unico del chat/conversacion |
{{Canal}} | string | Canal de origen (whatsapp, instagram, etc.) |
{{NroTelefono}} | string | Numero de telefono del contacto |
{{Email}} | string | Email del contacto |
{{InfoEmail}} | json | Metadatos del correo actual. Solo está disponible cuando el workspace tiene un canal Gmail del propietario activo y la conversación proviene de Gmail. |
{{Etiquetas}} | string | Etiquetas del chat (separadas por comas) |
{{FechaContacto}} | date | Fecha del primer contacto |
{{Asignado}} | string | Agente asignado al chat (Asistente, Humano, o email del agente) |
{{FechaActual}} | date | Fecha y hora actual de ejecucion |
{{Email}} identifica al remitente/contacto y {{InfoEmail}} contiene los metadatos del correo. Los IDs internos del proveedor y los adjuntos no se exponen como variables: el asistente recibe los archivos como parte del mensaje.Variables del trigger (parametros)
Los parametros definidos en el gatillo se convierten en variables con su nombre directamente:
Parametro definido: nombre_cliente (string)
Variable disponible: {{nombre_cliente}}
Parametro definido: fecha_cita (date)
Variable disponible: {{fecha_cita}}Payload API y parámetros manuales
| Origen | Variables disponibles |
|---|---|
| trigger_api_call | El body completo llega como {{payload}}. Puedes leer campos anidados con dot notation, por ejemplo {{payload.cliente.nombre}} o {{payload.items[0].sku}}. |
| manual | Cada parámetro que el usuario completa al ejecutar se vuelve variable con el mismo nombre. |
{{payload}} directamente.Variables de tabla observada
En un gatillo data_added, las columnas de la fila observada quedan disponibles como variables. Además, Ventor agrega variables meta para entender qué pasó.
| Variable | Descripción |
|---|---|
{{event_type}} | created, updated o deleted. |
{{changed_fields}} | Lista de columnas modificadas cuando el evento es updated. |
{{current_row}} | Fila actual completa en eventos created o updated. |
{{previous_row}} | Fila anterior completa en eventos updated o deleted. |
Variables de comentarios de Instagram y TikTok
| Trigger | Variables |
|---|---|
| instagram_comment | {{comment_text}}, {{commenter_username}}, {{media_permalink}}, {{comment_created_at}} y {{user_follows_business}}. |
| tiktok_comment | {{comment_text}}, {{commenter_username}}, {{video_share_url}}, {{comment_created_at}} y {{user_follows_business}}. |
Variables de salida (outputs de acciones)
Cada accion genera variables de salida con un prefijo numerico que indica su posicion en el flujo:
Paso 1 → {{1:_nombre_variable}}
Paso 2 → {{2:_nombre_variable}}
Paso 3 → {{3:_nombre_variable}}Variables de iteracion (bucles)
Dentro de un bucle tienes acceso a dos variables especiales:
Paso 3 (iteracion):
{{3_L:loop_item}} → El elemento actual de la lista
{{3_L:loop_index}} → El indice actual (comenzando en 1)Aritmetica de fechas
Las variables de tipo date y timestamp soportan modificadores aritmeticos para sumar o restar tiempo. El formato es {{variable+cantidadunidad}} o {{variable-cantidadunidad}}.
| Unidad | Sufijo | Sumar | Restar |
|---|---|---|---|
| Minutos | m | {{FechaActual+120m}} — 120 minutos despues | {{FechaActual-30m}} — 30 minutos antes |
| Horas | h | {{FechaActual+2h}} — 2 horas despues | {{FechaActual-1h}} — 1 hora antes |
| Dias | d | {{FechaActual+7d}} — 7 dias despues | {{FechaActual-5d}} — 5 dias antes |
Atajos rapidos
{{FechaActual+1440m}}, el resultado sera la fecha/hora exacta 24 horas despues de cuando se ejecuta la accion. El operador - permite retroceder en el tiempo, util para fechas limites o periodos de gracia.Sistema de prefijos para pasos anidados
Cuando los pasos estan anidados dentro de condiciones, iteraciones o botones, los prefijos se acumulan para identificar exactamente donde esta cada paso:
Raiz (nivel principal)
Paso 1 → prefijo: 1
Paso 2 → prefijo: 2Dentro de condicion (paso 2)
Rama Verdadera:
Paso 1 → prefijo: 2_V1 (V = Verdadero)
Paso 2 → prefijo: 2_V2
Rama Falsa:
Paso 1 → prefijo: 2_F1 (F = Falso)Dentro de iteracion (paso 3)
Variables del bucle: {{3_L:loop_item}}, {{3_L:loop_index}}
Pasos internos:
Paso 1 → prefijo: 3_L1 (L = Loop)
Paso 2 → prefijo: 3_L2Dentro de botones (paso 1, opcion 0)
Paso 1 → prefijo: 1_B0_1 (B0 = Boton indice 0)
Paso 2 → prefijo: 1_B0_2Anidamiento profundo (condicion → iteracion → condicion)
Paso 2 (condicion):
Rama V:
Paso 1 (iteracion):
Paso 1 (accion) → prefijo: 2_V1_L1
Paso 2 (condicion):
Rama V:
Paso 1 → prefijo: 2_V1_L2_V1
Rama F:
Paso 1 → prefijo: 2_V1_L2_F1Regla fundamental
- El index de cada paso es siempre su numero LOCAL dentro de su contenedor (1, 2, 3...). Se reinicia en cada nivel.
- El tag de cada output usa el prefijo COMPLETO acumulado:
{prefijo}:_{nombre}
Acceso a propiedades anidadas (dot notation)
Para acceder a datos dentro de objetos o listas, usa el punto (.):
{{3:_response_body.data.name}} → Propiedad anidada de un objeto
{{3:_response_body.items[0].id}} → Primer elemento de un array
{{1:_search_rows[0].nombre}} → Nombre del primer resultado
{{2_L:loop_item.direccion.ciudad}} → Propiedad de un elemento en iteracionTablas de Datos
Las tablas de datos son bases de datos personalizadas que se integran directamente con las automatizaciones. Puedes crear, buscar y actualizar registros desde tus flujos.

Crear una tabla
En la barra lateral, ve a "Avanzado" > "Tablas"
Haz clic en "Nueva tabla" y define el nombre
Agrega columnas con nombre, tipo, si es obligatoria y descripcion
Guarda la tabla
Tipos de columnas disponibles
| Tipo | Descripcion | Ejemplo de uso |
|---|---|---|
| string | Texto libre | Nombres, descripciones, notas |
| integer | Numero entero | Cantidades, IDs, edades |
| float | Numero decimal | Precios, montos, porcentajes |
| boolean | Verdadero/Falso | Activo, pagado, verificado |
| date | Fecha (YYYY-MM-DD) | Fecha de nacimiento, vencimiento |
| timestamp | Fecha y hora completa | Fecha de creacion, ultima actualizacion |
| serial | Auto-incremento | ID unico automatico |
| json | Objeto JSON | Datos estructurados complejos |
| list | Lista/Array | Multiples valores, tags |
| media | Multimedia | Videos, audios |
Importar datos desde Excel/CSV
Tienes dos formas de importar datos a una tabla:
Pestana "Upload"
- Descarga la plantilla Excel
- Rellena cada fila respetando los tipos
- Sube el archivo (.xlsx o .csv)
- Revisa la previsualizacion
- Haz clic en "Confirmar e Importar"
Pestana "AI"
- Pega datos en cualquier formato
- Haz clic en "Transformar con IA"
- La IA convierte al formato correcto
Editar y exportar
Editar inline: Haz clic en cualquier celda para editarla directamente. Los cambios se guardan automaticamente.
Exportar a Excel: Dentro de la tabla, haz clic en el boton de descarga para exportar todos los datos.
Recomendacion clave
chat_uuid es el mejor identificador unico por cliente. Cuando crees tablas que necesiten relacionar datos con un cliente, incluye una columna chat_uuid (tipo string). Esto permite buscar y actualizar registros usando {{ChatId}} como condicion.Constructor de Condiciones de Busqueda
La interfaz visual para definir filtros de busqueda y actualizacion de registros en tablas. Se usa en las acciones "Buscar Registros" y "Actualizar Registros".
Estructura de condiciones
Las condiciones se organizan en grupos que pueden contener condiciones simples u otros grupos anidados:
Grupo (AND)
├── Condicion: email es igual a {{Email}}
├── Condicion: estado es diferente a "cancelado"
└── Grupo (OR)
├── Condicion: tipo es igual a "premium"
└── Condicion: antiguedad es mayor que 365
Resultado: email = {{Email}} AND estado != "cancelado"
AND (tipo = "premium" OR antiguedad > 365)Como agregar condiciones
Haz clic en "Agregar condicion"
Configura cada condicion
Haz clic en "Agregar grupo" para crear subgrupos
Operadores de grupo
AND
Todas las condiciones deben cumplirse simultaneamente.
OR
Al menos una condicion debe cumplirse.
Plantillas en Automatizaciones
Las plantillas de mensaje se usan para enviar mensajes predefinidos, especialmente cuando necesitas contactar a clientes fuera de la ventana de 24 horas de WhatsApp.
¿Cuando usar plantillas?
| Situacion | Tipo de plantilla | ¿Necesaria? |
|---|---|---|
| Trigger ai_context o message_contains (dentro de 24h) | Texto libre o plantilla | Opcional |
| Trigger cron (envio programado) | Plantilla Meta obligatoria | Si |
| Trigger trigger_api_call | Plantilla Meta recomendada | Recomendada |
| Trigger manual o data_added sin chat activo | Plantilla Meta si el destino es WhatsApp fuera de 24h | Depende del destino |
| Envio fuera de ventana 24h (WhatsApp) | Plantilla Meta obligatoria | Si |
Usar una plantilla en "Enviar Mensaje"
Abre "Configuraciones Avanzadas" en el paso de Enviar Mensaje
Haz clic en el campo de busqueda de plantillas
Selecciona la plantilla deseada
Rellena cada variable de la plantilla con un valor fijo o {{variable}}
Asistente IA
Probar Automatizaciones
El panel de pruebas te permite ejecutar la automatizacion en modo de prueba para verificar que el flujo funciona correctamente antes de activarlo.
Como probar
En el editor visual, haz clic en el boton flotante de pruebas (esquina inferior)
Si el gatillo tiene parametros, rellénalos en "Variables necesarias"
Haz clic en "Ejecutar"
Interpretar los logs
| Icono | Significado |
|---|---|
| Spinner girando | Paso en ejecucion |
| ✓ Check verde | Paso completado exitosamente |
| ✗ X roja | Paso con error |
¿Que puedes verificar?
Asistente de Automatizaciones (IA)
Una IA conversacional que te ayuda a crear o modificar automatizaciones sin configurar manualmente cada componente. Describe lo que necesitas y la IA genera la automatizacion completa.

Crea automatizaciones conversando
Describe lo que necesitas en lenguaje natural y la IA genera la automatizacion completa con todos los pasos, condiciones y variables.
Como funciona
Describe tu necesidad
La IA te hace preguntas
La IA genera la automatizacion
Recursos sugeridos
Edicion iterativa
Tips para mejores resultados
Se especifico
"Enviar bienvenida cuando un cliente nuevo escribe por WhatsApp, capturando nombre y email"
Menciona tus recursos
"Usando mi tabla Clientes", "Con la plantilla bienvenida_nueva"
Describe el flujo completo
Incluye condiciones, excepciones y casos especiales
Pide cambios incrementales
"Agrega una condicion antes del paso 3", "Cambia el mensaje del paso 2"
Compartir Automatizaciones
Publica tus automatizaciones para que otros las reutilicen, o importa automatizaciones compartidas por otros usuarios.

Compartir una automatizacion
En la lista, haz clic en el menu de opciones (3 puntos)
Selecciona "Compartir"
Importar una automatizacion
Al acceder al enlace de una automatizacion compartida, el sistema analiza automaticamente las diferencias:
Reglas de Mensajeria por Canal
Es fundamental entender las restricciones de cada canal para disenar automatizaciones que funcionen correctamente.
| Situacion | Permitido |
|---|---|
| Dentro de 24h del ultimo mensaje | Texto libre, imagenes, documentos, audio, video — sin restricciones |
| Fuera de 24h | SOLO Plantillas Meta aprobadas |
| Trigger cron (no hay chat activo) | SOLO Plantillas Meta aprobadas |
| Trigger trigger_api_call | Plantillas Meta recomendadas |
| Trigger manual/data_added sin conversación activa | Depende del destino y de la ventana de 24h |
Instagram y Facebook Messenger
| Situacion | Permitido |
|---|---|
| Dentro de 24h | Mensajes de texto libre |
| Fuera de 24h | NO es posible enviar mensajes (no existen plantillas Meta para estos canales) |
Comentarios de Instagram y TikTok
| Situacion | Permitido |
|---|---|
| Instagram: comentario nuevo | reply_comment para respuesta pública y un send_private_reply como primer DM permitido por Meta. |
| TikTok: comentario nuevo | Solo reply_comment público, máximo 150 caracteres. |
Telegram
| Situacion | Permitido |
|---|---|
| En cualquier momento | Texto libre — sin restriccion de ventana de 24h |
Recomendaciones clave
- Si tu automatizacion usa trigger cron y envia mensajes por WhatsApp fuera de una conversación activa → usa plantilla Meta
- Si tu flujo puede ejecutarse fuera de las 24h → incluye una plantilla Meta como alternativa
- Para Instagram/Facebook fuera de 24h → sugiere WhatsApp como canal alternativo
Limites y Planes
Cada plan tiene limites de ejecuciones mensuales y creditos de IA. Conoce los limites tecnicos y las buenas practicas.
Limites por plan
| Plan | Ejecuciones/mes | Creditos IA/mes |
|---|---|---|
| Gratis | 50 | 4,500 |
| Basico ($30/mes) | 500 | 45,000 |
| Profesional ($80/mes) | 2,000 | 135,000 |
| Empresarial ($200/mes) | 10,000 | 450,000 |
Limites tecnicos
| Limite | Valor |
|---|---|
| Ejecucion de JavaScript | Maximo 5 segundos |
| Botones por mensaje | Maximo 10 opciones; 1-3 se muestran como botones cuando el canal lo soporta, 4-10 se adaptan a lista/quick replies/texto numerado |
| Caracteres por boton | Maximo 20 caracteres |
| Caracteres por mensaje | Maximo 4,096 caracteres |
| Adjuntos de email | URLs, listas de URLs, o datos para Excel |
| Respuesta comentario TikTok | Maximo 150 caracteres |
Buenas practicas
Nombra descriptivamente
Usa nombres claros como "Registrar lead de WhatsApp" en vez de "Auto 1"
Prueba antes de activar
Siempre usa el panel de pruebas antes de activar una automatizacion
Empieza simple
Crea flujos simples y ve agregando complejidad gradualmente
Un proceso = una automatizacion
Si un proceso es muy complejo, dividelo en varias automatizaciones
Usa tablas para persistir datos
Si necesitas datos entre ejecuciones, guardalos en tablas
Incluye chat_uuid en tablas
Para poder buscar/actualizar registros por cliente
Usa el System Message
Para que la IA genere respuestas naturales al completar procesos
Monitorea las ejecuciones
Revisa las metricas y los logs para detectar errores
Casos de Uso y Ejemplos
Ejemplos practicos de automatizaciones comunes que puedes recrear en tu cuenta.
Captura de leads
Cuando un cliente muestra interes, capturar sus datos y notificar al equipo de ventas.
Recordatorio programado
Cada lunes a las 9am, enviar recordatorio a clientes con pedidos pendientes.
Integracion con API
Consultar el estado de un pedido en el ERP cuando el cliente pregunta.
Botones interactivos
Preguntar al cliente que tipo de soporte necesita con botones de respuesta rapida.
Cotización automática
Capturar productos solicitados, generar un PDF y enviarlo al cliente.
Respuesta a comentarios
Responder comentarios de Instagram o TikTok con reglas de cada plataforma.
Agenda con Google Calendar
Crear una reunión y guardar los IDs necesarios para reprogramar o cancelar.
Ejemplo detallado: Captura de leads
Gatillo: ai_context
Situacion: "Cuando el cliente muestra interes en un producto y proporciona sus datos"
Parametros: nombre (string), producto_interes (string), email (string)
Paso 1: Crear registro en tabla "Leads"
nombre → {{nombre}}
producto → {{producto_interes}}
email → {{email}}
chat_uuid → {{ChatId}}
fecha → {{FechaActual}}
Paso 2: Asignar etiqueta "Interesado" al chat
Paso 3: Enviar email al equipo de ventas
Para: ventas@miempresa.com
Asunto: "Nuevo lead: {{nombre}}"
Cuerpo: "Producto: {{producto_interes}}, Email: {{email}}"Ejemplo detallado: Recordatorio programado
Gatillo: cron — Lunes a las 09:00
Paso 1: Buscar registros en tabla "Pedidos"
Condicion: estado = "pendiente" (limite: 100)
Paso 2: Condicion — {{1:_search_count}} es mayor que 0
Rama Verdadera:
Paso 1: Iterar sobre {{1:_search_rows}}
Paso 1: Enviar mensaje (plantilla Meta "recordatorio_pedido")
destino: {{2_V1_L:loop_item.chat_uuid}}
variables: nombre = {{2_V1_L:loop_item.nombre_cliente}}
Rama Falsa:
(no hacer nada)Solucion de Problemas
Errores comunes y como resolverlos rapidamente.
Mi automatizacion no se activa
El mensaje no se envia
Error en condicion/busqueda
Se agotaron mis ejecuciones
Error en JavaScript
La IA no extrae los parametros correctamente
Glosario
Terminos tecnicos del sistema de automatizaciones.
| Termino | Definicion |
|---|---|
| Automatizacion | Flujo de trabajo automatico compuesto por un gatillo y pasos de acciones |
| Gatillo / Trigger | El evento que dispara la ejecucion de una automatizacion |
| Paso / Step | Cada elemento del flujo: puede ser una accion, condicion o iteracion |
| Accion | Un paso que ejecuta una operacion: enviar mensaje, crear registro, etc. |
| Condicion | Bifurcacion if/else que divide el flujo en dos ramas |
| Iteracion / Bucle | Repeticion de pasos para cada elemento de una lista |
| Variable | Dato dinamico referenciado como {{nombre}} que fluye entre pasos |
| Output | Variable de salida generada por un paso, disponible para pasos posteriores |
| Tag (prefijo) | Identificador unico de un output que incluye la ruta de anidamiento |
| Tabla de datos | Base de datos personalizada donde guardas informacion del negocio |
| Plantilla Meta | Mensaje predefinido aprobado por Meta, necesario fuera de la ventana de 24h |
| Ventana de 24h | Periodo desde el ultimo mensaje del cliente donde puedes enviar texto libre por WhatsApp |
| System Message | Opcion que hace que la IA procese el resultado y genere una respuesta natural |
| Dot notation | Sintaxis para acceder a propiedades anidadas: {{variable.propiedad}} |
| SearchConditions | Estructura de filtros para buscar/actualizar registros en tablas |
| Canvas | Area visual del editor donde se construye el flujo de automatizacion |
| Drawer | Panel lateral que se abre para configurar un nodo del flujo |
| Creditos | Unidades de consumo para respuestas de IA y procesamiento |
| Ejecucion | Cada vez que una automatizacion se dispara y ejecuta sus pasos |
| Webhook | Peticion HTTP que un sistema externo envia a Ventor para activar una automatizacion |
| CRM | Gestion de relaciones con clientes — el panel de conversaciones de Ventor |
¿Listo para crear tu primera automatizacion?
Prueba Ventor gratis y empieza a automatizar tu negocio en minutos. Sin codigo, sin complicaciones.