Saltar al contenido
WIBI Centro de ayuda

Manual de WIBI

Campañas

Guía: lanzar un programa de puntos

Esta guía resume los pasos para poner en marcha un programa de puntos en WIBI, desde la configuración hasta el primer envío a los clientes.

1. Definir las reglas

  • Valor del punto: cuántos pesos de compra equivalen a un punto (por ejemplo, 1 punto cada $100).
  • Valor de canje: cuánto vale un punto cuando el cliente lo usa (por ejemplo, 1 punto = $1).
  • Categorías de clientes si querés niveles con beneficios distintos. Ver Categorías de clientes.

2. Cargar los comercios

Creá la red y sus comercios o sucursales. Cada comercio tiene un usuario y una clave para que su sistema de facturación envíe las ventas. Ver Comercios.

3. Conectar las ventas

Elegí cómo van a llegar las ventas:

4. Usuarios y permisos

Creá los usuarios del equipo y asignales un grupo de permisos. Para el mostrador, revisá los Permisos del operador.

5. Premios y promociones

  • Cargá los premios por puntos que los clientes van a poder canjear.
  • Creá una promoción de lanzamiento, por ejemplo doble de puntos el primer mes.

6. Portal y comunicación

  • Configurá el portal de clientes para que puedan ver sus puntos y canjear.
  • Conectá WhatsApp y programá una difusión de bienvenida.

7. Medir

A partir del primer mes, seguí los resultados en Ventas generales y el Informe de difusiones.

Listado de campañas

Punto de entrada al CRM. Una campaña es la unidad operativa principal del sistema: agrupa clientes, comercios, movimientos de puntos, promociones, comunicaciones y reportes bajo una misma marca o programa de fidelidad. Desde acá ingresás a la campaña que vas a operar; al hacerlo se carga el menú contextual con todos sus módulos.

¿Dónde estoy parado? Esta pantalla es la previa al ingreso. No editás datos del cliente acá: el alta y la edición de campañas se hace desde Administrar campañas (Superadmin).

Filtros disponibles

  • Nombre: busca por nombre o parte del nombre de la campaña.
  • Estado: muestra sólo activas, sólo inactivas o todas. Las inactivas siguen apareciendo si tu usuario tiene permisos, pero no operan envíos automáticos.

Columnas

  • Nombre + grupo empresa al que pertenece.
  • Tipo: física (con tarjeta plástica) o virtual (sin soporte físico, sólo digital).
  • Vigencia: fechas desde / hasta declaradas en el alta de la campaña.
  • Estado activo/inactivo y, según permisos, indicador rápido de actividad (movimientos recientes).

Acciones

  • Ingresar a la campaña — al seleccionarla se fija el contexto (idcamp en URL) y se habilita el menú con Clientes, Movimientos, Promos, Cupones, Análisis, Difusiones, Informes y Configuración.
  • Si tu rol es Administrador (crm_Administrador = 'A') verás además la opción Configuración y la Ayuda contextual.

Circuitos asociados

  • Crear / desactivar campañas → Administrar campañas (Superadmin). Es el wizard de alta que crea grupo empresa, red, usuario administrador y usuario operador.
  • Configurar el portal del cliente de la campaña → Configuración del portal de clientes.
  • Operar la campaña: Clientes (ABM y ficha), Movimientos (puntos), Promociones, Cupones, Análisis (segmentos), Difusiones (WhatsApp / Email), Informes (ventas, marcas, cumplimiento, Meta Conversions).

Permisos y visibilidad

  • Cada usuario ve sólo las campañas de su grupo empresa (crm_idGrupoEmpresa).
  • Dentro de la campaña, las pantallas que muestran ventas / clientes respetan la lista de comercios habilitados del usuario (idcomercios).
  • Los usuarios Superadmin ven todas las campañas y pueden cambiar de grupo empresa.

Tip operativo: si una campaña no aparece, verificá que esté activa y que tu usuario esté asignado al grupo empresa correcto desde Configuración > Usuarios.

Información de campaña

Dashboard de aterrizaje al ingresar a una campaña. Reúne en una sola vista los datos maestros de la campaña (cómo está configurada) y los KPIs de fidelización del período en curso, para que el operador o administrador entienda en segundos el estado del programa antes de operar.

Lectura rápida: arriba ves cómo está armada la campaña (datos, alertas, campos personalizados), abajo ves cómo está performando (clientes activos, puntos emitidos / canjeados, movimientos).

Datos generales visibles

  • Nombre, ID y descripción de la campaña.
  • Tipo: física (con tarjeta plástica) o virtual.
  • Vigencia: fechas desde / hasta del programa.
  • Campos personalizados definidos para la campaña — los mismos que ves en la ficha del cliente.
  • Alertas por inactividad: días configurados para considerar a un cliente como inactivo y disparar recordatorios automáticos.

KPIs del período

  • Clientes activos — con al menos un movimiento en el período, comparado vs mes anterior.
  • Puntos emitidos — total acumulado generado por ventas.
  • Puntos canjeados — total acumulado consumido por los clientes.
  • Cantidad de movimientos registrados.

Fórmulas

IndicadorFórmula
Variación mes a mes((actual − anterior) / anterior) × 100
Saldo de puntos vivosΣ emitidos − Σ canjeados − Σ vencidos
Tasa de canje(Σ canjeados / Σ emitidos) × 100

Acciones

  • Editar información general de la campaña (modal con datos básicos).
  • Ajustar alertas por inactividad y campos personalizados desde sus pantallas dedicadas.

Circuitos asociados

  • Clientes → de acá salen los KPIs de clientes activos.
  • Movimientos → fuente de los KPIs de puntos y ventas.
  • Campos personalizados y Categorías → dan estructura a la ficha del cliente.
  • Calendario de recordatorios → consume la configuración de inactividad para disparar alertas.

Tip: si los KPIs aparecen en cero, verificá vigencia, comercios habilitados al usuario y que la campaña esté activa. Una tasa de canje muy baja indica programa con beneficios poco atractivos.

Clientes y puntos

Clientes

Listado central de los clientes vinculados a la campaña. Es el módulo más usado del CRM: desde acá consultás la ficha, asignás o descargás puntos, enviás comunicaciones individuales, importás altas masivas y exportás bases para análisis.

Visibilidad: sólo ves clientes de comercios habilitados a tu usuario. Si esperabas ver clientes y no aparecen, revisá Configuración > Usuarios y el campo idcomercios.

Filtros

  • Búsqueda libre: apellido, nombre o DNI.
  • Comercio de adhesión (donde el cliente se dio de alta).
  • Categoría de loyalty (Bronce, Plata, Oro... lo que esté definido).
  • Grupo de interés (segmentación interna).
  • Campos personalizados activos en la campaña (ej: Obra Social, Talle).
  • Estado de validación: email validado, WhatsApp validado.

Columnas

  • Datos personales: apellido, nombre, DNI, fecha de nacimiento.
  • Contacto: teléfono, email, dirección.
  • Loyalty: N° de tarjeta, fecha de alta, saldo de puntos, categoría.
  • Comercio de adhesión y grupo de interés.
  • Indicadores de validación (email / WhatsApp confirmados).

Acciones por cliente

  • Ver ficha completa (datos, movimientos, suscripciones, alertas).
  • Editar datos personales, contacto y campos personalizados.
  • Asignar puntos o descargar puntos manualmente con motivo registrado.
  • Cambiar categoría de loyalty.
  • Enviar mensaje individual (WhatsApp Evolution / Meta o Email).
  • Enviar validación de email o WhatsApp.

Acciones masivas

  • Importar Excel: alta masiva de clientes con validación de duplicados por DNI / email.
  • Exportar el listado filtrado a Excel / CSV.
  • Asignar puntos a varios (selección múltiple).

Fórmulas y datos calculados

IndicadorFórmula
Saldo de puntosΣ puntos emitidos − Σ puntos canjeados
Variación clientes((altas mes actual − altas mes anterior) / altas mes anterior) × 100
Categoría sugeridaDeterminada por puntos mínimos de cada categoría.

Circuitos asociados

  • Ficha del cliente → drill-down a movimientos, suscripciones, alertas, validaciones.
  • Análisis → segmentación avanzada de la misma base.
  • Difusiones → audiencia para envíos masivos.
  • Grupos de interés / Etiquetas / Campos personalizados → permiten enriquecer y segmentar.
  • Flujos → un alta o cambio en el cliente puede disparar automatizaciones.

Tip: antes de una difusión masiva, filtrá acá por validado y exportá; así medís correctamente alcance vs base total y evitás rebotes.

Alta de un cliente

Desde esta pantalla se registra un cliente nuevo en la campaña. También se pueden dar de alta clientes desde el portal (autoregistro), por API o con un archivo del sistema de facturación.

Paso a paso

  1. Ingresá el DNI y tocá Buscar. Si el cliente ya existe en la red, el sistema te lo avisa para no duplicarlo.
  2. Completá los datos personales: nombre, apellido, sexo, fecha de nacimiento, email, teléfono, dirección y localidad.
  3. En Datos campaña elegí la categoría, el comercio donde se registra y, si corresponde, el grupo de interés.
  4. Ingresá el número de tarjeta. En campañas sin tarjeta física se usa el DNI.
  5. Tocá Aceptar.

Recomendaciones

  • Cargá el teléfono con característica (por ejemplo 351 1234567): sin un teléfono válido el cliente no recibe WhatsApp ni recordatorios.
  • La fecha de nacimiento habilita los saludos y beneficios de cumpleaños, y sirve como primera contraseña del portal.
  • Confirmá con el cliente que acepta recibir comunicaciones: sin ese consentimiento no se le envían difusiones.
Si tu usuario es operador y no ves esta opción, la campaña no le habilitó el permiso Registrar clientes. Lo configura un administrador en Permisos del operador.

Ficha del cliente

La ficha reúne toda la información de un cliente de la campaña. Se abre desde el listado de Clientes, desde un movimiento o desde los resultados de un análisis.

Qué muestra

  • Datos personales: nombre, DNI, teléfono, email, fecha de nacimiento, comercio y categoría.
  • Saldo de puntos y su valor en pesos según la categoría del cliente.
  • Movimientos: compras, devoluciones, canjes y ajustes, con fecha y comercio.
  • Etiquetas asignadas, suscripciones a recordatorios y cupones.
  • Estado de validación del teléfono y del email.

Acciones disponibles

  • Modificar cliente: corregir datos personales o de contacto.
  • Reemplazar tarjeta: asignar un número de tarjeta nuevo (por ejemplo, si perdió la anterior). Los puntos se conservan.
  • Cambiar categoría: pasar al cliente a otra categoría del programa.
  • Asignar etiquetas: marcarlo para segmentar difusiones y análisis. Desde el mismo cuadro podés crear una etiqueta nueva.
  • Nuevo movimiento: registrar una venta o un ajuste de puntos para este cliente.
  • Resetear contraseña del portal: generá una clave nueva y comunicásela al cliente. Al cambiarla, se cierran sus sesiones abiertas.
  • Enviar validación de email o teléfono.
  • Enviar WhatsApp o email con una plantilla, usando las variables del cliente ({{Cliente.Nombre}}, {{Cliente.SaldoPuntos}}, etc.).
  • Generar link de pago (Mobbex o Mercado Pago), si la campaña tiene pagos habilitados.
Las acciones que ves dependen de los permisos de tu usuario y de la configuración de la campaña. Por ejemplo, si un operador no tiene permiso para sumar puntos, no verá esa opción.

Registrar una venta (nuevo movimiento)

Se usa para cargar a mano una compra del cliente. Si el comercio tiene integrado su sistema de facturación, las ventas entran solas y no hace falta usar esta pantalla.

Paso a paso

  1. Buscá al cliente por documento o número de tarjeta.
  2. Revisá la fecha, el comercio y cargá el número de comprobante (ticket o factura). El vendedor y la obra social son opcionales.
  3. Agregá los productos con Agregar ítem (producto, precio y cantidad). Si no querés detallar productos, marcá Usar monto directo en lugar de ítems e ingresá el total.
  4. Si el cliente presenta un cupón, ingresá el código.
  5. Si quiere pagar con puntos, indicá los puntos a canjear: el sistema muestra los puntos disponibles y el descuento en pesos.
  6. Tocá Guardar. El sistema calcula los puntos ganados y muestra el nuevo saldo.

Cómo se calculan los puntos

  • Se toma el importe pagado (sin la parte pagada con puntos) y se divide por el valor del punto de la categoría del cliente.
  • Se aplican las promociones vigentes: por producto, marca, día, horario, comercio o tipo de cliente.
  • Cargar los productos (y no sólo el monto) permite aplicar promociones por producto y alimenta los informes por marca y segmento.
Un mismo comprobante no se puede cargar dos veces: si ya existe, el sistema lo informa.

Sumar o descontar puntos manualmente

Permite acreditar o descontar puntos a un cliente sin registrar una venta. Se usa para corregir errores, compensar un reclamo o dar una bonificación puntual.

Paso a paso

  1. Buscá al cliente por documento, apellido, nombre o tarjeta y seleccionalo.
  2. Elegí el comercio al que se imputa el ajuste.
  3. Ingresá la cantidad de puntos y un motivo claro (por ejemplo: “Compensación por reclamo del 12/10”).
  4. Tocá Aceptar. El movimiento queda registrado con tu usuario y se ve en la ficha del cliente.
Cuidado: es la operación con más riesgo del sistema, porque los puntos tienen valor en pesos. Por eso, en las campañas nuevas está desactivada para los operadores; la habilita un administrador en Permisos del operador.

Cuándo no usarla

  • Para registrar una compra: usá Nuevo movimiento, así los puntos se calculan con las reglas y promociones de la campaña.
  • Para anular una venta mal cargada: anulá el movimiento desde su detalle.

Movimientos

Registro y análisis de todas las transacciones del programa: altas de cliente, ventas, asignaciones manuales de puntos y canjes. Combina gráficos históricos de los últimos 6 meses con una grilla de detalle para auditar operaciones puntuales.

Tipos de movimiento principales: Alta de cliente, Venta (suma puntos), Canje (descuenta puntos), Ajuste manual (alta / baja con motivo).

Filtros

  • Rango de fechas (desde - hasta).
  • Tipo de movimiento: alta cliente, venta, canje, ajuste.
  • Comercio.
  • Categoría del cliente al momento del movimiento.
  • Cliente (búsqueda por nombre / DNI).

Gráficos (últimos 6 meses)

  • Ventas a clientes: facturación mensual con variación %.
  • Puntos emitidos y puntos canjeados.
  • Pesos canjeados: monto equivalente entregado a clientes (puntos × valor del punto).

Tabla de detalle

  • Fecha y hora.
  • Cliente (link a ficha) y comercio.
  • Tipo de movimiento.
  • Importe en pesos y puntos involucrados.
  • Usuario que registró la operación.
  • Detalle del movimiento (productos, factura, motivo).

Fórmulas

IndicadorFórmula
Variación mes a mes((actual − anterior) / anterior) × 100
Puntos por ventaDefinida por la categoría / configuración de valor del punto.
Pesos canjeadosPuntos canjeados × valor monetario del punto
Promedio puntos por movimientoΣ puntos / cantidad de movimientos

Acciones

  • Ver detalle de un movimiento (productos, descuentos, cupón aplicado).
  • Imprimir comprobante (movimientos_detalle_print.php).
  • Exportar a Excel el resultado filtrado.

Circuitos asociados

  • Ficha del cliente → mismos movimientos vistos por cliente.
  • Categorías y configuración de valor de puntos → definen cuántos puntos suma cada venta.
  • Cupones y Promociones → afectan el monto / puntos asignados.
  • Informes de ventas → consumen estos mismos datos agregados.
  • Meta Conversions y Google Ads → cada venta puede sincronizarse como evento de conversión.

