Campañas¶
El módulo de Campañas permite enviar mensajes masivos o automatizados a una lista de contactos, utilizando templates preaprobados por Meta. Cada campaña puede crearse manualmente a través de un asistente guiado, o iniciarse de forma automática desde un sistema externo vía API.
Antes de crear una nueva campaña, se recomienda verificar que los templates estén actualizados, ya que estos determinan el contenido, los botones y los parámetros del mensaje.
Listado de campañas¶
La vista principal muestra el listado general de campañas, junto con indicadores agregados de la actividad reciente.

En la parte superior se muestran cuatro contadores generales:
| Indicador | Descripción |
|---|---|
| Campañas | Cantidad total de campañas existentes en el período filtrado. |
| Mensajes | Cantidad total de mensajes registrados. |
| Enviados | Mensajes enviados exitosamente. |
| Fallidos | Mensajes que no pudieron entregarse. |
Filtros¶
El listado puede filtrarse por:
- Rango de fechas — rango de fechas de creación de la campaña.
- Accesos rápidos — atajos predefinidos (por ejemplo, Últimos 90 días).
- Template — restringe el listado a campañas que usaron un template específico.
Columnas del listado¶
| Campo | Descripción |
|---|---|
| ID | Identificador único de la campaña. |
| Campaña | Nombre descriptivo de la campaña. |
| Estado | Estado actual del ciclo de vida (ver tabla de estados a continuación). |
| Template | Template de WhatsApp utilizado para el envío. |
| Total | Cantidad total de destinatarios cargados en la campaña. |
| Contadores | Resumen visual de enviados, pendientes y fallidos. Si la campaña tiene registros pendientes, se muestra además un indicador con el tiempo estimado para completar el envío, calculado en minutos y segundos. |
| Creación | Fecha y hora de creación de la campaña. |
| Acciones | Botones de control de la campaña (ver más abajo). |
Estados de campaña¶
| Estado | Descripción |
|---|---|
| scheduled (programada) | Programada para una fecha y hora futura. Muestra una cuenta regresiva hasta el inicio del envío. |
| sent (enviando) | En proceso de envío o con envíos ya realizados. |
| completed (completada) | Todos los registros fueron procesados (enviados o fallidos). |
| pending (pendiente) | Cargada pero aún no iniciada. |
| idle (en espera) | Campaña API en espera de ser disparada externamente. |
| paused (pausada) | Pausada manualmente; puede reanudarse en cualquier momento. |
Los nombres de estado se muestran en inglés dentro de la interfaz; aquí se incluye su equivalente en español a modo de referencia.
Acciones disponibles por campaña¶
- Iniciar / Pausar — controla la ejecución del envío en cualquier momento del ciclo de vida.
- Ver estadísticas — abre el panel de Estadísticas de Campaña.
- Ver listado de contactos — abre el Inspector de Campaña con el detalle de cada destinatario.
- Eliminar — borra la campaña (no disponible si ya tiene mensajes enviados; ver Protección de datos enviados).
Si una campaña programada se pausa, la fecha de programación puede modificarse libremente desde el Inspector de Campaña. Al reanudarla, el sistema respeta la nueva fecha configurada sin necesidad de volver a cargar los datos.
Crear una campaña¶
El botón + Agregar permite crear una nueva campaña, con dos modalidades:
- Cargar desde archivo — asistente guiado de importación (CSV Wizard).
- Campaña API — campaña disparada externamente.
Asistente de importación (CSV Wizard)¶
La creación manual de una campaña se realiza mediante un asistente de 5 pasos: Plantilla → Selección de Archivo → Validación → Mapeo de Columnas → Resultado.

Paso 1 — Plantilla¶
Se define la base de la campaña:
| Campo | Descripción |
|---|---|
| Selección de Plantilla | Template aprobado por Meta que se usará para el envío. |
| Nombre Campaña | Nombre descriptivo con el que se identificará la campaña en el listado. |
El campo para guardar automáticamente los números en el PhoneBook fue eliminado de este paso. El PhoneBook se gestiona de forma independiente desde su propio módulo.
Paso 2 — Selección de archivo¶

