¿Qué es una campaña?
Envío por lotes a una audiencia mediante una plantilla multicanal. El panel y la API comparten la misma cola, créditos y estado. Analogía: plantilla es la letra. Segmento es la lista de direcciones. Campaña se sella y se deposita en el buzón.Campaña × segmento × envío directo
¿Cuándo usarlo?
Excelente para boletines, promociones para audiencias filtradas y pruebas con pocas identificaciones antes de la base completa. Para una alerta única mediante script, utilice el canal directo o el envío de plantilla.Canales de campaña
channels acepta: whatsapp, sms, email, telegram, push, rcs, instagram.
Cada canal listado debe estar habilitado en la plantilla.
Falta teléfono, correo electrónico o contacto → contacto omitido para ese canal (sin error por persona).
Marketing: el contacto necesita
receiveMarketing y tema suscripción cuando la plantilla está vinculada. Otros no entran en la cola.Si un canal falla al enviar
channelFailureMode define qué ocurre cuando un canal no puede enviar por un problema de infra (dominio de correo no verificado, instancia de WhatsApp/Telegram ausente, etc.).
Panel: Si un canal falla al enviar. API:
channelFailureMode en create/patch. Valores: STRICT o PARTIAL.
Con PARTIAL, puedes guardar la campaña aunque la infra esté pendiente; al ejecutar, el canal solo entra en cola si la infra está OK. Con STRICT, create/patch ya exige dominio de correo verificado, remitente WhatsApp en from (instancia o pool) y telegramInstanceId cuando el canal está en la campaña.
Cómo funciona en la práctica
- Plantilla con canales y contenido activos
- Nueva campaña, nombre, plantilla, canales, audiencia (segmento o ID)
- Tabla de enrutamiento por canal anterior
- Opcional: programar una o más fechas → Runs PROGRAMADOS
- Vista previa del segmento si se utiliza
- Ejecutar ahora o al horario → EN EJECUCIÓN → COMPLETADO o FALLADO
Volver a ejecutar (re-disparo)
Puedes ejecutar la misma campaña más de una vez sin editar el borrador. En el diálogo de confirmación del Run:
Analogía: la campaña es la plantilla del sobre; cada Run es otra vuelta a la cola. Eliges qué mensajeros (canales) salen esta vez y puedes saltar quien ya recibió.
En la API:
GET /v1/campaigns/{id}/run-preview devuelve superposición, costo y avisos; POST /v1/campaigns/{id}/run acepta channels[] y excludeAlreadySent. Cada Run guarda los canales efectivos en channelsUsed.
Programar envíos
En el panel Programar, las opciones de canal y reenvío quedan alineadas con Ejecutar:
Cada Run programado persiste
channelsOverride (o todos los canales si se omite/null) y excludeAlreadySent. A la hora H, el scheduler usa el mismo flujo del Run con esos valores.
Los Runs ya programados no se editan en esos campos — cancela y crea de nuevo. La lista de próximos envíos muestra, de forma compacta, canales y si la exclusión de ya enviados está activa.
Estado
En la API
Ejecutar devuelve
sent y runId. Los enlaces cortos obtienen utm_campaign y utm_content automáticamente.
Lista de verificación antes de ejecutar
- ¿Canales de campaña habilitados en la plantilla?
- ¿El segmento Vista previa tiene sentido?
- ¿Telegram peers en la instancia correcta?
- ¿Probado con pocas identificaciones?
- Créditos, instancias y remitente del correo electrónico, ¿está bien?