Tip: usá el filtro por tipo para auditar casos: muchos ajustes manuales en pocos días pueden indicar errores operativos o uso indebido del CRM por parte de un operador.

Detalle y anulación de un movimiento

Muestra todo sobre un movimiento: tipo, fecha, cliente, comercio, comprobante, productos, importe, puntos acreditados y descontados, y el usuario o sistema que lo registró.

Tipos de movimiento

  • Venta: compra del cliente; suma puntos y, si pagó con puntos, también los descuenta.
  • Devolución (nota de crédito): descuenta los puntos ganados en la compra y devuelve los puntos que había usado.
  • Anulación: deja sin efecto un movimiento anterior.
  • Ajuste: carga o descuento manual de puntos.
  • Vencimiento: puntos que vencieron según las reglas de la campaña.

Anular un movimiento

Si una venta se cargó por error, tocá Anular movimiento y confirmá. El sistema revierte los puntos y deja registrada la anulación. No se borra: queda en el historial del cliente.

Si el cliente devolvió la compra, lo correcto es registrar la nota de crédito desde el sistema de facturación, no anular la venta: así los informes reflejan la devolución.

Análisis

Constructor de consultas guardadas para segmentar la base de clientes con criterios combinados: datos demográficos, saldo de puntos, comportamiento de compra, antigüedad, comercio, campos personalizados, etc. Cada análisis se guarda y puede ejecutarse cuantas veces sea necesario, alimentando difusiones, exportaciones o flujos automatizados.

Para qué sirve: generar audiencias reutilizables. Por ej. "clientes con >500 puntos sin comprar en 60 días" es una segmentación que querés disparar varias veces al año.

Filtros (del listado de análisis)

  • Descripción del análisis (búsqueda libre).

Filtros dentro de un análisis

  • Datos demográficos: edad, género, fecha de nacimiento, localidad.
  • Loyalty: categoría, saldo de puntos (mín / máx), antigüedad.
  • Comportamiento: días desde la última compra, cantidad de compras, ticket promedio.
  • Relación: comercio, grupo de interés, etiquetas.
  • Cualquier campo personalizado definido en la campaña.
  • Estado de validación de email / WhatsApp.

Columnas del resultado

  • Datos identificatorios del cliente (ID, nombre, DNI).
  • Contacto (email, teléfono, WhatsApp).
  • Datos demográficos seleccionados.
  • Indicadores de loyalty (puntos, categoría).

Acciones

  • Nuevo análisis: descripción + filtros guardados.
  • Editar filtros (sin perder el ID, las difusiones que lo usan se actualizan).
  • Ejecutar y previsualizar resultados (recuento + lista).
  • Exportar a Excel / CSV.
  • Eliminar.
  • Sincronizar tags a Meta API o Emblue desde el conjunto resultante.

Circuitos asociados

  • Difusiones de WhatsApp / Email → un análisis puede usarse como audiencia.
  • Flujos → ejecución masiva contra el resultado del análisis.
  • Etiquetas → se pueden aplicar tags en bloque al resultado.
  • Clientes → drill-down a la ficha de cada uno.

Tip: nombrá los análisis con prefijo del propósito ([DIF], [ABM], [EXPORT]). Cuando se acumulan 20+ análisis, encontrar el correcto al armar una difusión se vuelve crítico.

Resultado de un análisis de clientes

Muestra los clientes que cumplen los filtros de un análisis, con sus datos de contacto.

Indicadores

  • Total clientes del segmento.
  • Con teléfono y con email: a cuántos les vas a poder escribir.

Acciones

  • Asignar etiquetas a todos los clientes del resultado, para usarlas en otras pantallas. Podés crear una etiqueta nueva desde el mismo cuadro.
  • Crear nueva difusión dirigida a este segmento.
  • Recargar vuelve a calcular el análisis con los datos actuales.

Crónicos que dejaron de comprar

Lista a los clientes de la etiqueta elegida que compraban con regularidad (al menos dos días de compra en los últimos 12 meses) y llevan más de cierta cantidad de días sin comprar. Se abre desde el análisis de clientes recurrentes.

Filtro

Sin comprar hace más de: cantidad de días desde la última compra (60 por defecto). Tocá Aplicar para recalcular.

Indicadores y columnas

  • Dejaron de comprar, cuántos tienen recordatorio activo, teléfono y email.
  • Por cliente: última compra, días sin comprar, compras y monto de los últimos 12 meses, y cada cuántos días compraba.

Acciones

  • Asignar etiquetas a todo el listado: se asignan a todos los clientes, no solo a la página visible. Después podés usar esa etiqueta en una difusión.
  • Crear una difusión para invitarlos a volver.
  • Descargar el listado completo (CSV).
Los clientes que compran cada mucho tiempo (por ejemplo, cada 90 días) pueden aparecer sin haber abandonado el tratamiento: mirá la columna Compraba cada antes de contactarlos.

Etiquetas

Catálogo de etiquetas (tags) que se pueden asignar a los clientes para clasificarlos transversalmente: intereses, comportamientos, segmentos comerciales, fuentes de alta. Son más flexibles que las categorías de loyalty y pueden sincronizarse con audiencias en Meta Cloud API para retargeting.

Categoría vs grupo de interés vs etiqueta:
  • Categoría = nivel de loyalty (única por cliente).
  • Grupo de interés = segmento operativo (pocos, estables).
  • Etiqueta = tag libre (muchas por cliente, dinámicas).

Filtros

  • Título de la etiqueta.

Columnas

  • Título y descripción.
  • Estado activo / inactivo.
  • Cantidad de clientes asociados.

Acciones

  • Alta de etiqueta.
  • Editar / eliminar.
  • Activar / desactivar.
  • Sincronizar con Meta API (subir / bajar el listado para usar como Custom Audience).

Asignación

Las etiquetas se asignan a los clientes desde:

  • La ficha del cliente (manual).
  • Importación masiva de clientes con tags en una columna.
  • Flujos, mediante un nodo actualizar cliente.
  • Análisis, aplicando un tag en bloque al resultado.

Circuitos asociados

  • Análisis → filtran por etiqueta.
  • Difusiones → usan etiquetas como audiencia.
  • Flujos → leen y escriben etiquetas.
  • Meta Cloud API → recibe las etiquetas sincronizadas como audiencias.

Tip: nombrá las etiquetas en minúsculas y sin espacios (vip, recuperado, frio-90d) para mantener consistencia y evitar duplicados por error de tipeo.

Grupos de interés

Segmentos operativos para clasificar a los clientes dentro de la campaña. Los grupos de interés son fijos y estables en el tiempo (a diferencia de las etiquetas, más dinámicas), y suelen representar perfiles de cliente, planes contratados, obras sociales, tipos de membresía o cualquier eje de negocio relevante.

Casos típicos: "Pacientes oncológicos", "Plan Premium", "Obra social IOMA", "B2B mayorista". Estos grupos se usan como condición en flujos, alertas y sincronización con Xelion.

Filtros

  • Nombre del grupo (búsqueda).

Columnas

  • Nombre y descripción del grupo.
  • Cantidad de clientes afiliados.
  • Estado activo / inactivo.

Acciones

  • Alta (modal).
  • Editar / eliminar.
  • Asignar / remover clientes (selección múltiple).

Circuitos asociados

  • Clientes → cada cliente puede pertenecer a uno o varios grupos (muchos a muchos).
  • Flujos → condición típica en nodos IF/CASE.
  • Calendario de recordatorios → filtra qué clientes reciben una alerta según su grupo.
  • Sincronización XELION → carga datos al grupo de interés configurado como destino.
  • Análisis y Difusiones → fuente de segmentación.

Tip: mantené pocos grupos (5-15). Si pasás de 30, perdiste el control: probablemente algunos debieron modelarse como etiquetas o campos personalizados.

Campos personalizados

Definición de campos adicionales que extienden la ficha del cliente para esta campaña específica. Cada campaña puede modelar atributos propios (Obra Social, Plan, Talle, Diagnóstico, Vehículo, etc.) sin tocar el esquema base. Los campos quedan disponibles en alta de cliente, importación, filtros, análisis, condiciones de flujos y variables de plantilla.

Nombre técnico vs nombre a mostrar: el nombre a mostrar es lo que ve el operador (con acentos y espacios). El nombre técnico es el que se usa internamente en variables ({{Cliente.Obra_Social}}), importación y consultas: no admite espacios ni acentos y debe ser único.

Filtros

  • Nombre del campo (búsqueda en el nombre a mostrar).

Columnas

  • Nombre a mostrar y nombre técnico.
  • Tipo de dato: texto, número, fecha, booleano.
  • Requerido (sí / no).
  • Estado activo / inactivo.

Acciones

  • Alta con validación de nombre técnico único.
  • Editar (cambiar tipo de dato puede invalidar valores ya cargados — usar con cuidado).
  • Eliminar (revisar antes que no se use en flujos / plantillas / análisis).

Validaciones

  • Nombre técnico: sin espacios, sin caracteres especiales, único por campaña.
  • Cambio de tipo: posible pero arriesgado — los datos existentes pueden no convertir.

Circuitos asociados

  • Ficha del cliente → muestra los campos en alta y edición.
  • Importación masiva de clientes → acepta los campos como columnas adicionales.
  • Análisis y Difusiones → permiten filtrar y usar los campos como criterio.
  • Flujos → disponibles como variables en condiciones y como destino en acciones actualizar cliente.
  • Plantillas de email y respuestas rápidas → reemplazo de variables en el cuerpo del mensaje.

Tip: antes de marcar un campo como requerido, considerá qué pasa con los clientes existentes que no lo tienen cargado. Pueden quedar bloqueados al editar la ficha hasta que se les complete.

Promociones y cupones

Guía para el cajero: canje de puntos y cupones

Guía rápida para el personal de caja.

El cliente quiere pagar con puntos

  1. Registrá la venta con Nuevo movimiento, o desde el sistema de facturación si está integrado.
  2. Buscá al cliente por DNI o tarjeta: vas a ver sus puntos disponibles.
  3. Ingresá los puntos a canjear: el sistema calcula el descuento en pesos.
  4. Cobrá la diferencia y guardá.

El cliente trae un cupón de premio

  1. Entrá a Usar cupón de puntos.
  2. Elegí tu comercio e ingresá el código del cupón.
  3. Verificá el beneficio y la vigencia, aplicalo en la venta y tocá Marcar como usado.

Preguntas frecuentes

  • El cliente no aparece: puede que no esté registrado. Si tenés permiso, dalo de alta en el momento.
  • El cupón no es válido: puede estar vencido, ya usado o ser de otro programa. El sistema te indica el motivo.
  • Me equivoqué en una venta: pedí a un supervisor que la anule desde el detalle del movimiento.

Promociones

Crea y administra promociones (descuentos, premios, beneficios condicionados) que aplican durante un período a un conjunto de clientes y comercios. Las promos se aplican en el momento de registrar la venta, modificando el monto a facturar o entregando un premio.

Diferencia con cupones: la promoción se aplica automáticamente si el cliente y la venta cumplen las condiciones. El cupón requiere ingresar un código y tiene contador de usos.

Filtros

  • Descripción de la promoción.
  • Rango de fechas de vigencia.
  • Estado: activa / inactiva.

Columnas

  • Descripción y condiciones (mínimo de compra, productos, categoría requerida).
  • Vigencia: fecha y horario desde - hasta.
  • Clientes alcanzados y comercios participantes.
  • Premios o descuentos asociados.
  • Estado activo / inactivo.

Sub-pantallas de configuración

  • Clientes: definir quiénes participan (todos, por categoría, por análisis, por grupo de interés).
  • Comercios (redes): en qué locales se respeta la promo.
  • Premios: producto o descuento que se entrega, con clasificadores opcionales.

Acciones

  • Nueva promoción (datos, vigencia, condiciones).
  • Editar / eliminar.
  • Activar / desactivar sin perder histórico.
  • Ver clientes participantes y premios entregados.

KPIs

  • Clientes beneficiados.
  • Premios entregados.
  • Descuento total otorgado.
  • Ticket promedio bajo promo vs ticket promedio normal.

Circuitos asociados

  • Movimientos → cada venta bajo promo queda registrada con referencia a la promoción.
  • Análisis → puede ser fuente de la lista de clientes participantes.
  • Difusiones → para comunicar la promoción al segmento que la activa.
  • Informes de ventas → permiten medir el impacto en facturación durante la vigencia.

Tip: definí siempre un comparativo (período pre-promo). Si la facturación incremental no compensa el descuento otorgado, la promo es de canibalización y no de captación.

Cupones

Administración de códigos de cupón reutilizables (descuento por porcentaje, monto fijo o puntos) con tope de usos por cliente y total. A diferencia de las promociones, los cupones requieren que el cliente presente el código al momento de la venta o se le entreguen vía difusión / flujo.

Casos típicos: bienvenida (cupón único por cliente nuevo), reactivación (cupón temporal para inactivos), campañas pagas (cupón con código compartido en ads), referidos.

Filtros

  • Código / descripción.
  • Tipo de beneficio: % de descuento, monto fijo en pesos o cantidad de puntos.
  • Estado: activo / inactivo.

Columnas

  • Código único y descripción.
  • Tipo y valor del beneficio.
  • Vigencia (desde - hasta).
  • Usos máximos totales y usos máximos por cliente.
  • Usos actuales (x / máximo) con barra de progreso.
  • Estado activo / inactivo.

Acciones

  • Nuevo cupón con generador de código aleatorio.
  • Editar / eliminar / activar / desactivar.
  • Ver historial de canjes: qué clientes lo usaron, cuándo y en qué comercio.
  • Descargar listado.

Fórmulas

IndicadorFórmula
Tasa de utilización(usos actuales / usos máximos) × 100
Descuento promedio aplicadoΣ descuento entregado / cantidad de canjes
Disponibilidad por clienteusos máximos por cliente − canjes del cliente

Circuitos asociados

  • Movimientos → el canje queda registrado como movimiento con referencia al cupón.
  • Difusiones → los cupones suelen comunicarse vía WhatsApp / Email.
  • Flujos → un cupón puede entregarse automáticamente en un trigger (ej: alta de cliente).
  • Análisis → segmentar a quién entregar el cupón.

Tip: evitá códigos demasiado simples (DESC10) si los compartís en redes; preferí prefijos más sufijo alfanumérico (BV-9K3M2) para reducir uso fraudulento.

Premios por puntos

Los premios por puntos son los beneficios que el cliente puede canjear desde el portal. Al canjear, se le descuentan los puntos y recibe un cupón con código para usar en el comercio.

Crear un premio

  1. Tocá Nuevo premio.
  2. Escribí una descripción clara (por ejemplo: “$5.000 de descuento en tu próxima compra”).
  3. Indicá cuántos puntos cuesta.
  4. Elegí el beneficio: monto fijo o porcentaje, y su valor.
  5. Definí los días de vigencia del cupón desde que se canjea.
  6. Opcional: tope de emisiones (0 = sin tope) y tope por cliente.
  7. Dejalo activo y guardá.

Columnas del listado

  • Emitidos: cupones canjeados por clientes.
  • Usados: cupones ya aplicados en caja.
  • Estado: los premios inactivos dejan de mostrarse en el portal; los cupones ya emitidos siguen valiendo hasta su vencimiento.

Usar un cupón de puntos en caja

Cuando un cliente canjea puntos por un premio desde el portal, recibe un código de cupón. En el mostrador, el cajero lo valida en esta pantalla.

