Campañas (promoción cruzada)
Campañas es el motor de promoción cruzada: te permite anunciar una de tus aplicaciones dentro de otra de tus aplicaciones mediante la asignación «Bloques de anuncios para espacios publicitarios → Promoción cruzada» descrita en Detalles de la aplicación.
La lista de campañas
La página Campañas (/campaigns) muestra todas las campañas que has creado en una tabla: número de fila, Título, Aplicación de destino (nombre y paquete, en dos líneas), Tipo de campaña (actualmente siempre «Promoción cruzada»; Publicidad en redes existe como concepto en el selector de tipo, pero no se ofrece como opción), Estado y Prioridad (ambos se muestran como etiquetas de color y permiten ordenar la tabla), Fecha de inicio, Fecha de finalización, Fecha de creación, Fecha de actualización (estas dos últimas también permiten ordenar la tabla) y Acciones (Editar y Eliminar).

Puedes filtrar la lista por Estado de la campaña, Prioridad o Marca de destino; cada filtro es un selector múltiple dinámico. Al editar una campaña (la acción del lápiz), se abre en modo de edición el asistente descrito a continuación; al eliminarla, se solicita confirmación y la acción no se puede deshacer.
El botón + Crear solo está disponible si tu plan aún permite crear otra campaña de promoción cruzada (canCreateCampaign()). Si has alcanzado el límite de campañas de tu plan, se sustituye por un indicador de uso («X/Y campañas utilizadas») y un enlace «🔒 Mejorar plan» a Suscripción.
Crear o editar una campaña: el asistente
Al hacer clic en + Crear (o al editar una campaña existente), se abre un asistente paso a paso. El asistente tiene cinco pasos, no cuatro: es fácil contar uno menos porque el primer paso se omite automáticamente al editar una campaña existente (su tipo ya no se puede cambiar una vez creada). El patrón de «borrador y, después, guardar» de cada paso es uniforme en todo el asistente: mientras completas un paso, los cambios solo se mantienen en el estado local del componente de ese paso. No se escribe nada en el contexto compartido del asistente ni se guarda nada en el servidor hasta que haces clic en un botón de guardado y la llamada a la API correspondiente se completa correctamente. Si intentas salir con cambios sin guardar, el mensaje de confirmación «Tienes cambios sin guardar. ¿Seguro que quieres salir?» (Sí, salir / Quedarme) evita que pierdas tu trabajo.
Paso 1 — Seleccionar el tipo de campaña
Una única tarjeta seleccionable: Promoción cruzada («Promociona tus propias aplicaciones entre los usuarios de tus otras aplicaciones»). Esta es la única opción real: en el código subyacente existe un segundo tipo, «Publicidad en redes», reservado para uso futuro, pero actualmente no se puede seleccionar en la interfaz. Al hacer clic en Siguiente, se avanza al siguiente paso; este paso no realiza ninguna llamada al servidor por sí solo, ya que no se crea nada hasta el paso 2. En modo de edición, se omite todo este paso: el asistente se abre directamente en el paso 2 con el tipo de la campaña existente ya fijado.
Paso 2 — Configuración de la campaña