Se carga un archivo .csv arrastrándolo al área indicada o seleccionándolo manualmente.
Requisito del archivo: la primera línea del CSV debe contener los encabezados de cada columna (nombres de campo). Esto permite que el mapeo posterior de columnas sea más claro y ordenado, ya que el sistema usa esos encabezados para identificar cada campo en lugar de posiciones numéricas.
El sistema muestra una vista previa de los primeros registros del archivo para confirmar que la estructura es correcta antes de continuar.
Paso 3 — Validación¶

Este paso analiza automáticamente la columna de teléfonos seleccionada y clasifica cada registro.
| Contador | Significado |
|---|---|
| Válidos | Números con formato correcto, listos para enviar. |
| Alertas | Números que probablemente requieran un ajuste (por ejemplo, número local sin código de país). |
| Inválidos | Números que no pueden procesarse en su forma actual. |
| Restantes | Registros aún no revisados o corregidos. |
Para cada registro con alerta o error, el sistema muestra el motivo (por ejemplo: "Demasiado corto", "Posible número local de Argentina sin código de país").
Herramientas disponibles en este paso:
- Aplicar [prefijo] — cuando el sistema detecta números locales sin código de país, sugiere y permite aplicar el prefijo correspondiente (por ejemplo,
549para Argentina) a todos los registros afectados con un solo clic. - Edición manual — cada número puede corregirse directamente en la columna de número normalizado mediante el ícono de edición.
- Eliminar registro — quita un registro puntual de la importación.
- Continuar importando solo filas válidas — permite avanzar ignorando los registros inválidos, que quedarán excluidos de la campaña.
- Detección de duplicados — el sistema señala los registros que están repetidos dentro del mismo archivo.
Paso 4 — Mapeo de columnas¶

En este paso se asocian los campos del template con las columnas del archivo CSV. A medida que se completan las asociaciones, la vista previa del mensaje se actualiza en tiempo real, incluyendo el contacto, el documento adjunto (si corresponde) y los botones.
Cada campo del template puede completarse de tres formas distintas:
| Origen del valor | Cuándo usarlo |
|---|---|
| Columna del CSV | El valor varía por destinatario (nombre, monto, fecha, ID de cliente, etc.). |
| Valor constante | El valor es el mismo para todos los destinatarios de la campaña (por ejemplo, una fecha de vencimiento general). Se escribe directamente en el campo en lugar de seleccionar una columna. |
| Columna del CSV + prefijo URL | Para campos de encabezado dinámico (documento, imagen o video), donde la URL completa comparte una base fija y solo cambia un identificador. |
Encabezados dinámicos con archivos multimedia¶
Los templates con encabezado dinámico (PDF, imagen o video) requieren una URL completa por destinatario. En lugar de tener que construir o repetir esa URL completa en cada fila del CSV, el mapeo permite dividirla en dos partes:
- Campo del CSV — la parte variable de la URL (por ejemplo, el ID o hash del documento).
- Prefijo URL (opcional) — la parte fija que se antepone automáticamente a cada valor del CSV.

Por ejemplo, si el documento de cada cliente está disponible en:
https://www.domain.com/sendInvoice?ID=RES_0145552_20260878_268-1099280_ccd8f01ebaeef66cd225ac67312e6d003c6846cd
El CSV solo necesita contener la columna con el valor variable (Hash_File), y el prefijo https://www.domain.com/sendInvoice?ID= se define una única vez en el mapeo, aplicándose automáticamente a todos los registros.
Además del campo de URL, estos encabezados incluyen un campo Etiqueta del documento (Document Label), que define el nombre visible que acompaña al ícono del documento en el mensaje recibido por el cliente. Al igual que los demás campos, la etiqueta puede tomarse de una columna del CSV (por ejemplo, para mostrar "Factura_Enero.pdf" con el nombre real de cada archivo) o definirse como un valor constante si todos los envíos comparten el mismo nombre (por ejemplo, "Resumen de cuenta").
En la vista previa del mensaje, se puede hacer clic sobre el ícono del documento para abrir la URL de demostración y confirmar que el PDF, imagen o video se está tomando correctamente antes de lanzar la campaña.
Paso 5 — Resultado¶