Paso a paso

  1. Elegí el comercio donde estás atendiendo.
  2. Ingresá el código que muestra el cliente y tocá Buscar.
  3. Verificá el beneficio (monto o porcentaje), la vigencia y el cliente.
  4. Si querés, cargá el número de comprobante de la venta donde se aplica.
  5. Tocá Marcar como usado. El cupón ya no se puede volver a usar.
Si el código no aparece, puede estar vencido, ya usado o ser de otra campaña. El sistema te indica el motivo.

Difusiones y WhatsApp

Guía: enviar una difusión de WhatsApp

Una difusión es un envío de WhatsApp a un grupo de clientes. Esta guía cubre el proceso completo.

1. Tener un canal de WhatsApp

La campaña necesita un número conectado: Meta Cloud API (número oficial, recomendado para envíos masivos) o Evolution API.

2. Elegir a quién escribir

  • Usá un análisis de clientes (por ejemplo, compraron protector solar el verano pasado) o una etiqueta.
  • Sólo reciben el mensaje los clientes que aceptan difusiones y tienen un teléfono válido.

3. Preparar el mensaje

  • Con Meta, el mensaje tiene que ser una plantilla aprobada. Podés generarla con IA.
  • Personalizalo con el nombre del cliente y sus puntos.
  • Incluí una acción concreta: “Mostrá este mensaje en caja” o un link al portal.

4. Programar el envío

En Difusiones de WhatsApp elegí el canal, la plantilla, el segmento y la fecha y hora. Evitá horarios de descanso.

5. Medir

En Resultados de una difusión y en el Informe de difusiones ves entregados, leídos, respuestas y ventas posteriores al envío.

No envíes varias difusiones seguidas al mismo grupo. Si muchos clientes bloquean o denuncian el número, Meta baja su calidad y puede limitar los envíos.

Difusiones de WhatsApp

Envíos masivos de WhatsApp (Evolution o Meta Cloud) y Email. Cada difusión tiene un canal, una audiencia, un cuerpo del mensaje y un momento de ejecución. La pantalla muestra el progreso en vivo: cuántos destinatarios totales, cuántos enviados, pendientes y errores.

Elección del canal:
  • Meta Cloud API: difusiones formales, plantillas aprobadas, audiencias grandes.
  • Evolution API: comunicaciones a clientes que ya tienen conversación abierta.
  • Email: contenido extenso, adjuntos, comunicación menos intrusiva.

Filtros

  • Nombre de la difusión.

Columnas

  • Nombre, canal (Evolution / Meta Cloud / Email).
  • Fecha y hora de ejecución programada.
  • Estado (Activo / Inactivo).
  • Sólo suscriptos: limita a los que tienen opt-in.
  • Total destinatarios, enviados, pendientes.
  • Barra de progreso (% completado).

Acciones

  • Nueva difusión (modal completo).
  • Editar (mientras esté en estado Pendiente).
  • Pausar / activar.
  • Eliminar.
  • Programar fecha y hora de inicio.
  • Importar contactos desde Excel o seleccionar por análisis, etiquetas, grupo de interés.
  • Adjuntar imagen / PDF.
  • Ver enviados y errores (sub-pantalla).
  • Detalle con búsqueda incremental por destinatario.

Fórmulas

IndicadorFórmula
ProgresoEnviados / Total destinatarios × 100
Tasa de errorErrores / Total enviados × 100
Costo estimado Meta CloudTotal destinatarios × costo unitario configurado

Circuitos asociados

  • Meta Cloud API y Evolution API → canales que envían.
  • Plantillas de email y respuestas rápidas → cuerpo de la difusión.
  • Análisis, Etiquetas, Grupos de interés → segmentos para la audiencia.
  • Informe de difusiones → mide entregas, respuestas y conversiones.
  • Importar contactos (difusiones_importar*.php) → carga de listas externas.

Tip: programá las difusiones a horarios laborables (10-19 hs en zona del cliente). Los envíos masivos fuera de horario tienen peor tasa de respuesta y aumentan reportes en Meta.

Resultados de una difusión

Muestra el resultado de una difusión ya enviada, cliente por cliente.

Indicadores

  • Mensajes enviados y errores encontrados (por ejemplo, números inválidos o sin WhatsApp).
  • Contestado: el cliente respondió el mensaje.
  • Vendido: el cliente compró después de recibir la difusión.
  • Top productos, marcas y segmentos de las ventas posteriores al envío.

Filtros y exportación

  • Filtrá por estado de envío, contestado o vendido para armar, por ejemplo, una segunda difusión a quienes no respondieron.
  • Exportar gráficos descarga los resultados para compartirlos.

Importar clientes que aceptan difusiones

Sólo los clientes que aceptan recibir difusiones reciben envíos masivos y recordatorios. Si tenés ese consentimiento en otra base (por ejemplo, una planilla del comercio), lo podés activar acá en forma masiva.

Paso a paso

  1. Paso 1: seleccioná el archivo CSV con nombre y teléfono de cada cliente.
  2. Paso 2: revisá las coincidencias. El sistema busca a cada persona por teléfono o DNI e indica Coincidencia por. Podés ver todos, sólo los encontrados o los que no tienen coincidencia.
  3. Marcá los clientes encontrados que querés activar y tocá Activar RecibeDifusiones.
El proceso corre en el servidor: podés cerrar el navegador y volver más tarde a ver el resultado.
Activá sólo clientes que realmente dieron su consentimiento. Enviar mensajes a quien no lo aceptó puede generar denuncias y el bloqueo del número de WhatsApp.

Plantillas de WhatsApp (Meta)

WhatsApp exige que los mensajes que inicia la empresa usen una plantilla aprobada por Meta. Desde acá se crean, se envían a aprobación y se consultan.

Crear una plantilla

  1. Elegí el nombre (sólo minúsculas, números y guión bajo), la categoría y el idioma.
    • Marketing: promociones, ofertas, recupero de clientes.
    • Utilidad: avisos sobre una compra, un pedido o un recordatorio.
    • Autenticación: códigos de verificación.
  2. Opcional: un encabezado de texto, imagen, video o documento.
  3. Escribí el cuerpo. Usá variables {{1}}, {{2}}… para datos que cambian, como el nombre del cliente.
  4. Opcional: pie de página y hasta 3 botones (link o respuesta rápida).
  5. Guardá: la plantilla queda pendiente hasta que Meta la aprueba, normalmente en minutos u horas.

Generar o revisar con IA

  • Generar con IA: indicás el objetivo (promo, recordatorio, recupero, bienvenida), el tono y la oferta, y la IA propone el texto y los botones.
  • Revisar con IA: analiza tu texto y sugiere mejoras, teniendo en cuenta el rendimiento real de tus difusiones anteriores.
Las plantillas de marketing tienen costo por mensaje en Meta y más controles. Si el mensaje es un aviso de servicio, usá utilidad.

Meta Cloud API

Configuración de los canales oficiales de WhatsApp Business (Meta Cloud API). Es el canal autorizado para envíos masivos en frío, con plantillas aprobadas por Meta y reglas estrictas de uso. Es el más adecuado para difusiones, recordatorios, validaciones y campañas formales.

Reglas de Meta a tener presentes:
  • Para enviar fuera de la ventana de 24 hs desde el último contacto del cliente, sólo se admiten plantillas aprobadas por Meta.
  • El cliente debe tener WhatsApp validado (opt-in).
  • El quality rating del número puede caer rápido si los mensajes son reportados.

Filtros

  • Nombre del canal Meta Cloud.

Columnas

  • Nombre del canal.
  • Predeterminado (Sí / No).
  • Acciones: plantillas, prueba, editar, eliminar.

Campos del formulario

  • Phone Number ID y Display Phone Number.
  • WhatsApp Business Account ID (WABA).
  • Access Token (con permisos whatsapp_business_messaging).
  • App ID y App Secret (opcional, para webhooks).
  • Costo unitario por mensaje (referencia para el ROAS).

Acciones

  • Nuevo canal / editar / eliminar.
  • Gestionar plantillas: vincular las plantillas aprobadas por Meta a la campaña (sincronización con el WABA).
  • Enviar prueba de mensaje a un número definido.
  • Marcar como predeterminado.

Circuitos asociados

  • Difusiones → consumen los canales y plantillas configurados acá.
  • Calendario de recordatorios → cada tipo de alerta usa una plantilla aprobada.
  • Flujos → los nodos de WhatsApp Meta usan estas plantillas.
  • Validación de WhatsApp → genera el opt-in necesario para enviar.
  • Informe de difusiones → mide tasa de entrega y costo.

Tip: antes de un envío masivo, hacé siempre una prueba con tu número propio y revisá los parámetros de la plantilla. Una plantilla mal parametrizada se rechaza en Meta y arruina la difusión completa.

Evolution API

Configuración de las instancias de Evolution API utilizadas por la campaña para enviar y recibir mensajes de WhatsApp. Evolution es el canal no oficial: se vincula un número de línea propia escaneando un código QR, sin pasar por Meta Business. Ideal para mensajes de respuesta y notificaciones cotidianas; no recomendado para envíos masivos en frío.

Atención: el envío masivo a contactos que no iniciaron conversación puede generar bloqueos del número por parte de WhatsApp. Para difusión masiva en frío usá Meta Cloud API con plantillas aprobadas.

Filtros

  • Nombre de la instancia o de la Evolution API.

Columnas

  • Nombre Evolution API y nombre de instancia (etiqueta interna).
  • API Key y URL del servidor.
  • Estado de conexión: Open (conectado) / Cerrado (desconectado). Se consulta en tiempo real vía cURL.
  • Predeterminada: la marcada es la usada por defecto en difusiones y flujos de la campaña.

Acciones

  • Nueva instancia: cargar URL del servidor, API Key y datos de la línea.
  • Editar / eliminar.
  • Generar QR: muestra el QR para escanear desde el WhatsApp del número (formato internacional).
  • Desconectar (logout): sólo si la instancia está en estado Open.
  • Marcar como predeterminada: una sola instancia puede serlo por campaña.

Circuitos asociados

  • Respuestas rápidas (Evolution) → mensajes preconfigurados que usan esta instancia.
  • Difusiones → eligen una instancia como canal.
  • Flujos → los nodos de WhatsApp pueden enviar por Evolution.
  • Cron enviar_alertas_evolution_cron.php → envíos automáticos de alertas / suscripciones.

Tip: si la instancia aparece Cerrada de un día para el otro sin motivo, suele indicar que el número fue desvinculado desde otro celular o que el servidor de Evolution está caído. Revisá la URL primero y volvé a generar QR si la línea sigue activa.

Respuestas rápidas (Evolution)

Catálogo de mensajes pre-configurados asociados a una cuenta de Evolution API. Las respuestas rápidas se usan para envíos individuales desde la ficha del cliente, como cuerpo en alertas, dentro de flujos y como apoyo al operador (atajos para casos repetitivos).

Cuándo usar: agradecimientos, bienvenidas, instrucciones, derivaciones, recordatorios genéricos. Para envíos masivos en frío preferí siempre Meta Cloud API con plantillas aprobadas.

Filtros

  • Cuenta Evolution API (selector con todas las cuentas configuradas).

Columnas

  • Cuenta Evolution.
  • Nombre de la respuesta (etiqueta interna).
  • Mensaje (texto libre, en la grilla aparece truncado a ~100 caracteres).

Variables soportadas

El texto admite variables que se reemplazan al enviar el mensaje:

  • {{Cliente.Nombre}}
  • {{Cliente.Apellido}}
  • {{Cliente.NombreCompleto}}
  • {{Cliente.Puntos}}
  • {{Cliente.Categoria}}
  • Cualquier campo personalizado de la campaña: {{Cliente.NombreTecnicoDelCampo}}

Acciones

  • Nueva respuesta rápida.
  • Editar / eliminar.

Circuitos asociados

  • Ficha del cliente → el operador selecciona una respuesta rápida y la envía.
  • Flujos → un nodo de WhatsApp puede tomar una respuesta rápida como cuerpo.
  • Calendario de recordatorios → cada tipo de alerta puede usar una respuesta rápida.
  • Evolution API → instancia desde la que se envía.

Tip: nombrá las respuestas con prefijo del caso de uso ([BV] bienvenida, [REC] recordatorio, [FAQ]) para encontrarlas rápido al operar la ficha del cliente.

Plantillas de email

Biblioteca de plantillas de email reutilizables (HTML + texto plano). Son la base de los envíos transaccionales (emails por evento), las difusiones y las acciones de email dentro de los flujos. Cada plantilla tiene un asunto, un cuerpo HTML y un fallback en texto plano.

Editor: Summernote con toolbar completo (formato, color, imágenes, tablas, vista de código). Soporta inserción de variables del sistema y subida de imágenes inline.

Filtros

  • Nombre de la plantilla.

Columnas

  • Nombre interno.
  • Asunto del email.
  • Última modificación.
  • Estado activo / inactivo.

Variables soportadas en el cuerpo

  • {{Cliente.Nombre}}, {{Cliente.Apellido}}, {{Cliente.NombreCompleto}}
  • {{Cliente.Email}}, {{Cliente.Telefono}}, {{Cliente.DNI}}
  • {{Cliente.Puntos}}, {{Cliente.Categoria}}, {{Cliente.NroTarjeta}}
  • {{Campania.Nombre}}, {{Comercio.Nombre}}
  • Cualquier campo personalizado: {{Cliente.NombreTecnico}}
  • Datos del movimiento (en contextos de venta): {{Movimiento.Importe}}, {{Movimiento.Productos}}

Acciones

  • Nueva plantilla (modal con editor).
  • Editar / duplicar / eliminar.
  • Vista previa: render con datos de muestra antes de guardar.
  • Activar / desactivar.
  • Insertar variables desde un picker del editor.

Circuitos asociados

  • Emails por evento → asigna una plantilla a un evento del sistema (alta, movimiento, cumpleaños).
  • Difusiones de email → cuerpo de un envío masivo.
  • Flujos → nodo Email selecciona una plantilla.
  • Calendario de recordatorios → cada tipo de alerta puede usar una plantilla.
  • Configuración del portal → algunas plantillas se usan en validación de email y registro.

Tip: mantené siempre una versión texto plano coherente con el HTML; algunos clientes de email lo prefieren y mejora la entregabilidad. Evitá imágenes pesadas y enlaces acortados (suben la chance de spam).

Emails por evento

Asociación entre eventos del sistema y plantillas de email para envíos automáticos. Cada evento (alta de cliente, registro de movimiento, cumpleaños, modificación de datos) puede tener una plantilla asignada que el motor de email dispara sin intervención.

Flujo: ocurre el evento → el sistema busca la plantilla asociada → renderiza variables con los datos del cliente / movimiento → envía via PHPMailer → registra en log.

Filtros

  • Evento (dropdown con eventos disponibles).
  • Estado activo / inactivo.

Eventos típicos

  • ALTA_CLIENTE — bienvenida al darse de alta en la campaña.
  • MODIFICAR_CLIENTE — confirmación al editar datos personales.
  • MOVIMIENTO — comprobante de venta y puntos sumados.
  • CUMPLEAÑOS — saludo automático.
  • VALIDAR_EMAIL — envío del link de validación.
  • RECUPERAR_PASSWORD — link para el portal del cliente.
  • CAMBIO_CATEGORIA — notificación al subir o bajar de nivel.

Columnas

  • Evento.
  • Plantilla de email asociada.
  • Estado del disparo (activo / desactivado).
  • Última modificación.

Log integrado

La pantalla incluye una tabla con los últimos 50 emails enviados: estado (OK / ERROR), destinatario, fecha y motivo del fallo si lo hubo. Los envíos fallidos pueden reintentarse manualmente.