Este paso permite tanto crear la campaña (al guardar por primera vez, en modo de creación) como editar su configuración básica (en modo de edición). Campos:
- Interruptor de Estado de la campaña — solo en modo de edición. Permite alternar entre Activa y En pausa (con un cuadro de confirmación en ambos casos: «¿Activar campaña?» / «¿Pausar campaña?»). Al intentar activar una campaña, antes de guardar se comprueba que tenga al menos una creatividad y que al menos una de sus creatividades esté activa. Si no se cumplen estas condiciones, la acción se bloquea con el mensaje «No se puede activar la campaña: añade al menos una creatividad primero» o «...al menos una creatividad debe estar activa», y el cambio del interruptor no se aplica.
- Título de la campaña — campo de texto obligatorio.
- Seleccionar marca — desplegable obligatorio con tus marcas. Al cambiar de marca, se borra la aplicación seleccionada en «Aplicación que se promocionará», ya que la lista de aplicaciones depende de la marca.
- Aplicación que se promocionará — desplegable obligatorio que se rellena según la marca seleccionada; permanece deshabilitado hasta que se elige una marca.
- Prioridad de la campaña — Alta / Media / Baja, mostradas como tres botones seleccionables en forma de píldora; el valor predeterminado es Media.
- Inicio de la campaña — «Inmediato» o una fecha concreta. Si eliges una fecha, no puede ser anterior a hoy (se comprueba con respecto a la fecha actual), salvo en modo de edición, donde esta comprobación se omite si no has cambiado la fecha guardada.
- Fin de la campaña — «Ninguno (sin fecha de finalización)» o una fecha concreta, con la misma regla que impide seleccionar fechas pasadas y una comprobación adicional de que la fecha de finalización sea posterior a la de inicio.
Bloqueo de campos mientras está activa: una vez que una campaña está Activa, ya no puedes cambiar su Marca, Aplicación que se promocionará ni la configuración de fecha de inicio/Inmediato. Estos campos se deshabilitan y muestran una breve nota explicativa («...no se puede cambiar mientras la campaña está activa»). Puedes seguir cambiando el título, la prioridad y la fecha de finalización, y pausarla mediante el interruptor.
Al guardar (en modo de creación, Guardar y siguiente; en modo de edición, Guardar), se envían al servidor el título, la aplicación de destino, el tipo de campaña, la prioridad, las fechas de inicio y finalización calculadas y, en modo de edición, el estado. Al crearla por primera vez, los datos existentes de publicación y regiones incluidos en la respuesta (si los hay) se utilizan para rellenar el estado inicial del paso 3. Estos datos solo se escriben en el contexto compartido del asistente después de que la llamada a la API se complete correctamente.
Paso 3 — Segmentación

La segmentación consta de dos subsecciones independientes que comparten un mismo paso y un único botón Guardar: Publicación (en cuáles de tus marcas y aplicaciones debe mostrarse esta campaña) y Regiones (en qué países debe publicarse).
Publicación. Mediante listas de casillas de verificación, puedes elegir entre:
- Todas las marcas — una única casilla global que permite que la campaña aparezca en todas tus marcas y aplicaciones, incluidas las que añadas más adelante.
- Marcas específicas — selecciona una o varias marcas de una lista desplazable; cada una tiene su propia sublista de aplicaciones. Dentro de una marca seleccionada, puedes marcar aplicaciones individuales o marcar la casilla «Todas (incluidas las futuras)» de esa marca para incluir todas sus aplicaciones (actuales y futuras) sin seleccionarlas una a una.
Encima de las listas de casillas se muestra un resumen actualizado de «Marcas seleccionadas» y «Aplicaciones seleccionadas» en forma de etiquetas, para que puedas ver de un vistazo la segmentación actual.
Regiones. Un selector múltiple de países con un acceso rápido «Seleccionar todo», que permite restringir (o no) los países en los que se muestran los anuncios de la campaña. Si no aplicas restricciones, la campaña se publica en todas las regiones. Este selector de regiones es deliberadamente independiente de la función Grupos de regiones con nombre que se describe más adelante en esta guía: es una simple selección de países por campaña, sin nombre, no un grupo guardado y reutilizable. (Si la lista dinámica de países no se carga desde el servidor, se utiliza una lista alternativa más reducida de 16 países; por eso las opciones de respaldo de este selector son menos numerosas que las de Grupos de regiones).
Ambas subsecciones siguen el mismo comportamiento de borrador y guardado que el resto del asistente: los cambios se mantienen en el estado local hasta que haces clic en Guardar (o Guardar y siguiente). En ese momento, Publicación y Regiones se guardan mediante sus respectivas llamadas a la API y, solo después, se integran en el estado compartido del asistente.
Paso 4 — Creatividades