Al finalizar, el sistema confirma la creación de la campaña e indica:
- ID de la campaña generada.
- Cantidad de contactos importados.
- Cantidad de registros usados para actualizar la guía telefónica (si aplica).
Desde aquí se puede acceder directamente al listado general de campañas.
Campaña API¶
También es posible crear campañas automáticas controladas por un sistema externo.

Este tipo de campaña requiere tres campos:
- Nombre de campaña
- Template a enviar
- (Opcional) Notas
La campaña queda en estado de espera. Un sistema externo puede luego invocar la API de Kewbot enviando:
- Token de seguridad
- Nombre de campaña
- Número de destinatario
- Parámetros requeridos por el template
Si algún parámetro es incorrecto o falta, la API devuelve un error. Esto permite que un sistema externo dispare envíos automáticos tras ciertos eventos (alta de cliente, vencimiento, recordatorio de turno, etc.). Ver la documentación de Integración de API para el detalle técnico de este flujo.
Programación de envíos¶
Una campaña puede programarse para ejecutarse en una fecha y hora futura, en lugar de iniciar el envío de inmediato.
Esto permite, por ejemplo, preparar un viernes una campaña que debe salir a primera hora del lunes siguiente, sin necesidad de que nadie esté presente en el momento del envío.
Las campañas programadas también pueden pausarse y reprogramarse libremente. Por ejemplo: una campaña que comenzó a enviarse un viernes puede pausarse al finalizar el horario de oficina, reprogramarse para el lunes a primera hora, y continuará automáticamente desde ese punto sin intervención adicional.
Inspector de campaña¶
El botón de listado de contactos abre el Inspector de Campaña, con el detalle completo de cada destinatario de la campaña.

Desde la cabecera del Inspector se puede editar:
- Nombre de campaña
- Programación — fecha y hora de programación del envío.
La tabla de destinatarios muestra:
| Columna | Descripción |
|---|---|
| Teléfono | Número del destinatario. |
| Estado | Estado individual del envío (pendiente, enviado, entregado, leído, fallido). |
| Parámetros | Valores aplicados a cada campo del template para ese destinatario específico. |
| Respuestas | Respuesta o botón seleccionado por el cliente, si la hubo. |
| Error | Motivo del fallo, si el envío no pudo completarse. |
| Fecha | Fecha y hora del registro. |
| Acciones | Editar o eliminar el registro individual. |
Protección de datos enviados¶
Una vez que un mensaje fue efectivamente enviado, su registro no puede modificarse ni eliminarse. Esto garantiza la consistencia de los reportes, la auditoría y el seguimiento de respuestas a lo largo del tiempo.
Los registros que aún están en estado pendiente o que fallaron sí pueden editarse (por ejemplo, para corregir un número) antes de ser reenviados.
Estadísticas de campaña¶
El botón de estadísticas abre el panel de Estadísticas de Campaña, con el resultado consolidado de todos los envíos de la campaña.

El panel incluye:
- Total de destinatarios — cantidad total de destinatarios de la campaña.
- Embudo de resultados — distribución entre Leídos, Entregados/Enviados y Fallidos, con porcentaje sobre el total.
- Respondidos — cantidad y porcentaje de destinatarios que respondieron al mensaje.
- Respuestas a botones — si el template incluye botones, se muestra cuántas veces fue seleccionado cada uno.
- Vista previa del template — vista previa del mensaje exacto que se envió, incluyendo texto y botones.
Cuando una campaña todavía no tiene actividad registrada, el panel lo indica claramente en lugar de mostrar gráficos vacíos.
Velocidad de envío¶
El intervalo de tiempo entre cada mensaje de una campaña es configurable por empresa desde Configuración de Empresa, dentro del grupo de parámetros Campañas:
"Tiempo mínimo entre mensajes de campaña. Valor permitido: 250 a 10000 ms."
Este parámetro permite adaptar el ritmo de envío según las necesidades operativas de cada cliente o las restricciones de la cuenta de WhatsApp.
En el listado de campañas, mientras existan registros pendientes, este mismo valor se usa para calcular el tiempo estimado de finalización, multiplicando la cantidad de mensajes pendientes por el delay configurado. El indicador se actualiza a medida que la campaña avanza.