Acciones

  • Asignar plantilla a un evento.
  • Activar / desactivar el disparo para un evento sin perder la asociación.
  • Reintentar envíos fallidos.
  • Ver log histórico.

Circuitos asociados

  • Plantillas de email → catálogo del cuerpo y asunto.
  • Cliente / Movimientos → fuentes de datos para las variables.
  • Validación de email → consumidor de VALIDAR_EMAIL.
  • Portal del cliente → consumidor de RECUPERAR_PASSWORD y otros.

Tip: revisá el log al menos una vez por semana. Una tasa de fallo creciente suele indicar problemas de SMTP (cuotas, listas negras) más que de plantilla.

Recordatorios

Guía: recordatorios de compra de medicamentos

Los recordatorios avisan al cliente, por WhatsApp o email, cuándo se le termina un medicamento o producto de uso continuo. Mejoran la adherencia al tratamiento y la recompra.

1. Configurar el tipo de recordatorio

En Difusión por suscripción definí el mensaje, el canal y con cuántos días de anticipación se envía.

2. Suscribir a los clientes

  • Desde Suscripciones, indicando el producto y cada cuántos días lo compra.
  • El cliente también se puede suscribir solo desde el portal.
  • Con ventas integradas, el sistema puede proponer suscripciones a partir de las compras repetidas.

3. Seguimiento

El calendario de recordatorios muestra qué avisos se van a enviar cada día y cuáles ya se enviaron.

Los recordatorios son sólo para avisos de reposición. Para promociones u otras comunicaciones, usá difusiones con etiquetas.

Suscripciones a recordatorios

Suscripciones de clientes a recordatorios periódicos, típicamente para productos de consumo frecuente (medicamentos crónicos, recambio de productos, retiro de pedidos). El cron suscripciones_cron.php genera los envíos en el día configurado, usando los canales habilitados de la campaña.

Diferencia con Calendario de recordatorios: aquélla genera alertas por eventos (cumpleaños, vencimientos). Esta suscribe al cliente a un envío semanal recurrente en un día puntual.

Filtros

  • Cliente: búsqueda por nombre, apellido o DNI.
  • Comercio.
  • Día preferido de envío (lunes a domingo).
  • Estado: activa / inactiva.

Columnas

  • Cliente (nombre, DNI, tarjeta).
  • Comercio.
  • Día de envío programado.
  • Productos suscriptos y notas internas.
  • Fecha de alta.
  • Cantidad de recordatorios enviados hasta la fecha.
  • Estado activo / inactivo.

Acciones

  • Nueva suscripción (modal con selector de productos del comercio).
  • Editar productos, día, notas.
  • Activar / desactivar sin perder histórico.
  • Eliminar.
  • Carga masiva desde Excel.
  • Ver historial de envíos previos del cliente.

Circuitos asociados

  • Ficha del cliente → vista alternativa de la misma información.
  • Plantillas de email y respuestas rápidas (Evolution) → cuerpo del recordatorio.
  • Meta Cloud API → si se envía por canal oficial, requiere plantilla aprobada.
  • Cron suscripciones_cron.php → motor de envío diario.
  • Informe de difusiones → entregas y respuestas quedan registradas allí.

Tip: revisá la cantidad de envíos; suscripciones con muchos recordatorios y cero respuesta suelen ser candidatas a baja para no consumir cuota de Meta Cloud API.

Calendario de recordatorios

Calendario de alertas y recordatorios automáticos disparados por eventos del cliente: cumpleaños, aniversarios, vencimientos de membresía, inactividad, cobranza, etc. A diferencia de las difusiones, las alertas no son envíos masivos puntuales sino automatismos que corren todos los días según los datos de cada cliente.

Motor: el cron enviar_alertas_cron.php recorre cada día las alertas configuradas y dispara los envíos correspondientes. Para WhatsApp por Evolution corre enviar_alertas_evolution_cron.php.

Filtros

  • Rango de fechas del calendario.
  • Filtros opcionales por campo personalizado (ej: Obra Social).
  • Tipo de alerta y canal.

Vista

  • Calendario tipo FullCalendar: cada alerta aparece como evento en su día de envío.
  • Tipo de contacto: WhatsApp Evolution / WhatsApp Meta / Email / SMS.
  • Plantilla / respuesta rápida asociada.
  • Cantidad de clientes afectados ese día.

Acciones

  • Crear alerta nueva: tipo, día relativo al evento (offset en días), canal y plantilla.
  • Editar alerta existente.
  • Asignar plantilla aprobada (Meta) o respuesta rápida (Evolution).
  • Configurar condición opcional (filtro por campo personalizado para limitar la audiencia).
  • Resincronizar a ChatWoot o Emblue si la integración lo requiere.
  • Eliminar.

Tipos de alerta comunes

  • Cumpleaños del cliente.
  • Aniversario de alta.
  • Inactividad N días.
  • Vencimiento de membresía / suscripción.
  • Recordatorio de cobranza.
  • Cambio de categoría de loyalty.

Circuitos asociados

  • Difusión por suscripción (tipos de alerta) → catálogo de tipos disponibles.
  • Meta Cloud API / Evolution API → canales de envío.
  • Plantillas de email y respuestas rápidas → cuerpo del mensaje.
  • Campos personalizados → soporte para condiciones opcionales.
  • Informe de difusiones → mide las alertas como un origen más.

Tip: revisá el calendario al menos una vez por mes. Las alertas con plantillas Meta que se rechazaron no se reemiten automáticamente — quedan acumuladas como errores hasta que actualices la plantilla.

Difusión por suscripción

Catálogo de tipos de alerta automática que el sistema dispara por eventos del cliente (cumpleaños, aniversario, inactividad, vencimientos). Cada tipo tiene un offset en días respecto al evento y puede asociarse a varios canales (Chatwoot, emBlue, Evolution API, Meta Cloud API).

Diferencia con Calendario de recordatorios: esta pantalla define tipos de alerta (la plantilla del automatismo). El calendario muestra las ejecuciones que se van a disparar día a día.

Filtros

  • Nombre de la alerta.

Columnas

  • Nombre del tipo de alerta.
  • Diferencia en días: offset de envío respecto al evento (negativo = antes, positivo = después, 0 = el día del evento).
  • Estado activo / inactivo.
  • Fecha de alta.
  • Integraciones asociadas: cantidad de canales habilitados (Chatwoot, emBlue, Evolution, Meta).

Acciones

  • Alta de tipo de alerta (modal).
  • Editar / eliminar.
  • Asignar canales de envío: para cada canal se elige plantilla / respuesta rápida.
  • Configurar parámetros específicos del canal (ej. Chatwoot: inbox, agente, etc.).
  • Vista de entregas por canal.

Tipos de alerta usuales

  • Cumpleaños del cliente.
  • Aniversario de alta en el programa.
  • Inactividad N días.
  • Vencimiento de membresía.
  • Próxima cobranza / recordatorio de pago.
  • Próximo turno o cita.

Circuitos asociados

  • Calendario de recordatorios → muestra las ejecuciones día a día de cada tipo.
  • Cron enviar_alertas_cron.php → motor que dispara los envíos.
  • Plantillas de email / respuestas rápidas → cuerpo del mensaje por canal.
  • Informe de difusiones → registra las alertas como un origen más.

Tip: usá offsets negativos (-3) para avisos previos (3 días antes del vencimiento) y positivos para seguimiento posterior. Una buena estrategia combina las dos: -7, -1, +1.

Informes

Ventas generales

Vista analítica del rendimiento comercial de la campaña en un período: facturación, comportamiento de los clientes, ticket promedio, distribución horaria y top performers. Es el informe de cabecera para decisiones operativas (campañas de comunicación, ajuste de objetivos, estrategia de comercios).

Fuente de datos: tabla de movimientos de la campaña, alimentada por las ventas registradas en los comercios (operador, ecommerce o integraciones). El comparativo siempre toma período anterior de igual duración.

Filtros

  • Rango de fechas (desde - hasta): define el período de análisis. El sistema calcula automáticamente el período anterior de igual cantidad de días para las variaciones porcentuales.
  • Comercio: limita el informe a un comercio puntual o promedia todos los habilitados al usuario.

KPIs principales (cards superiores)

  • Facturación total — suma de importes de movimientos de tipo venta.
  • Clientes activos — clientes únicos con al menos un movimiento en el período.
  • Cantidad de movimientos — número de transacciones registradas.
  • Ticket promedio — facturación dividida por movimientos.
  • Frecuencia de compra — movimientos promedio por cliente activo.

Cada KPI muestra el valor del período + variación % contra el período anterior, con flecha y color (verde si mejora, rojo si cae).

Gráficos y tablas

  • Mapa de calor por hora: distribución de ventas por día de la semana y hora del día. Útil para detectar horarios pico y planificar staff o difusiones.
  • Evolución diaria: línea con proyección lineal sobre lo que falta del período.
  • Torta por comercio: peso relativo de cada comercio en la facturación total.
  • Torta por categoría: distribución por categoría de loyalty del cliente al momento de la venta.
  • Nuevos clientes por comercio: clientes con primer movimiento en el período.
  • Top 10 clientes y Top 10 productos por facturación.

Fórmulas y cálculos clave

IndicadorFórmula
Ticket promedioFacturación / Cantidad movimientos
Variación %((actual − anterior) / anterior) × 100
Frecuencia de compraMovimientos / Clientes únicos
% Comercio(Facturación comercio / Facturación total) × 100
Proyección a fin de período(Total acumulado / Días transcurridos) × Días totales del período

Circuitos asociados

  • Definición de objetivos mensuales → para que Cumplimiento de objetivos pueda contrastar facturación real vs target.
  • Ventas detalladas — Marcas y segmentos → drill-down por marca cuando un comercio o categoría necesita un análisis más profundo.
  • Análisis → tomar clientes top o nuevos como audiencia para una difusión.
  • Meta Conversions → estos eventos de venta también pueden enviarse a Meta Ads (si la integración está activa) para optimizar campañas pagas.

Tip: compará períodos equivalentes (lun-dom, mes calendario completo). El comparativo automático usa la misma cantidad de días, así que un rango irregular puede dar variaciones poco intuitivas.

Ventas detalladas (Marcas y segmentos)

Detalle de ventas agrupado por marca o por segmento de producto. Sirve para entender qué marcas / segmentos están traccionando la facturación, cuáles caen mes a mes y dónde concentrar acciones comerciales. Permite drill-down al detalle de clientes por marca y a la evolución temporal.

Pre-requisito: los productos deben estar clasificados por marca y segmento. Se recomienda correr sql/aplicar_indices_clasificadores_v2.sql para acelerar 30-50% estas consultas.

Filtros

  • Rango de fechas.
  • Comercio.
  • Tipo de agrupación: marca o segmento.
  • Columnas visibles (toggle).

Columnas

  • Marca / segmento.
  • Ventas totales en el período.
  • Cantidad de transacciones.
  • Clientes únicos que compraron la marca.
  • Ticket promedio por marca.
  • % de participación en el total de ventas.

Fórmulas

IndicadorFórmula
% Participación(Ventas marca / Ventas totales) × 100
Ticket promedio marcaVentas marca / Cantidad transacciones marca
PenetraciónClientes únicos marca / Clientes únicos totales

Acciones

  • Ordenar por cualquier columna (asc / desc).
  • Búsqueda inline.
  • Exportar a Excel.
  • Drill-down: clic en una marca abre la vista de clientes que compraron y la evolución mensual.
  • Sincronizar tags de marca (informe_marcas_tags_save.php).

Circuitos asociados

  • Informes de ventas → vista general que motiva el drill-down acá.
  • Validar clasificadores → identifica productos sin marca / segmento que no aparecen en este informe.
  • Análisis → segmentar clientes a partir de las marcas que compraron.

Tip: si una marca importante aparece con % de participación bajo y poca cantidad de transacciones, revisá Validar clasificadores: probablemente haya productos no etiquetados.

Definición de objetivos mensuales

Carga de los objetivos comerciales mensuales por comercio. Estos valores son la referencia contra la cual Cumplimiento de objetivos mide el desempeño real. Sin objetivos cargados, los informes muestran "sin objetivo" y los semáforos quedan en gris.

Quién carga qué: el plan comercial define los objetivos antes del mes; el sistema los compara contra movimientos reales. Cualquier ajuste posterior se ve reflejado de inmediato en los reportes.

Filtros

  • Comercio.
  • Mes / año a editar.
  • Rango personalizado de meses para edición en lote.

Campos editables por fila

  • Objetivo de ventas (facturación esperada).
  • Objetivo de nuevos clientes.
  • Objetivo de cantidad de tickets (transacciones).
  • Objetivo de ticket promedio.

Acciones

  • Guardar por fila (AJAX, sin refrescar la página).
  • Importar desde CSV para carga masiva.
  • Exportar plantilla con la grilla actual.
  • Limpiar objetivos del período (con confirmación).

Validaciones

  • Valores numéricos positivos.
  • Si el mes está cerrado, sólo un administrador puede modificar.
  • Los cuatro campos no son obligatorios al mismo tiempo: podés cargar sólo ventas o sólo tickets si tu plan así lo define.

Circuitos asociados

  • Cumplimiento de objetivos → consumidor directo de estos valores.
  • Administrar campañas (Superadmin) → muestra el % de cumplimiento global por campaña.
  • Informes de ventas → entrega los valores reales que se comparan.

Tip: cargá los objetivos antes del día 1 del mes. Si los cargás a fin de mes, vas a estar ajustando target a resultado, lo que distorsiona la cultura de pronóstico.

Índices de inflación (IPC)

Administración del índice de precios al consumidor (IPC) mensual utilizado para la generación automática de objetivos. El valor se expresa como variación porcentual mes a mes (ej.: 2,450 = 2,45%).

Fuente oficial: API de Series de Tiempo de Argentina (apis.datos.gob.ar), serie IPC Nivel General del INDEC. Si el dato aún no fue publicado, podés cargarlo manualmente.

Acciones

  • Sincronizar API — descarga valores oficiales sin pisar registros manuales.
  • Forzar sincronización — actualiza también los registros cargados a mano.
  • Cargar manual — alta o edición de un mes específico.

Uso en objetivos automáticos

Al generar objetivos del mes M, el sistema aplica el IPC del mes M-1. La inflación se aplica a Ventas; Nuevos clientes y cantidad de tickets mantienen la base; el ticket promedio se recalcula a partir de ventas y tickets.

Tip: el INDEC publica el IPC con demora (~12–15 días). Verificá que el mes anterior esté cargado antes de usar “Generar automáticamente”.

Cumplimiento de objetivos

Tablero que compara los resultados reales contra los objetivos mensuales cargados. Devuelve semáforos por métrica y gráficos de tendencia, para detectar rápidamente desvíos antes de fin de mes.

Lectura: verde es OK, amarillo conviene atender, rojo requiere acción inmediata. Si una métrica aparece sin color, no hay objetivo cargado para ese mes / comercio.

Filtros

  • Rango de meses: 1, 3, 6, 12 (botones rápidos) o personalizado.
  • Comercio.

KPIs (cuatro tarjetas)

  • Ventas — facturación real vs objetivo.
  • Nuevos clientes.
  • Cantidad de tickets.
  • Ticket promedio.

Cada tarjeta muestra: valor real, valor objetivo, % de cumplimiento y diferencia absoluta (brecha).

Gráficos

  • Cuatro líneas de tiempo (Real vs Objetivo) mes a mes para cada métrica.
  • Hover muestra valores exactos y % de cumplimiento del punto.

Fórmulas