Aquí subes las creatividades publicitarias que se mostrarán cuando se publiquen los anuncios de la campaña.
Añadir nuevas creatividades. El formulario «Añadir nuevas creatividades», con formato de tabla, permite añadir una o varias filas a la vez (el enlace + Añadir creatividades añade otra fila vacía; el icono de papelera elimina una fila). Cada fila contiene:
- Imagen — haz clic en el cuadrado vacío para subir una. Formatos admitidos: JPEG, PNG, JPG, GIF, WebP; tamaño máximo: 10 MB. Los archivos que no cumplen estos requisitos se rechazan y se muestra un error específico junto al campo (formato incorrecto o «Máx. 10 MB (X.XX MB)», que indica el tamaño real).
- Nombre — texto obligatorio.
- URL de destino — obligatoria; debe ser una URL
http://ohttps://válida y se valida en tiempo real mientras escribes. - Tipo de anuncio — intersticial, banner, nativo, recompensado o appOpen (es el mismo conjunto de cinco formatos que se utiliza en otras secciones para los bloques de anuncios).
Al hacer clic en Guardar y siguiente (modo de creación) o Guardar (modo de edición), se valida cada fila que no esté vacía, se sube cada imagen y, después, se crea cada creatividad mediante la API. Solo se añaden a la lista de elementos guardados las creatividades que se crean correctamente; si alguna no se guarda, verás cuántas han fallado y podrás volver a intentarlo. En modo de creación, se requiere al menos una creatividad para poder salir de este paso.
Lista de creatividades guardadas. Las creatividades ya guardadas aparecen encima del formulario para añadir nuevas como una lista de tarjetas. Cada tarjeta muestra una miniatura (haz clic para ampliarla), el nombre, el tipo de anuncio, la URL de destino, una etiqueta de estado Activa/Inactiva con un interruptor, un botón de edición (lápiz) y un botón de eliminación (papelera).
- Se impide desactivar una creatividad si es la única creatividad activa de la campaña («Al menos una creatividad debe permanecer activa»); en todos los demás casos, se solicita una confirmación sencilla: «¿Activar/Desactivar creatividad?».
- El botón de edición (lápiz) abre un formulario de edición en la propia tarjeta para esa creatividad (nombre, imagen y URL de destino; el tipo de anuncio es fijo), con sus propios botones Guardar/Cancelar.
- Al eliminar, se muestra la advertencia «¡No podrás deshacer esta acción!» antes de borrar la creatividad de forma permanente.
Paso 5 — Revisar la campaña

Un resumen de solo lectura de todo lo introducido en los pasos 2–4: Estado de la campaña, Título, Tipo, Marca, Aplicación que se promocionará, Prioridad, Fecha de inicio, Fecha de finalización, un resumen de Segmentación en una sola línea (por ejemplo, «Todas las marcas · Todas las aplicaciones» o un desglose por marca), las Regiones seleccionadas (etiquetas o «Todas las regiones») y la lista completa de Creatividades con sus miniaturas, nombres, URL de destino y etiquetas de tipo de anuncio.
Solo en modo de creación, este paso también incluye un interruptor de Estado (Activa/En pausa) operativo en la parte superior. Se aplican las mismas reglas de activación que en el paso 2 (no permitirá activar una campaña sin creatividades o sin ninguna creatividad activa y mostrará «No se puede activar la campaña»). En modo de edición, el estado se muestra como una etiqueta de solo lectura: debes cambiarlo mediante el interruptor del paso 2, no desde aquí.
Al hacer clic en Finalizar, vuelves a la lista de Campañas. En modo de edición, primero verás una breve confirmación: «La campaña se ha guardado correctamente»; en modo de creación, se vuelve directamente a la lista sin ninguna confirmación adicional, ya que cada paso se ha ido guardando durante el proceso.