IndicadorFórmula
% Cumplimiento(Real / Objetivo) × 100
Brecha absolutaReal − Objetivo
Estado del semáforoCumplido ≥ 100% · En camino 70-99% · Crítico < 70%

Circuitos asociados

  • Definición de objetivos mensuales → fuente de los targets.
  • Informes de ventas → detalle de la facturación real.
  • Administrar campañas (Superadmin) → cumplimiento agregado a nivel de campaña.

Tip: revisá este tablero el día 15 de cada mes. Si una métrica está en rojo, todavía hay tiempo de activar una difusión o promoción para corregir el rumbo.

Análisis de clientes recurrentes (crónicos)

Mide cómo se comportan los clientes recurrentes (por ejemplo, pacientes crónicos con tratamientos de uso continuo) que tienen una etiqueta. Sirve para controlar la adherencia y detectar a tiempo a quienes dejan de comprar.

Cómo se usa

  1. Elegí la etiqueta que identifica a estos clientes. La etiqueta predeterminada se configura en Configuración › Clientes › Etiquetas.
  2. Elegí el período con Mes desde y Mes hasta, o con los atajos 6 meses, 12 meses o Este año.
  3. Tocá Consultar.

Indicadores

  • Clientes etiquetados y cuántos de ellos compraron en el período.
  • Etiquetados suscriptos a recordatorios y cuántos de esos compraron.
  • Clientes que compraron, cantidad de compras, monto vendido y ticket promedio.
  • Evolución mensual: la burbuja muestra la variación contra el mes anterior y la línea punteada, los clientes con suscripción a recordatorios.

Análisis de cohortes

Cada fila agrupa a los clientes por el mes de su primera compra. Las columnas muestran qué porcentaje volvió a comprar en los meses siguientes (Mes 0 es el mes de la primera compra). Una cohorte que cae rápido indica baja adherencia.

Clientes que dejaron de comprar

El aviso indica cuántos clientes que compraban con regularidad llevan más de 60 días sin comprar. Desde ahí se abre el listado de crónicos que dejaron de comprar para contactarlos.

Análisis con IA

Análisis con IA genera un informe con fortalezas, oportunidades de mejora y un plan de acción. El resultado se guarda; Re-analizar genera uno nuevo y consume créditos de IA.

Con Exportar descargás la página o los datos, o los enviás por email.

Informe de difusiones

Informe unificado de todas las comunicaciones salientes de la campaña: difusiones programadas, recordatorios automáticos, alertas, suscripciones y mensajes enviados desde flujos. Agrupa el dato por canal (WhatsApp Evolution / Meta Cloud / Email) y por origen, para entender qué genera engagement y qué genera costo.

Funnel completo: Audiencia → Entregados → Contestados → Vendidos → $ vendido. Cada paso muestra el valor absoluto y el porcentaje sobre el paso anterior.

Filtros

  • Período: últimos 7, 15, 30 o 90 días (botones rápidos).
  • Canal: WhatsApp Evolution, Meta Cloud API, Email.
  • Origen: difusión, alerta, recordatorio, flujo.

Sección WhatsApp

  • Funnel completo con conversión paso a paso.
  • Gráfico de mensajes por canal (Evolution vs Meta Cloud).
  • Torta de distribución por origen.
  • Línea temporal (día / semana / mes).
  • Tabla detalle de envíos.

Sección Email

  • Funnel de entregados, abiertos, respondidos.
  • Tabla con campañas de email del período.

Fórmulas

IndicadorFórmula
Tasa de entregaEntregados / Enviados × 100
Tasa de respuestaContestados / Entregados × 100
Tasa de conversiónVendidos / Contestados × 100
ROAS de comunicación$ vendido / costo del envío
Costo Meta Cloudcantidad enviada × costo unitario configurado en parámetros

Circuitos asociados

  • Difusiones → fuente principal de envíos masivos.
  • Calendario de recordatorios y Suscripciones → segunda fuente, automática.
  • Flujos → tercera fuente, comunicaciones por trigger.
  • Meta Cloud API, Evolution API, emBlue → canales que envían.
  • Parámetros → define el costo unitario usado en el ROAS.

Tip: si la tasa de entrega cae bruscamente en Meta Cloud, suele indicar quality rating bajo del número o plantillas mal usadas. Si cae en Evolution, suele ser desconexión de la instancia (revisá su estado).

Meta Conversions

Tablero de la integración con Meta Conversions API. El CRM envía a Meta eventos de conversión (compra, agregar al carrito, vista de página) server-side para alimentar la optimización de campañas publicitarias en Facebook e Instagram. Esta pantalla muestra qué se envía, cuánto se entrega y dónde fallan los envíos.

Por qué importa: los pixels en el navegador pierden cada vez más datos por bloqueadores y políticas de privacidad. La API server-side recupera información que el pixel ya no captura, mejorando la atribución y reduciendo el CPA de las campañas pagas.

Filtros

  • Período: últimos 30 días (configurable).
  • Comercios incluidos en la sincronización.

KPIs de la base

  • Clientes totales.
  • Con email validado.
  • Con WhatsApp validado.
  • Movimientos y facturación del mes actual.
  • Clientes únicos del mes.

Estado de la integración

  • Configuración activa: pixel ID, access token, evento configurado, límite de envío.
  • Historial de últimas sincronizaciones: fecha, evento, cantidad enviada, estado, detalles del error si hubo.
  • Gráfico de eventos enviados por día con tasa de éxito / fallo.
  • Comparativa: eventos esperados (generados por el CRM) vs eventos enviados a Meta.

Métricas de sync

IndicadorCálculo
Enviados últimas 24hSuma de eventos enviados con éxito en 24h.
Tasa de sincronizaciónEventos enviados / Eventos generados × 100
Errores 24hCantidad de fallos en las últimas 24h.
Última sync exitosaTimestamp del último envío con respuesta OK.

Circuitos asociados

  • Parámetros → pixel ID, access token y configuración de evento se cargan ahí.
  • Movimientos → fuente de los eventos de compra que se envían.
  • Cron sync_meta_conversions.php → motor que envía a Meta periódicamente.
  • Google Ads Conversions → integración paralela para Google (sync_google_conversions.php).

Tip: si la tasa de sync está por debajo de 80%, revisá los errores recientes — suelen ser emails / teléfonos mal hasheados o un access token vencido. Renová el token desde el Business Manager de Meta.

Oportunidades: caída de ventas

Compara las ventas del mes analizado con el mes anterior y con el mismo mes del año pasado, y lista las marcas y segmentos de producto que más cayeron.

Columnas

  • Caída y Impacto ARS: cuánto se dejó de vender.
  • MoM (contra el mes anterior), YoY (contra el mismo mes del año anterior) y Tendencia.
  • Participación: peso de esa marca o segmento en el total.
  • Motivo: explicación probable de la caída.

Acciones

  • Crear cupón o crear difusión dirigida a los clientes que compraban ese producto.
  • Plantilla email (IA) y Plantilla WhatsApp (IA): la IA propone el mensaje. Si ya tenés una plantilla que sirve, te la sugiere.
Los datos se calculan todas las noches. Requiere que la campaña tenga habilitado el análisis con IA.

Chat con IA

El chat permite consultar los datos de la campaña escribiendo preguntas como lo harías con una persona. La IA busca la información en los informes del sistema y responde con texto, tablas o gráficos.

Ejemplos de preguntas

  • ¿Cuánto vendimos el mes pasado comparado con el anterior?
  • ¿Cuáles son las 10 marcas que más crecieron este año?
  • ¿Qué comercio tuvo más altas de clientes en octubre?
  • ¿Cómo les fue a las difusiones de WhatsApp de la última semana?

Consejos

  • Indicá el período (mes, semana, fechas) para respuestas precisas. Las fechas relativas, como ayer o el mes pasado, se interpretan con la fecha actual.
  • Podés pedir el resultado como gráfico o tabla.
  • Imprimir y Compartir exportan la conversación completa.
La IA sólo ve los datos de la campaña en la que estás. Requiere que la campaña tenga la IA habilitada.

Portal de clientes

Guía: configurar el portal de clientes

El portal es el sitio donde cada cliente entra con su DNI para ver sus puntos, canjear premios, recibir cupones y, si está habilitado, comprar en la tienda.

1. Datos generales

En Configuración del portal definí la dirección (por ejemplo, tufarmacia.wibi.com.ar), el nombre, el logo y qué módulos se muestran: puntos, canje, cupones, suscripciones o tienda.

2. Diseño

Abrí el editor visual:

  • Apariencia: color de marca y logo.
  • Secciones: carrusel con imágenes, productos destacados, ofertas y bloques de texto.
  • Barra: mensajes como Envío gratis desde $50.000.
  • Páginas: sucursales, preguntas frecuentes, cómo sumar puntos.

3. Tienda (opcional)

  1. Creá las categorías de la tienda.
  2. Completá los datos de tienda de cada producto y marcalos como Disponible para pedidos.
  3. Configurá los medios de pago (Mercado Pago o Mobbex) y las formas de entrega.
  4. Seguí los pedidos en Pedidos del portal.

4. Premios

Cargá los premios por puntos: es lo que más motiva a los clientes a entrar.

5. Publicar y difundir

  • Revisá la vista en Celular (la mayoría entra desde el teléfono) y tocá Publicar.
  • Comunicá la dirección del portal por WhatsApp, en el ticket y en el local.

Configuración del portal de clientes

Configuración general del portal de clientes de la campaña: identidad (marca, logos, favicon), apariencia (tema, header, botones), SEO, términos y URL de registro. El portal es multitenant y se accede por subdominio ([key].wibi.com.ar) o por path (/p/[key]/). Cada campaña tiene un único registro de configuración.

Punto único de verdad: los datos cargados acá se aplican en el portal en tiempo real, sin redeploy. Cambiar el tema, el logo o el WhatsApp impacta de inmediato a todos los visitantes del portal.

Identidad

  • Nombre del portal y subtítulo.
  • Key del portal: tag único usado en la URL.
  • WhatsApp de contacto que se muestra en el portal.
  • Logo y favicon (subida vía Dropzone, hasta 4 MB).

Apariencia

  • Tema de color: 7 colores predefinidos (azul, verde, púrpura, rojo, amarillo, celeste, naranja).
  • Estilo de header: normal, alternativo o superpuesto.
  • Posición del menú: centrado, izquierda, derecha.
  • Fondo del header: blanco, oscuro, tema o transparente.
  • Estilo de botones: relleno, contorno o redondeado.
  • Preview en vivo: el editor muestra el resultado en tiempo real al cambiar las opciones.

SEO y legales

  • Meta título, descripción y keywords.
  • Términos y condiciones editables.
  • Comercio por defecto en formularios de alta.

Asistente de URL de registro

Genera URLs prefabricadas para campañas de captación que incluyen grupo de interés y comercio predeterminados como parámetros GET. Útil para Ads y QR físicos en sucursales.

Acciones

  • Guardar configuración (único registro por campaña).
  • Subir / cambiar logo y favicon.
  • Generar y copiar URLs de registro.
  • Vista previa del portal en una pestaña nueva.

Circuitos asociados

  • Portal — Hooks y módulos → qué módulos se muestran en cada zona del portal.
  • Portal — Contenido → bloques HTML editables.
  • Portal — Carrusel → slides del portal.
  • Plantillas de email → algunas plantillas se usan en flujos del portal (recuperar password, validación).
  • Configuración multitenant → tabla portalclientesconfig y imagenes.

Tip: probá el portal en mobile antes de dar por terminada la configuración. El header alternativo y el menú lateral se comportan muy diferente que en desktop.

Editor visual del portal

El editor permite cambiar el portal de clientes viendo el resultado en vivo, en vista Escritorio o Celular. Los cambios se guardan como borrador y recién se ven en el portal cuando tocás Publicar.

Pestañas

  • Secciones: agregá, ordená (arrastrando), ocultá o quitá las secciones de cada zona: carrusel, productos destacados, ofertas, bloques de texto, imágenes, etc.
  • Apariencia: color de marca, logo, tema y fondo.
  • Textos y SEO: título y descripción para Google, y los términos y condiciones.
  • Barra: leyendas de la barra superior (por ejemplo, Envío gratis desde $50.000).
  • Menú: menú automático (Tienda y sus categorías) o configurable, con links propios y desplegables.
  • Páginas: páginas estáticas como Sucursales, Preguntas frecuentes o Nuestra misión.

Publicar y versiones

  • Publicar hace visibles los cambios para los clientes.
  • Descartar cambios vuelve a lo que está publicado.
  • Versiones muestra las publicaciones anteriores y permite restaurar una.
  • Si otra persona publicó mientras editabas, el editor te avisa para no pisar sus cambios.
Usá imágenes livianas (menos de 1 MB) y cargá una versión para celular cuando la imagen tenga texto. Al subir una imagen, confirmá que el cliente tiene derecho a usarla.

Barra superior del portal

La barra superior muestra mensajes cortos que van rotando en la parte de arriba del portal.

Configuración

  • Agregar leyenda: texto corto (por ejemplo, ENVÍO GRATIS DESDE $50.000) y, si querés, un link.
  • Ordená las leyendas con las flechas o quitá las que ya no apliquen.
  • Segundos entre leyendas: cada cuánto cambia el mensaje.
  • Saludo: con la sesión iniciada, muestra primero “Hola, {nombre del cliente}”.

La vista previa muestra cómo va a quedar. Al guardar, el cambio se ve en el portal en pocos minutos.

Pedidos del portal (e-commerce)

Lista los pedidos que los clientes hacen en la tienda del portal. Desde acá se gestiona cada pedido hasta que se entrega.

Filtros

  • Fecha del pedido, estado, pago (pendiente, pagado, rechazado), comercio y número de pedido.

Acciones sobre un pedido

  • Ver detalle: productos, cantidades, totales, forma de pago y datos de entrega.
  • Cambiar estado (por ejemplo, en preparación, listo para retirar, entregado) con una nota opcional.
  • Contactar al cliente por WhatsApp o email usando una plantilla, incluyendo el link de pago si todavía no pagó.
  • Copiar el link de pago para enviarlo por otro medio.
Si el comercio usa Plex, la columna Plex indica si el pedido se envió correctamente al sistema de gestión.

Categorías de la tienda

Las categorías ordenan los productos en la tienda del portal y arman el menú de la tienda.

Crear una categoría

  1. Tocá Nueva categoría.
  2. Completá el nombre y, si querés, una descripción.
  3. El slug es la parte de la dirección web (por ejemplo, dermocosmetica). Si lo dejás vacío se arma con el nombre.
  4. Para una subcategoría, elegí la categoría padre.
  5. Definí la posición (orden en el menú) y subí una imagen.
Una categoría no se puede eliminar si tiene subcategorías o productos asignados. Los productos se asignan a categorías desde Datos de tienda de cada producto o con la importación por Excel.

Datos de tienda de un producto

Acá se completa la información que el cliente ve del producto en la tienda del portal.

Pestañas

  • Datos tienda: descripción corta y larga, precio de oferta con fechas de validez, orden, peso y unidad de medida. Marcá Producto destacado para mostrarlo en la portada y Disponible para pedidos para que se pueda comprar.
  • SEO: título, descripción y palabras clave para buscadores.
  • Imágenes: subí varias y marcá la principal.
  • Categorías: en qué categorías de la tienda aparece.
  • Stock por sucursal: stock y stock mínimo de cada comercio.
Sólo los productos marcados como Disponible para pedidos se muestran en la tienda y el carrito. Si el catálogo se sincroniza con Zetti o Tiendanube, algunos de estos datos se actualizan solos.

Contenido del portal

Listado de contenidos HTML editables del portal: páginas legales, secciones de novedades, beneficios, preguntas frecuentes, descripciones de programa. Cada contenido se vincula a un hook y a un comercio, y se edita con editor visual (Summernote) con soporte de imágenes inline.

Diferencia con módulos: los módulos son piezas funcionales reutilizables (login, carrusel, listado). Los contenidos son texto + imágenes particulares de la campaña, editados por marketing sin asistencia técnica.

Filtros

  • Búsqueda libre en título o descripción.

Columnas

  • Título.
  • Descripción interna.
  • Hook al que se asigna.
  • Comercio.
  • Estado activo / inactivo.

Acciones

  • Nuevo contenido: abre portal_contenido_edit.php con el editor Summernote.
  • Editar.
  • Eliminar (con confirmación SweetAlert2).
  • Activar / desactivar.
  • Subir imágenes inline al cuerpo (portal_contenido_img_upload.php).

Editor

  • Summernote con barra completa: formato, color, listas, tablas, link, imagen, vista de código y pantalla completa.
  • Imágenes guardadas en uploads/portalcontenido/.
  • Vista previa con render real antes de publicar.

Circuitos asociados

  • Portal — Hooks y módulos → asocia el contenido a un hook visible en el portal.
  • Configuración del portal → tema y estilos sobre los que se renderiza el contenido.

Tip: mantené un contenido por idea, no juntes 10 secciones en una sola página HTML. Es más fácil rotar o desactivar comunicaciones específicas si están separadas.

Carrusel del portal

Slides (carrusel / slider) del portal asociados a un hook específico. Cada slide tiene una imagen principal, una versión móvil opcional, contenido HTML y un orden de aparición. Soporta múltiples carruseles en distintas zonas del portal (landing hero, home post-login, sección de novedades).

Impacto multi-comercio: los slides aplican a todos los comercios de la campaña. La pantalla avisa cuántos se afectan antes de confirmar cualquier cambio.

Filtros

  • Hook (obligatorio): selecciona qué carrusel editar.

Columnas

  • Posición en el carrusel.
  • Miniatura de la imagen principal.
  • HTML asociado al slide (snippet truncado).
  • Estado activo / inactivo.

Campos del slide

  • Imagen principal (PNG / JPG / GIF / WEBP).
  • Imagen mobile (opcional, distinta proporción para celulares).
  • HTML superpuesto (título, llamado a la acción, link) editado con Summernote.
  • Posición.
  • Estado activo / inactivo.

Acciones

  • Nuevo slide.
  • Editar / eliminar.
  • Reordenar (subir / bajar por posición).
  • Activar / desactivar.
  • Subir imágenes (drag & drop con preview).

Almacenamiento

Las imágenes se guardan en uploads/portalcarrusel/. Los slides se guardan en portalcarrusel_items, vinculados al hook elegido.

Circuitos asociados

  • Portal — Hooks y módulos → el carrusel se inserta en el portal vía un módulo carrusel asignado al hook.
  • Configuración del portal → tema y estilo que envuelve los slides.

Tip: usá imágenes ya optimizadas (< 200 KB cada una) y siempre dos versiones: desktop landscape y mobile portrait. Los carruseles con imágenes pesadas matan el LCP del portal en celular.

Hooks y módulos del portal

Asignación de módulos a hooks (puntos de inserción) del portal. Los hooks son zonas predefinidas del layout (header, home, sidebar, footer, landing); los módulos son piezas funcionales (carrusel, productos, novedades, login, módulo de contenido HTML libre). Esta pantalla controla qué módulo se muestra en qué hook, en qué orden y si requiere login.

Impacto multi-comercio: los cambios en hooks y módulos aplican a todos los comercios de la campaña. La pantalla avisa cuántos comercios resultan afectados antes de confirmar.

Datos visibles

  • Hook → módulo asignado.
  • Archivo de la vista del módulo (referencia técnica).
  • Posición dentro del hook (orden de renderizado).
  • Sin logueo: N = público (visible sin sesión); S = requiere login.
  • Estado activo / inactivo.

Hooks típicos

  • displayLandingHero — banner principal de la landing pública.
  • displayHome — home del portal (post-login).
  • displayHeader / displayFooter — barras superior e inferior.
  • displaySidebar — columna lateral.
  • displayBeforeContent / displayAfterContent — antes y después del contenido principal.

Acciones

  • Agregar módulo a un hook (modal con selector).
  • Reordenar (subir / bajar la posición; swap inline).
  • Activar / desactivar.
  • Cambiar visibilidad: público / requiere login (portalmodulo_requiere_login_save.php).
  • Editar HTML de los módulos tipo contenido (editor Summernote in-line).
  • Eliminar asignación (con aviso de multi-comercio).

Módulos comunes

  • Carrusel de imágenes.
  • Bloque de contenido HTML libre (editable inline).
  • Listado de productos / categorías.
  • Tarjeta del cliente (puntos, beneficios).
  • Movimientos recientes.
  • Validación de email / WhatsApp.

Circuitos asociados

  • Portal — Carrusel → contenido de los módulos tipo carrusel.
  • Portal — Contenido → bloques HTML editables.
  • Portal — Configuración general → temas y apariencia que envuelven los módulos.

Tip: dejá siempre activo al menos un módulo en displayHome; si lo desactivás todo, la home queda en blanco para todos los comercios.

Integraciones

Guía: conectar las ventas del sistema de facturación

Para que los clientes sumen puntos, cada venta tiene que llegar a WIBI con el cliente identificado (DNI o tarjeta). Hay tres formas de hacerlo.

Opción 1: API del sistema de facturación

El sistema de facturación envía cada venta en el momento. Es la opción recomendada, porque el cliente ve sus puntos al instante.

  • Necesita una api-key de WIBI y el usuario y la clave de cada comercio.
  • Documentación técnica en Desarrolladores.
  • Para Zetti / T&S, WIBI trae las ventas solo: ver Zetti por API.

Opción 2: archivo

El sistema genera un archivo CSV (formato Zetti) y lo envía a WIBI, por ejemplo una vez por día. Ver Zetti por archivo.

Opción 3: carga manual

El cajero carga cada compra en WIBI. Sirve para comercios sin sistema integrado. Ver Registrar una venta.

Verificar que funciona

  1. Hacé una venta de prueba con un cliente registrado.
  2. Buscala en Movimientos: tiene que aparecer con el comercio, el comprobante y los puntos.
  3. Revisá que los productos lleguen con su código: así funcionan las promociones por producto y los informes por marca.

Devoluciones

Las notas de crédito tienen que enviarse indicando el comprobante original. Así WIBI descuenta los puntos ganados en esa compra y devuelve los que el cliente había usado.

Integración por archivo (CSV Zetti)

El sistema de facturación del cliente envía a WIBI un archivo CSV con las ventas, devoluciones y anulaciones del período. WIBI lo procesa en segundo plano: identifica o da de alta al cliente, calcula los puntos con las reglas de la campaña y registra el movimiento en la sucursal que corresponde.

Para quién es: cualquier punto de venta que pueda generar un archivo de texto y hacer un POST HTTP. No hace falta que el sistema del cliente exponga una API: el cliente empuja el archivo a WIBI (por ejemplo, una tarea programada cada hora o al cierre de caja).

1. Conexión

URLhttps://apiv2.wibi.com.ar/onzecrm/integraciones/zetti/upload
MétodoPOST, multipart/form-data
Campo fileEl archivo (.csv o .txt, tipo text/csv o text/plain). Máximo 10 MB y 50.000 filas.
Campo pUserUsuario del comercio en WIBI (el mismo de la integración del punto de venta).
Campo pPassClave del comercio en WIBI.
Límite30 envíos por minuto.
ProcesamientoAsincrónico: la respuesta confirma la recepción; el archivo se procesa en el minuto siguiente. El resultado se ve en Parámetros > Zetti > Ver panel de uploads.

Respuesta

Siempre HTTP 200 con un JSON. El campo error indica el resultado:

errorSignificado
"0"Archivo recibido. data trae nombre, ruta y fecha de recepción.
"01"Usuario o clave incorrecta.
"02"Falta el archivo, extensión o tipo no permitido, o excede el tamaño.
"03"Error al guardar el archivo (reintentar).
{"error":"0","data":{"id":0,"name":"ventas_20261021.csv","path":"zetti/5b0c...csv","id_user":14253,
 "id_file_version":1,"date_add":"/Date(1792607400000)/","date_process":"/Date(-2208988800000)/",
 "process":false,"process_error":false,"process_log":""}}

2. Formato del archivo

  • Texto UTF-8, una línea por renglón de producto.
  • Separador coma (,). Los textos que contengan comas van entre comillas dobles.
  • Sin fila de encabezado y con 31 columnas en el orden de la tabla (aunque estén vacías). La columna 32 (NroTarjeta) es obligatoria sólo en campañas con tarjeta física; en campañas con tarjeta virtual los archivos de Zetti, de 31 columnas, se procesan igual.
  • Una venta con varios productos ocupa varias líneas con el mismo IdTransaccion; los datos de cabecera y del cliente se toman de la primera.
  • Fechas: dd/mm/aaaa, dd/mm/aaaa hh:mm:ss, aaaa-mm-dd o aaaa-mm-dd hh:mm:ss.
  • Decimales con punto (1250.50) o con coma (1250,50). Si hay miles con punto y decimales con coma (1.250,50) también se interpreta bien.

Columnas

#CampoOblig.Descripción
1IdTransaccionSíNúmero entero positivo, único por comprobante. Agrupa los renglones de la venta y evita duplicados si el archivo se reenvía.
2FechaTransaccionRecom.Fecha (y hora) de la venta. Si viene vacía se toma la fecha de proceso.
3AnuladaNoT, SI, TRUE o 1 = el comprobante es una anulación.
4TipoOperacionRecom.Texto libre. Se reconoce: "anulación" (anula), "devolución" / "nota de crédito" (devuelve puntos), "puntos por alta" / "redención de puntos" (eventos sin productos, se omiten). Cualquier otro valor es venta.
5IdTransaccionAnuladaCond.Obligatorio en anulaciones y devoluciones: IdTransaccion de la venta original.
6NombreSucursalSíNombre de la sucursal. Debe estar en el mapa de sucursales (ver configuración). Sin mapear, la venta queda con error.
7NombreVendedorNoSe guarda como operador del movimiento.
8NombrePromocionNoInformativo, no se procesa.
9NombreProductoRecom.Descripción. Se usa para dar de alta el producto la primera vez.
10CodigoBarraSíIdentifica el producto (EAN/UPC). Sólo dígitos: un renglón sin código numérico se descarta.
11CategoriaNoRubro del producto; se crea como clasificador para promociones e informes.
12MarcaNoInformativo (no se guarda).
13CantidadSíMayor a 0. En devoluciones puede venir negativa (se toma el valor absoluto).
14PrecioVentaSíPrecio unitario con impuestos.
15MontoDescuentoNoDescuento por unidad; se resta del precio unitario.
16PorcentajeDescuentoNoInformativo.
17PuntosNoInformativo. Los puntos los calcula WIBI con las reglas de la campaña.
18PuntosVendedorNoInformativo.
19NombreCanjeNoInformativo.
20NombreClienteRecom.Nombre (para el alta del cliente).
21ApellidoClienteRecom.Apellido.
22FechaNacimientoNoMismos formatos de fecha.
23SexoNoM / F (también masculino, femenino).
24NumeroDocumentoCond.Documento: se toman sólo los dígitos, hasta 10. Obligatorio para dar de alta un cliente nuevo (todo cliente WIBI tiene documento). Sin NroTarjeta identifica al cliente y es su número de tarjeta en WIBI. Con tarjeta física puede omitirse si el cliente ya existe con esa tarjeta; si la tarjeta no tiene cliente y no hay documento, la venta queda con error.
25EmailRecom.Para comunicaciones.
26TelefonoRecom.Para WhatsApp y recordatorios.
27ProvinciaNoDomicilio.
28LocalidadNoDomicilio.
29CalleNoDomicilio.
30NumeroNoDomicilio.
31CodigoPostalNoDomicilio.
32NroTarjetaCond.Tarjeta física del programa (sólo dígitos, hasta 45; se ignoran espacios y guiones). Obligatorio si la campaña usa tarjeta física (sin él la venta se omite); opcional con tarjeta virtual. Si viene, identifica al cliente: se busca por tarjeta y, si no existe, por documento (y se le asigna la tarjeta); un cliente nuevo se da de alta con esa tarjeta. Con letras, la venta se omite.

Recom. = recomendado (sin él la venta se procesa igual, pero con menos datos). Cond. = obligatorio sólo en ese caso.

Ejemplo

Una venta de dos productos y la anulación de una venta anterior:

1001,21/10/2026 10:15:00,F,Venta,,Sucursal Centro,Juan Pérez,,Ibuprofeno 400 mg x 20,7790001000012,Medicamentos,Genfar,1,3500.00,0,0,0,0,,Ana,Gómez,15/03/1985,F,30123456,ana@mail.com,5491155550000,Buenos Aires,CABA,Corrientes,1234,1043
1001,21/10/2026 10:15:00,F,Venta,,Sucursal Centro,Juan Pérez,,Protector solar FPS 50 200 ml,7790002000029,Dermocosmética,Isdin,2,12000.00,600.00,5,0,0,,Ana,Gómez,15/03/1985,F,30123456,ana@mail.com,5491155550000,Buenos Aires,CABA,Corrientes,1234,1043
1002,21/10/2026 11:40:00,T,Anulación,987,Sucursal Centro,Juan Pérez,,,,,,0,0,0,0,0,0,,Ana,Gómez,,F,30123456,,,,,,,

3. Configuración en WIBI

En Parámetros > Zetti de la campaña:

  • Comercio de autenticación: el comercio cuyas credenciales (pUser/pPass) envían el archivo.
  • Mapa de sucursales: cada NombreSucursal del CSV (sin distinguir mayúsculas) con su comercio WIBI. Mapear a 0 excluye esa sucursal a propósito (sus ventas se omiten sin error).
  • Categoría de cliente por defecto: la que reciben los clientes nuevos.

4. Reglas de proceso

  • Reenvíos: cada IdTransaccion se procesa una sola vez; reenviar el mismo archivo no duplica puntos.
  • Clientes: si el documento no existe en la campaña, se da de alta con los datos del archivo.
  • Productos: si el código de barras no existe en la red, se da de alta.
  • Anulación: revierte los puntos de la venta original (debe haberse enviado antes).
  • Devolución: descuenta los puntos proporcionales al importe devuelto.

5. Ejemplos de envío

cURL

curl -X POST "https://apiv2.wibi.com.ar/onzecrm/integraciones/zetti/upload" \
  -F "pUser=USUARIO_COMERCIO" \
  -F "pPass=CLAVE_COMERCIO" \
  -F "file=@ventas_20261021.csv;type=text/csv"

PHP

$ch = curl_init('https://apiv2.wibi.com.ar/onzecrm/integraciones/zetti/upload');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POSTFIELDS => [
        'pUser' => 'USUARIO_COMERCIO',
        'pPass' => 'CLAVE_COMERCIO',
        'file'  => new CURLFile('ventas_20261021.csv', 'text/csv'),
    ],
]);
$resp = json_decode(curl_exec($ch), true);
if (($resp['error'] ?? '') !== '0') {
    // reintentar más tarde; registrar $resp['mensaje'] ?? $resp['message']
}

Python

import requests

with open("ventas_20261021.csv", "rb") as f:
    r = requests.post(
        "https://apiv2.wibi.com.ar/onzecrm/integraciones/zetti/upload",
        data={"pUser": "USUARIO_COMERCIO", "pPass": "CLAVE_COMERCIO"},
        files={"file": ("ventas_20261021.csv", f, "text/csv")},
        timeout=60,
    )
resp = r.json()
if resp.get("error") != "0":
    raise RuntimeError(resp.get("mensaje") or resp.get("message"))

C# (.NET)

using var http = new HttpClient();
using var form = new MultipartFormDataContent();
form.Add(new StringContent("USUARIO_COMERCIO"), "pUser");
form.Add(new StringContent("CLAVE_COMERCIO"), "pPass");
var file = new ByteArrayContent(File.ReadAllBytes("ventas_20261021.csv"));
file.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
form.Add(file, "file", "ventas_20261021.csv");
var resp = await http.PostAsync("https://apiv2.wibi.com.ar/onzecrm/integraciones/zetti/upload", form);
var json = await resp.Content.ReadAsStringAsync();   // {"error":"0",...}

6. Clientes fuera de Argentina

  • Documento: se conservan sólo los dígitos (hasta 10). Identificadores alfanuméricos como CURP o RFC (México) no sirven: quedarían reducidos a los dígitos de la fecha y se mezclarían clientes. Con tarjeta física, enviarla en la columna 32 (NroTarjeta) y en NumeroDocumento un número propio del cliente (por ejemplo, el celular a 10 dígitos), necesario para el alta de clientes nuevos.
  • Códigos de producto: sólo numéricos. Si el sistema usa SKU alfanuméricos, enviar el código de barras EAN/UPC.
  • Moneda e impuestos: los importes se toman tal cual llegan; la equivalencia de puntos se define en la campaña.

Integración por API (Zetti / T&S)

En esta integración WIBI consulta periódicamente la API del sistema de facturación (Zetti, de T&S) y trae los comprobantes nuevos o modificados. A diferencia del archivo CSV, el cliente no envía nada: su sistema tiene que exponer una API con los endpoints y el formato JSON que se describen acá.

Sistemas que no son Zetti: para conectarse por esta vía hay que implementar los mismos endpoints y respuestas que la API de T&S (autenticación OAuth2, búsqueda y detalle de comprobantes, clientes). Si el sistema sólo puede exportar archivos, la integración por archivo CSV es más simple.

1. Cómo consulta WIBI

  • Cada pocos minutos busca los comprobantes emitidos desde la última consulta, y además los modificados (anulaciones posteriores).
  • Pide el detalle de cada comprobante nuevo y, si trae cliente, su ficha (teléfonos y domicilio).
  • Cada comprobante se procesa una sola vez (se identifica por su id); las anulaciones posteriores revierten los puntos.

2. Autenticación (OAuth2, password grant)

POST {URL OAuth}/oauth/token
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=password&username=USUARIO&password=CLAVE

Respuesta esperada:

{"access_token":"eyJ...","refresh_token":"eyJ...","token_type":"bearer","expires_in":3600}

WIBI renueva con grant_type=refresh_token&refresh_token=... y, si falla, vuelve a pedir con usuario y clave. Todas las demás llamadas llevan Authorization: Bearer {access_token}.

3. Endpoints que tiene que exponer el sistema

EndpointOblig.Uso
POST {URL API}/v2/{nodeId}/sales-receipts/searchSíLista paginada de comprobantes por fecha.
GET {URL API}/v2/{nodeId}/sales-receipts/{id}SíDetalle de un comprobante con sus renglones.
GET {URL API}/v2/{nodeId}/customers/{id}Recom.Ficha del cliente (teléfonos, domicilio).
POST {URL API}/{nodeId}/products/groups-searchNoRubros/grupos de producto para clasificar.
GET {URL API}/aboutNoPrueba de conexión (sin autenticación).

{nodeId} es el identificador del nodo o empresa que se consulta (se configura en WIBI).

3.1 Búsqueda de comprobantes

POST /v2/{nodeId}/sales-receipts/search?page=1&per_page=50&include_items=true&include_completed=true
     &order_field=fechaEmision&ascending_order=true
Content-Type: application/json

{"emissionDateFrom":"2026-10-21T00:00:00.000-0600","emissionDateTo":"2026-10-21T23:59:59.000-0600"}

Para traer cambios posteriores WIBI usa el mismo endpoint con actualizationDateFrom / actualizationDateTo. La respuesta puede ser una lista o una página: {"content":[...], "last":true, "totalPages":1}. Cada elemento necesita al menos id, emissionDate, el tipo de comprobante y el estado.

3.2 Detalle del comprobante

Campo JSONOblig.Descripción
idSíIdentificador único del comprobante.
emissionDateSíFecha y hora ISO 8601 con zona (2026-10-21T10:15:00.000-0600).
codification / receiptNumberRecom.Número visible del comprobante.
valueType {id, name}SíTipo de comprobante. Si el nombre indica nota de crédito se trata como devolución.
status {name, description}Recom.TEMP / Temporal = no suma puntos hasta confirmarse. Un estado que contenga ANUL = anulado.
cancelledCond.true si el comprobante está anulado.
cancelledSaleIdCond.En anulaciones: id del comprobante anulado.
sourceVoucherIdCond.En notas de crédito: id de la venta original.
creationNode {id, name}SíSucursal que emitió. El id se asocia a un comercio WIBI en el mapa de sucursales.
totalRecom.Total del comprobante. Si no viene se suma desde los renglones.
creationUser {description}NoVendedor.
customerSíVer tabla de cliente. Sin documento la venta se omite.
items[]SíVer tabla de renglones.

Renglones (items[])

Campo JSONOblig.Descripción
barcode o product.barCodeSíCódigo de barras (sólo dígitos).
productId o product.idRecom.Id interno del producto.
name o product.nameRecom.Descripción.
quantitySíMayor a 0 (en notas de crédito se toma el valor absoluto).
unitPriceSíPrecio unitario con impuestos.
discountAmountNoDescuento por unidad.
categoryNoRubro del producto.

Cliente (customer)

Campo JSONOblig.Descripción
idRecom.Para pedir la ficha completa (/customers/{id}).
documentNumberSíIdentificador del cliente. Se toman sólo los dígitos, hasta 10.
firstName, lastNameRecom.Nombre y apellido (o name completo).
emailRecom.Email.
phones[] / phoneRecom.Teléfonos (areaCode + number); se prefiere el celular.
birthDate, genderNoFecha de nacimiento (ISO) y sexo.
address {street, number, city, province, postalCode}NoDomicilio.

Ejemplo de detalle

{
  "id": 554321,
  "codification": "B-0003-00012345",
  "emissionDate": "2026-10-21T10:15:00.000-0600",
  "valueType": {"id": 197, "name": "FACTURA B"},
  "status": {"name": "INGRESADO"},
  "cancelled": false,
  "creationNode": {"id": 2101, "name": "Sucursal Centro"},
  "creationUser": {"description": "Juan Pérez"},
  "total": 26400.00,
  "customer": {
    "id": 8812, "documentNumber": "5512345678",
    "firstName": "Ana", "lastName": "Gómez", "email": "ana@mail.com",
    "phones": [{"type": "CELULAR", "areaCode": "55", "number": "12345678"}]
  },
  "items": [
    {"productId": 9001, "barcode": "7501000000012", "name": "Ibuprofeno 400 mg x 20",
     "quantity": 1, "unitPrice": 3500.00, "discountAmount": 0},
    {"productId": 9002, "barcode": "7501000000029", "name": "Protector solar FPS 50",
     "quantity": 2, "unitPrice": 12000.00, "discountAmount": 600.00}
  ]
}

4. Configuración en WIBI

En Parámetros > Zetti > Integración Zetti API:

  • URL de la API y URL OAuth, client_id / client_secret, usuario y clave de la API.
  • Node ID que se consulta.
  • Mapa de sucursales: cada creationNode.id con su comercio WIBI (0 = sucursal excluida).

El botón Ver panel API muestra cada consulta, cuántos comprobantes trajo y los que quedaron con error.

5. Clientes fuera de Argentina

Las mismas restricciones que el CSV: el documento se reduce a dígitos (hasta 10), así que en México conviene usar el celular a 10 dígitos o un número de tarjeta en lugar de CURP/RFC; y el código de barras tiene que ser numérico.

Sincronizar precios y stock con Zetti

Actualiza el precio y el stock de los productos de la tienda con lo que informa Zetti.

Cómo se usa

  1. Tocá Simular: calcula qué cambiaría, sin grabar nada.
  2. Si el resultado es correcto, tocá Iniciar sincronización.
Sólo se actualizan los productos marcados como Disponible para pedidos. Si no hay ninguno, la sincronización no cambia nada: marcalos desde la importación de tienda o desde Datos de tienda de cada producto.
Requiere tener activa la integración por API de Zetti en la campaña.

Sincronizar catálogo Plex Onze

Trae el catálogo de productos del sistema de gestión Plex Onze para que WIBI tenga los mismos productos, códigos y precios.

Cómo se usa

  1. Tocá Iniciar sincronización.
  2. Esperá el resumen final: productos creados, actualizados y con error.
La integración se habilita por campaña. Si ves el aviso “La integración con Plex Onze no está activa”, pedila al equipo de WIBI.

Integración con Tiendanube

Conecta el catálogo de la tienda Tiendanube del cliente con los productos de WIBI.

Acciones

  • Bajar catálogo: trae de Tiendanube la descripción, el SEO y las imágenes de los productos vinculados. Tiendanube es la fuente de esos datos. No crea productos nuevos ni en Tiendanube ni en WIBI.
  • Subir precio y stock: actualiza en Tiendanube el precio y el stock que tiene WIBI.
La integración se habilita por campaña. Si ves el aviso “La integración con Tiendanube no está activa”, pedila al equipo de WIBI.

Integración emBlue

Configuración de la integración con emBlue, plataforma externa de envío masivo de Email y SMS. La campaña delega en emBlue la entrega de comunicaciones masivas, mientras el CRM mantiene la base de clientes, audiencias y eventos.

Cuándo usar emBlue: cuando ya tenés contratada la plataforma y querés aprovechar su deliverability, reportería y compliance. El CRM provee los datos del cliente; emBlue se encarga del envío y métricas finas.

Filtros

  • Nombre de la configuración emBlue (cuando hay más de una cuenta).

Campos del formulario

  • Nombre interno de la cuenta.
  • API Key y API Secret (provistos por emBlue en la administración de la cuenta).
  • URL del webhook entrante (eventos que emBlue notifica al CRM: aperturas, clics, rebotes).
  • Mapeo de listas y plantillas.
  • Estado activo / inactivo.

Acciones

  • Alta / edición (modal).
  • Probar conexión con las credenciales cargadas.
  • Sincronizar listas y plantillas desde emBlue.
  • Activar / desactivar la integración.

Almacenamiento

Las credenciales se guardan en la tabla parametros con prefijo EMBLUE_* (puede editarse también desde Parámetros). La sincronización corre por cron diario; los eventos entrantes se reciben en tiempo real vía webhook.

Circuitos asociados

  • Difusión por suscripción (tipos de alerta) → emBlue puede ser canal de envío.
  • Plantillas de email → algunas pueden estar gestionadas en emBlue y sincronizadas acá.
  • Análisis / Etiquetas → audiencias que se publican como listas de emBlue.
  • Parámetros → almacén físico de las credenciales.

Tip: después de cargar credenciales, ejecutá siempre la prueba de conexión. Tokens mal copiados (con espacios al final) generan fallos silenciosos en el cron y no se ve hasta que faltan envíos.

Sincronización XELION

Configuración de la sincronización con Xelion, sistema externo de gestión que aporta datos adicionales del cliente (típicamente afiliados de obra social, padrones, beneficiarios). El CRM consume archivos vía FTP, los procesa y vuelca los registros en el grupo de interés destino.

Flujo de datos: Xelion publica el archivo en su FTP → el CRM descarga (manual o por cron) → parsea los registros → los asigna al grupo de interés configurado → los marca con el código de obra social.

Campos

  • Grupo de interés destino: a qué grupo se asignan los clientes importados.
  • Código de obra social (valor por defecto: 46).
  • FTP Host, usuario FTP y contraseña FTP.
  • Última sincronización: timestamp del último download exitoso.

Acciones

  • Editar credenciales y grupo destino.
  • Descarga manual de datos (xelion_download.php).
  • Habilitar la descarga automática por cron xelion_sync_cron.php.

Almacenamiento

La configuración se guarda en el campo config de la tabla campanias (formato clave=valor por línea). Esto permite múltiples sincronizaciones por campaña sin alterar el esquema.

Circuitos asociados

  • Grupos de interés → destino de los clientes sincronizados.
  • Clientes → resultado final del proceso.
  • Cron xelion_sync_cron.php → motor de descarga automática.
  • Campos personalizados → algunos atributos de Xelion (código de obra, plan) se mapean a campos personalizados del cliente.

Tip: después de cargar credenciales nuevas, hacé una descarga manual primero para validar acceso al FTP y formato del archivo. Recién después habilitá el cron, para evitar fallos silenciosos en producción.

Configuración

Mi perfil

Muestra tu usuario y te permite cargar tu email.

  • Cargá tu email y tocá Guardar email. Vas a recibir un mensaje para validarlo.
  • Si no te llegó, usá Reenviar email de validación (revisá también la carpeta de spam).
Con el email validado recibís las novedades de WIBI y podés recuperar tu contraseña sin pedir ayuda a soporte.

Usuarios

Administración de los usuarios del sistema con roles, permisos por grupo empresa y restricciones por comercios. La pantalla concentra el control de acceso: quién entra, qué grupo empresa ve, qué comercios opera y qué rol cumple (administrador u operador).

Seguridad: las contraseñas se almacenan cifradas con AES_ENCRYPT. Aun con acceso de administrador no podés consultar la contraseña en claro — sólo resetearla.

Filtros

  • Nombre de usuario.
  • Grupo empresa.
  • Rol: Administrador (S / N).

Columnas

  • Usuario (login) y nombre completo.
  • Rol Administrador (S = acceso total a configuración).
  • Grupo empresa al que pertenece.
  • Comercios habilitados (lista CSV en idcomercios; vacío = todos).
  • Estado activo / inactivo.

Acciones

  • Alta de usuario.
  • Editar rol, grupo empresa, comercios y datos personales.
  • Cambiar contraseña (modal aparte; requiere confirmación).
  • Cambiar de usuario (cambiar_usuario.php): cambio de contexto para superadmins.
  • Activar / desactivar.

Roles

  • Administrador (A): ve y modifica toda la configuración (parámetros, integraciones, usuarios).
  • Operador: opera campañas, clientes y movimientos. No accede a configuración crítica.

Circuitos asociados

  • Permisos (comun/permisos.php) → tiene_acceso(sección, opción, acción) controla cada vista.
  • Login → autenticación y carga de sesión crm_*.
  • Campañas → visibilidad filtrada por grupo empresa y comercios habilitados.

Tip: los usuarios operativos no deberían tener rol Administrador; usá ese rol sólo para personas que configuran integraciones, plantillas o flujos. Mantenelo limitado a 1-2 personas por campaña.

Grupos de usuario

Un grupo de usuario es un perfil de permisos. En lugar de configurar los permisos de cada persona, se definen grupos (por ejemplo Cajero, Marketing, Gerente) y se asigna un grupo a cada usuario.

Cómo se usa

  • Nuevo grupo: nombre, descripción, grupo empresa y si está activo.
  • Editar permisos: abre la grilla de permisos del grupo.
  • La columna Usuarios muestra cuántas personas tienen ese grupo.
Al cambiar los permisos de un grupo, el cambio aplica a todos sus usuarios la próxima vez que ingresan.

Permisos de un grupo

La grilla lista todas las opciones del menú en forma de árbol. Para cada una se marca qué puede hacer el grupo.

Columnas

  • Acceso: ver la opción en el menú y entrar.
  • Consultar, Insertar, Modificar, Eliminar e Imprimir: las acciones dentro de la pantalla.

Atajos

  • Hacé clic en una opción para expandir o contraer sus subopciones.
  • Shift + clic en un casillero propaga el cambio a todas las subopciones.
  • Marcar todo, Quitar todo, Expandir y Contraer trabajan sobre toda la grilla.

Al terminar, tocá Guardar cambios.

Comercios

Un comercio es cada local o sucursal donde los clientes compran y suman puntos. Los comercios pertenecen a una red de la campaña.

Cómo se usa

  • Elegí la red a visualizar. Si la campaña no tiene redes, primero creá una.
  • El listado muestra el código, el nombre, el usuario, la clave y la empresa de cada comercio.
  • Desde Acciones podés editarlo o desactivarlo.

Usuario y clave del comercio

Son las credenciales con las que el sistema de facturación del comercio (Zetti, Plex u otro) envía las ventas a WIBI. Cada comercio tiene las suyas.

Tratá la clave como una contraseña: no la compartas por canales abiertos. Si cambiás la clave, hay que actualizarla también en el sistema de facturación, o las ventas dejan de llegar.

Permisos del operador

Define qué tareas puede hacer un usuario operador (el perfil de mostrador) en esta campaña. Se configura una vez por campaña y aplica a todos sus operadores.

Opciones

  • Registrar clientes: tarjeta Nuevo cliente. Si se desactiva, el operador trabaja sólo con clientes ya registrados.
  • Registrar ventas: tarjeta Nuevo movimiento. Los puntos se calculan con las reglas de la campaña.
  • Canjear puntos: tarjeta Canje de puntos, para usar puntos como forma de pago.
  • Sumar puntos manualmente: acreditar puntos sin una venta. Es la opción con más riesgo y viene desactivada.
Los permisos se controlan también en el servidor: si una opción está desactivada, el operador no puede usarla aunque conozca la dirección de la pantalla.

Redes

Una red agrupa varios comercios bajo una misma marca, franquicia o convenio. Permite definir acciones de fidelización compartidas y reportes consolidados por red, además de gestionar permisos y promociones a nivel grupo en lugar de comercio por comercio.

Caso típico: una farmacia con 15 sucursales se modela como una red con 15 comercios. La promoción o el cupón aplica a toda la red, los puntos suman en cualquier sucursal, y el informe se ve agregado o desagregado según convenga.

Filtros

  • Descripción / nombre de la red.

Columnas

  • ID, nombre y descripción.
  • Cantidad de comercios asociados.
  • Estado activo / inactivo.

Acciones

  • Alta de red.
  • Editar / eliminar.
  • Asociar / desasociar comercios (selección múltiple).
  • Activar / desactivar.

Circuitos asociados

  • Promociones → la red define en qué comercios aplica la promo.
  • Informes de ventas → permiten filtrar y agregar por red.
  • Cupones → pueden limitarse a una red.
  • Administrar campañas (Superadmin) → el wizard de alta crea una red inicial.

Tip: la pantalla muestra sólo redes vinculadas a la campaña actual. Si una red no aparece, verificá la relación en la configuración de la campaña.

Categorías

Definición de los niveles del programa de fidelidad de la campaña (por ej. Bronce, Plata, Oro, Platino). Cada categoría puede tener umbrales de puntos, beneficios diferenciales y un cliente beneficiario o referente asociado (útil en programas con padrinos / referidos).

Cómo afecta a la operación: la categoría del cliente determina la cantidad de puntos que recibe por cada venta (configurable en Valor de puntos por categoría) y puede usarse como filtro en promociones, difusiones y análisis.

Filtros

  • Nombre / descripción.
  • ID del cliente beneficiario.

Columnas

  • Nombre y descripción.
  • Puntos mínimos para acceder a la categoría.
  • Beneficiario / referente asociado (opcional).
  • Estado activo / inactivo.

Acciones

  • Alta de categoría (modal).
  • Editar nombre, puntos mínimos, beneficiario.
  • Asignar beneficiario (selector de cliente).
  • Activar / desactivar.
  • Transferir clientes entre beneficiarios (categoria_trasferir_beneficiario.php).
  • Configurar valor de puntos por categoría (data_categoria_valorespuntos.php).

Circuitos asociados

  • Clientes → cada cliente tiene una categoría asignada.
  • Movimientos → la categoría determina cuántos puntos suma cada venta.
  • Promociones y Cupones → pueden segmentar por categoría.
  • Flujos → el trigger CAMBIO_CATEGORIA permite automatizar el ascenso de nivel.

Tip: no crees más de 4-5 categorías. Una jerarquía muy fragmentada complica la comunicación al cliente y no genera mayor sensación de logro al subir de nivel.

Parámetros

Almacén centralizado de parámetros generales y credenciales de integración de la campaña. Cada parámetro es un par clave / valor (con notas) organizado por tipo. Acá se cargan API Keys, secretos, URLs de webhook, identificadores de pixel, credenciales de Mobbex y configuraciones técnicas que los crons y módulos leen.

Atención: modificar parámetros de integración impacta inmediatamente en los crons que los consumen. Antes de cambiar tokens o secretos, asegurate de tener un fallback o ventana de mantenimiento.

Filtros

  • Tipo de parámetro: pestañas / agrupación por Webhook, emBlue, Google Ads, Meta, Mobbex, etc.
  • Búsqueda libre en clave o valor.

Columnas

  • Parámetro (clave técnica).
  • Valor.
  • Notas / descripción.

Grupos de parámetros típicos

  • Webhook: URLs entrantes y salientes para sincronización con sistemas externos.
  • emBlue: API key, secret, listas y plantillas.
  • Google Ads: customer ID, conversion ID, refresh token OAuth.
  • Meta: pixel ID, access token, evento configurado, prefijo de eventos personalizados.
  • Mobbex: API key y secret para cobranza online.
  • WhatsApp: costo unitario por mensaje (usado en ROAS), límite diario.

Acciones

  • Alta de parámetro.
  • Editar / eliminar.
  • Validación específica por tipo (URL bien formada, formato de clave esperada, etc.).

Circuitos asociados

  • Cron sync_meta_conversions.php → lee credenciales Meta acá.
  • Cron sync_google_conversions.php → lee credenciales Google Ads.
  • Flujos → los nodos HTTP toman URLs y tokens desde parámetros.
  • Integraciones emBlue / Xelion → cargan sus credenciales acá o en su pantalla dedicada.

Tip: usá el campo Notas para documentar de dónde sale cada credencial (Business Manager, Google Cloud Console, etc.) y la fecha en que se renovó. Los tokens vencen y nadie recuerda dónde regenerarlos.

Automatizaciones (Flujos)

Motor de automatización visual del CRM. Un flujo es una secuencia de pasos que se ejecuta cuando ocurre un evento del sistema (alta de cliente, movimiento, fecha programada, etc.). En cada paso podés evaluar condiciones, esperar tiempos, enviar WhatsApp / Email, llamar a un HTTP externo o actualizar datos del cliente.

¿Cuándo conviene un flujo en lugar de una difusión? Difusión = envío masivo de una sola comunicación, una sola vez. Flujo = recorrido del cliente con varios pasos en el tiempo (ej: bienvenida → 7 días → encuesta → cupón si no compró).

Filtros

  • Nombre del flujo.
  • Estado: activo / inactivo. Los flujos inactivos no se ejecutan aunque ocurra su trigger.

Columnas

  • Nombre y descripción.
  • Trigger (CodigoTrigger): evento que dispara el flujo. Los más comunes:
    • ALTA_CLIENTE — cuando se registra un cliente nuevo.
    • MOVIMIENTO — al registrar una venta o canje.
    • FECHA_PROGRAMADA — disparo periódico por cron en una fecha calculada.
    • CAMBIO_CATEGORIA — cuando un cliente sube o baja de nivel de loyalty.
    • WEBHOOK — invocación externa por HTTP.
  • Anti-spam: AntispamHoras y AntispamMaxEnvios — evita re-disparar al mismo cliente más de N veces en una ventana de horas.
  • Fechas de alta y modificación, estado.

Acciones

  • Nuevo flujo (modal con datos básicos).
  • Editar: abre flujo_editor.php con el editor visual Drawflow para diseñar los nodos (triggers, condiciones IF/CASE, esperas, acciones).
  • Simular (flujo_simular.php): ejecutá el flujo contra un cliente de prueba sin enviar mensajes reales, para validar ramas y variables.
  • Activar / desactivar.
  • Importar / Exportar JSON (FlujoJSON) — reutilizá flujos entre campañas.
  • Ver log de ejecución (flujos_log.php): traza paso a paso de cada disparo, con cliente, timestamp, resultado y error si lo hubo.
  • Subir media (flujos_upload_media.php) para imágenes / PDFs adjuntos.

Tipos de nodo

  • Trigger (entrada): define cuándo arranca.
  • Condición: IF / CASE sobre datos del cliente, campo personalizado, puntos, comercio, grupo de interés, etc.
  • Espera: pausa el flujo X minutos / horas / días.
  • Acción - Email: envía una Plantilla de email de la campaña.
  • Acción - WhatsApp: usa una plantilla aprobada de Meta o una respuesta rápida de Evolution.
  • Acción - HTTP: llama a un endpoint externo (webhook).
  • Acción - Actualizar cliente: setea campos personalizados, agrega tags, cambia grupo de interés.

Circuitos asociados

  • Plantillas de email → fuente de los textos / HTML para los nodos de Email.
  • Meta Cloud API y Evolution API → canales para los nodos de WhatsApp.
  • Respuestas rápidas (Evolution) → mensajes preconfigurados a usar como acción.
  • Campos personalizados y Grupos de interés → variables y condiciones disponibles en los nodos IF/CASE.
  • Parámetros → credenciales (webhooks, API keys) leídas por los nodos HTTP.
  • Cron flujos_cron.php → motor de ejecución que avanza paso a paso los flujos pendientes.

Buenas prácticas

  • Antes de activar, simulá el flujo con un cliente de prueba.
  • Configurá anti-spam realistas para evitar bombardear al cliente si el trigger se repite (ej: varios movimientos en un día).
  • Usá condiciones al inicio para descartar clientes que no aplican y ahorrar pasos.
  • Revisá el log de ejecución después de las primeras 24-48hs para detectar ramas mal diseñadas.

El diseño del flujo se almacena en JSON (FlujoJSON) y el motor avanza por nodos según el estado de cada instancia activa, persistido en la tabla de ejecuciones.

Editor de flujos

Un flujo se arma uniendo bloques en un diagrama: un disparador que lo inicia, bloques de control que deciden el camino y acciones que se ejecutan.

Disparadores

  • Alta de cliente, modificación de cliente, alta de movimiento (compra), alta de pedido y cambio de estado de pedido.
  • Fecha programada: todos los días, días laborables o mensual, a un horario, opcionalmente filtrando por grupo de interés o etiquetas.
  • Frecuencia: todas las veces, o una sola vez por cliente.

Control de flujo

  • Condición: compara una variable (por ejemplo, Cliente.Categoria o Movimiento.Importe) con un valor; también por marcas, rubros, drogas o laboratorios comprados.
  • Esperar minutos, horas o días antes de seguir.
  • Opciones con varias salidas, y bloques de código para casos avanzados.

Acciones

  • Enviar WhatsApp (con plantilla o mensaje) o email, al cliente o a otras direcciones.
  • Modificar un dato del cliente (categoría, activo, etc.), sumar puntos o asignar una etiqueta.
  • Llamar a un servicio externo (webhook) y guardar su respuesta para usarla después.

Probar antes de activar

Con Simular podés ejecutar el flujo con un cliente de prueba y ver, nodo por nodo, qué haría, sin enviar mensajes reales.

En los mensajes, hacé clic en una variable de la lista para insertarla, por ejemplo Hola {{Cliente.Nombre}}!.

Log de ejecuciones de flujos

Registra cada vez que un flujo se ejecutó. Sirve para confirmar que una automatización funciona y para encontrar por qué no se envió un mensaje.

Columnas

  • Fecha, flujo, disparador, cliente, resultado y duración.

Al abrir una ejecución se ve el detalle por nodo: qué bloque se ejecutó, de qué tipo es y el mensaje que devolvió (por ejemplo, el error del envío de WhatsApp).

Usá el buscador para filtrar por resultado, disparador o cliente, y Refrescar para ver las ejecuciones nuevas.

Productos

El catálogo de productos se comparte entre los comercios de la red. Sirve para aplicar promociones por producto, armar informes por marca y segmento, y alimentar la tienda del portal.

Datos de un producto

  • Nombre, costo y precio de venta.
  • Id externo: el código del producto en el sistema de facturación. Tiene que coincidir para que las ventas se vinculen con el producto.
  • Marca y clasificadores (rubro, laboratorio, acción terapéutica, etc.).
  • Activo: los inactivos no se usan en ventas nuevas.

Importar desde Excel

  1. Tocá Descargar plantilla y completala.
  2. Seleccioná el archivo .xlsx y revisá la vista previa.
  3. Tocá Comenzar importación. Al terminar verás cuántos se crearon, actualizaron, saltearon o dieron error.

Hay dos importaciones: la de productos (catálogo) y la de productos de tienda (descripciones, imágenes y categorías del portal).

La importación sigue en el servidor aunque cierres el navegador.

Importar stock

Actualiza el stock de los productos de una sucursal a partir de un archivo.

Paso a paso

  1. Elegí la sucursal (es obligatoria).
  2. Tocá Descargar plantilla para ver el formato.
  3. Seleccioná el archivo Excel o CSV y revisá la vista previa de las primeras filas.
  4. Tocá Procesar importación.
El proceso sigue en el servidor aunque cierres el navegador. Si la campaña sincroniza stock con Zetti, no hace falta importarlo a mano.

Marcas

Las marcas agrupan productos para aplicar promociones (por ejemplo, doble de puntos en la marca X) y para el informe de ventas por marca.

Cómo se usa

  • Buscá por nombre y filtrá por estado (activas o inactivas).
  • Nueva marca para crear una; Editar o Eliminar desde el listado.
  • Importar carga varias marcas de una vez con una plantilla.
  • Exportar el listado a CSV, Excel o PDF.
Los cambios de marca de los productos se reflejan en el gráfico de evolución anual del informe al día siguiente, porque ese dato se calcula de noche.

Segmentos de productos

Los segmentos son agrupaciones de productos que define cada red según su negocio, como Dermocosmética, Bebés o Venta libre.

Para qué sirven

  • Promociones por segmento.
  • Informe de ventas por segmento y su evolución anual.
  • Detección de caídas de ventas en Oportunidades.

Cómo se usa

  • Nuevo segmento para crearlo, y después asignale productos.
  • Editar o eliminar desde el listado; exportar a CSV, Excel o PDF.

Clasificadores de productos

Los clasificadores son las clasificaciones del producto que usa el sistema de facturación: rubro, subrubro, laboratorio, droga, acción terapéutica, etc.

Para qué sirven

  • Filtrar productos en promociones, análisis de clientes y flujos (por ejemplo, clientes que compraron un antihipertensivo).
  • Informes de ventas por clasificador.

Crear un clasificador

Indicá el ID del clasificador (el mismo código que usa el sistema de facturación), el nombre y el tipo. Si el ID ya existe, el sistema lo actualiza.

Con integraciones como Zetti, los clasificadores se cargan solos al importar el catálogo.