> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ejemplos de Journey

> Configuraciones paso a paso de Journey para incorporación, reenganche, carrito abandonado, pruebas A/B, envíos recurrentes y flujos impulsados por eventos.

Cada ejemplo a continuación incluye la configuración de Journey recomendada y la configuración paso a paso. Comienza con los patrones más simples (incorporación, reenganche) y avanza hacia flujos más avanzados (envíos recurrentes, progresión impulsada por eventos, ramificación por botón de acción).

<Frame caption="Video: ejemplos de Journey">
  <iframe width="560" height="315" src="https://www.youtube.com/embed/TnsBCXe_Opw?si=feFpzblCm_Hcpbd4" title="Ejemplos de Journey" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

***

## Incorporación

Usa este patrón para enviar una secuencia de bienvenida o incorporación a nuevos suscriptores. También se conoce comúnmente como campaña de bienvenida, serie de bienvenida o campaña de nuevos usuarios. El objetivo es guiar a los usuarios hacia la realización de una acción clave (completar su perfil, realizar su primera compra o descubrir una función principal) en lugar de enviarles mensajes en el momento en que se registran.

| Configuración de Journey | Descripción                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | **Basado en eventos (recomendado):** Usa un disparador de [Evento Personalizado](./custom-events) (por ejemplo, `signup_completed`) para que la secuencia comience en un momento significativo: cuando el usuario termina el registro.<br /><br />**Alternativa basada en segmento:** "El usuario coincide con los criterios del segmento" usando el [segmento](./segmentation) "Usuarios suscritos", solo adiciones futuras. Usa esto si no tienes un evento de registro configurado. |
| **Reglas de salida**     | Avanzaron a través de todo el journey, o cuando el usuario completa la acción clave (por ejemplo, salen de un segmento "no ha completado el onboarding").                                                                                                                                                                                                                                                                                                                              |
| **Reglas de reingreso**  | No                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **Contenido**            | Una secuencia corta durante la primera semana del usuario: un email de bienvenida el día 0, un recordatorio push el día 2 si no han actuado, y un email de seguimiento el día 7 como último contacto.                                                                                                                                                                                                                                                                                  |

**Pasos del Journey**

<Steps>
  <Step title="Inmediatamente: Enviar un email de bienvenida">
    El usuario acaba de registrarse y probablemente todavía está en tu app. Un email es el primer contacto correcto: es esperado, no intrusivo y puede incluir más detalles que una notificación push. Guarda el push para cuando se hayan ido.
  </Step>

  <Step title="Esperar 1 día">
    Dale tiempo al usuario para explorar por su cuenta antes de hacer seguimiento.
  </Step>

  <Step title="Día 2: ¿Ramificar si la acción clave fue completada?">
    Agrega una rama sí/no según si el usuario ha completado tu objetivo de incorporación. Rastrea con una [etiqueta](./add-user-data-tags) (por ejemplo, `onboarding_complete = true`) o membresía de segmento.

    * **Rama Sí:** Salir del journey. El usuario no necesita un recordatorio.
    * **Rama No:** Enviar una notificación push con un mensaje específico y accionable. Por ejemplo: "Termina de configurar tu perfil" o "Realiza tu primera \[acción]".
  </Step>

  <Step title="Esperar 5 días">
    Da tiempo para que el push llegue antes de enviar el mensaje final.
  </Step>

  <Step title="Día 7: ¿Ramificar si la acción clave fue completada?">
    * **Rama Sí:** Salir del journey.
    * **Rama No:** Enviar un email de seguimiento como último contacto. Evita más mensajes. Los usuarios que no se han comprometido después de una semana son mejores candidatos para una [campaña de reenganche](#re-engagement-campaign).
  </Step>
</Steps>

<Frame caption="Ejemplo de journey de bienvenida de incorporación">
  <img src="https://mintcdn.com/onesignal/uQXaZLJRo_iX3RUv/images/journeys/onboarding-journey.png?fit=max&auto=format&n=uQXaZLJRo_iX3RUv&q=85&s=fdd555052bb0d43d1202d5bff2ca56b4" alt="Flujo de journey de bienvenida de incorporación con pasos de push y email" width="748" height="1426" data-path="images/journeys/onboarding-journey.png" />
</Frame>

***

## Campaña de reenganche

Usa este patrón para recuperar usuarios que no han abierto tu app o visitado tu sitio recientemente. El journey envía una serie de mensajes cada vez más convincentes y sale tan pronto como el usuario regresa.

| Configuración de Journey | Descripción                                                                                                                                                                                                |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | **La última sesión del usuario es mayor a 7 días;** usuarios suscritos. (Es posible que desees **excluir ciertos segmentos** como clientes pagados si tu objetivo es que más usuarios gratuitos regresen.) |
| **Reglas de salida**     | **Avanzaron a través de todo el journey o cumplen ciertas condiciones** — salir cuando el usuario se vuelve activo en tu app/sitio web.                                                                    |
| **Reglas de reingreso**  | **Sí, después de cierto tiempo: 7 días** (el reenganche puede ocurrir cuando no han abierto tu app en un tiempo).                                                                                          |
| **Contenido**            | Recuerda a los usuarios regresar a tu app cuando no la han abierto en un tiempo, y atráelos con recompensas o descuentos.                                                                                  |

**Pasos del Journey**

<Steps>
  <Step title="Enviar una notificación push">
    Comienza con un push — es el canal más visible para reengancharse con usuarios inactivos. Usa un mensaje claro y orientado a la acción como "¡Te echamos de menos! Aquí están las novedades."
  </Step>

  <Step title="Esperar 2 días">
    Dale tiempo al usuario para responder al push antes de escalar.
  </Step>

  <Step title="Ramificar por actividad del usuario">
    Agrega una rama sí/no para verificar si el usuario ha regresado (por ejemplo, última sesión en los últimos 2 días).

    * **Rama Sí:** Salir del journey. El usuario está reenganchado.
    * **Rama No:** Enviar un email con un incentivo más fuerte (por ejemplo, un descuento, nuevo contenido o destaque de función).
  </Step>

  <Step title="Esperar 3 días">
    Da tiempo para que el email devuelva al usuario.
  </Step>

  <Step title="Verificación final">
    * **Activo:** Salir del journey.
    * **Todavía inactivo:** Opcionalmente enviar un SMS final o salir. Evita más mensajes — los usuarios que no han respondido después de múltiples contactos tienen pocas probabilidades de convertir con más mensajes.
  </Step>
</Steps>

<Frame caption="Ejemplo de journey de campaña de reenganche">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/reengagement-journey.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=63990452d48a0d82b27a87469bf7d00a" alt="Flujo de journey de reenganche con pasos de espera y condiciones de salida" width="1427" height="1495" data-path="images/docs/reengagement-journey.png" />
</Frame>

***

## Carrito abandonado

<Card title="Ejemplo de carrito abandonado" href="./abandoned-cart" icon="money-bill">
  Usa Eventos Personalizados o Etiquetas para rastrear la actividad del carrito y enviar mensajes de carrito abandonado.
</Card>

***

## Campaña promocional

Usa este patrón para promociones de tiempo limitado, eventos de ventas o lanzamientos de productos. El journey crea anticipación, recuerda a los usuarios durante el evento y crea urgencia a medida que se acerca al final.

| Configuración de Journey | Descripción                                                                                                                                                                       |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | **El usuario coincide con los criterios del segmento.** Usuarios suscritos o segmento objetivo al que tu campaña promocional es relevante.                                        |
| **Reglas de salida**     | **Avanzaron a través de todo el journey o cumplen ciertas condiciones.** Selecciona un segmento que defina el objetivo que deseas alcanzar (por ejemplo, usuarios que compraron). |
| **Reglas de reingreso**  | **No** (si esta es una campaña única, envíala una vez).                                                                                                                           |
| **Contenido**            | Prepáralos para el evento, recuérdales cuando comience y ofrece un descuento o recompensa cuando se acerque el final.                                                             |

**Pasos del Journey**

<Steps>
  <Step title="Anuncio: Enviar un mensaje teaser">
    Envía un email o push anunciando la próxima promoción. Incluye la fecha, qué esperar y una razón para prestar atención.
  </Step>

  <Step title="Esperar hasta el inicio del evento">
    Agrega un paso de espera sincronizado con el inicio de tu promoción.
  </Step>

  <Step title="Inicio del evento: Enviar la oferta principal">
    Envía una notificación push o email con los detalles de la promoción, código de descuento o llamada a la acción.
  </Step>

  <Step title="Esperar 2–3 días (a mitad del evento)">
    Da tiempo a los usuarios para actuar en el mensaje inicial.
  </Step>

  <Step title="Recordatorio: Mensaje de última oportunidad">
    Envía un push o email final con urgencia — "La venta termina mañana" o "Última oportunidad para 20% de descuento". Los usuarios que ya convirtieron saldrán a través de la regla de salida.
  </Step>
</Steps>

<Frame caption="Ejemplo de journey de campaña promocional">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/promotional-journey.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=fa69c44b733a2b2f97973a64e24395fa" alt="Flujo de journey de campaña promocional con mensajes temporizados" width="1487" height="1596" data-path="images/docs/promotional-journey.png" />
</Frame>

***

## Enviar mensaje después de que el usuario sale de la app si la acción está incompleta

**Configuración inicial**

1. Usa [etiquetas de datos](./add-user-data-tags) para marcar que la acción debe ser realizada por el usuario. Elimina la etiqueta cuando se complete la acción.
2. Configura el [segmento](./segmentation) para esta etiqueta.

| Configuración de Journey | Opción                                                                   | Descripción                                                                                                   |
| ------------------------ | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | La última sesión del usuario es mayor que la cantidad de tiempo.         | La cantidad de tiempo que determinas que el usuario ha estado activo por última vez en tu app o sitio web.    |
| **Audiencia**            | Incluye el segmento que deseas dirigir con la etiqueta.                  | Estos son los usuarios elegibles para recibir el mensaje.                                                     |
| **Reglas de salida**     | Salir cuando el usuario ya no coincide con las condiciones de audiencia. | Cuando el usuario sale del segmento, ya no es elegible para el mensaje de journey.                            |
| **Reglas de reingreso**  | Sí, después de cierto tiempo.                                            | La cantidad de tiempo que deseas esperar para que el usuario sea elegible para recibir el mensaje nuevamente. |

**Pasos del Journey**

<Steps>
  <Step title="Agrega el/los mensaje(s) deseado(s)">
    Elige una plantilla para el paso de mensaje. Puedes usar push, email, SMS o in-app según la acción que desees que el usuario realice.
  </Step>

  <Step title="Establece un nodo de espera por la cantidad de tiempo que deseas que el usuario espere">
    Esto puede ser un intervalo corto o largo dependiendo de si el mensaje debe repetirse como recordatorio. En el ejemplo, usamos 104 semanas (2 años).
  </Step>
</Steps>

## Prueba A/B dentro de un journey

Usando un nodo de **rama dividida**, puedes establecer una división 50/50 dentro de tu journey. Crea dos plantillas de mensaje diferentes y a medida que tus usuarios fluyen, la mitad recibirá "Plantilla A" y la otra "Plantilla B".

Exporta los datos de mensaje de cada plantilla para comparar las [analíticas](./analytics-overview) entre las variantes.

<Frame caption="Una prueba A/B">
  <img src="https://mintcdn.com/onesignal/w9XjWmVBB-0WycSD/images/docs/ab-test-journey.png?fit=max&auto=format&n=w9XjWmVBB-0WycSD&q=85&s=ef12a5ca93a5b5cf6cc48a6f2184a5d6" alt="Journey de prueba A/B con una rama dividida 50/50 y dos plantillas de mensaje" width="1608" height="772" data-path="images/docs/ab-test-journey.png" />
</Frame>

***

## Mostrar mensajes in-app en orden y una vez al día

En este ejemplo, queremos mostrar 3+ mensajes in-app seguidos, pero solo mostrarlos una vez al día. Si un usuario no abre la app, aún lo verá la próxima vez que abra la app.

**Configuración inicial**

<Steps>
  <Step title="Crear un nuevo segmento">
    Crea un segmento llamado `iam_journey` con filtro: Etiqueta de usuario `iam_journey` es `1`

    1. Puedes cambiar `iam_journey` por el nombre que elijas.
    2. Esta etiqueta se establecerá en cada usuario que termine el journey y obtenga todos los mensajes.

    <Frame caption="Pantalla de creación de segmento">
      <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/iam-journey-segment.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=c5c3444e720b727a73a4f8b73bb488df" alt="Pantalla de creación de segmento con filtro de etiqueta iam_journey" width="803" height="433" data-path="images/docs/iam-journey-segment.png" />
    </Frame>
  </Step>

  <Step title="Crear los mensajes in-app">
    Ver [diseñar mensajes in-app con arrastrar y soltar](./design-your-in-app-message) para más información.
  </Step>

  <Step title="Configurar el siguiente journey">
    | Configuración de Journey | Opción                                             | Descripción                                                                               |
    | ------------------------ | -------------------------------------------------- | ----------------------------------------------------------------------------------------- |
    | **Reglas de entrada**    | El usuario coincide con los criterios del segmento | Estos son los usuarios elegibles para recibir el mensaje.                                 |
    | **Audiencia**            | Incluir segmento & excluir segmento                | Incluye el segmento "Usuarios suscritos". Excluye el segmento "`iam_journey`" del paso 1. |
    | **Reglas de salida**     | Avanzaron a través de todo el journey              | No se necesitan condiciones adicionales.                                                  |
    | **Reglas de reingreso**  | Sí, después de cierto tiempo                       | 2 minutos                                                                                 |

    **Pasos del Journey**

    Repite este orden para la cantidad de mensajes que deseas mostrar. En este ejemplo, mostraremos 3 mensajes in-app (IAM 1, IAM 2, IAM 3).

    1. **Agrega un paso de mensaje in-app.**
       1. Nombra el mensaje, por ejemplo: `IAM 1`.
       2. En la parte inferior del mensaje, establece **programación de entrega** en **1 día**.

    2. **Agrega una acción de rama sí/no antes del paso de mensaje in-app.**
       1. Establece tu condición de ramificación: comportamiento de mensaje anterior: "`IAM 1` visto".
       2. **Sigue la rama No**
          1. Arrastra el `IAM 1` a la rama No.
          2. Agrega un paso de espera de 1 día.
       3. **Sigue la rama Sí**
          1. Dentro de la rama Sí, repite los pasos 1 y 2 para todos los mensajes, reemplazando `IAM 1` con el nuevo mensaje in-app (por ejemplo, `IAM 2`, `IAM 3`).
          2. En la rama Sí final, agrega la acción **etiquetar usuario**.
             1. Etiqueta la misma clave usada en Configuración inicial → Paso 1 segmento.
                1. Ejemplo `iam_journey : 1`.

    <Frame caption="El journey completo">
      <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/iam-journey-complete.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=ed5c5c36d00e786c9ad91dffd9699564" alt="Journey de mensaje in-app completo con ramificación y entrega diaria" width="1376" height="1522" data-path="images/docs/iam-journey-complete.png" />
    </Frame>
  </Step>
</Steps>

## Journey de entrada limitada

Asegúrate de que los usuarios solo puedan ingresar a un journey un número limitado de veces mientras controlas la experiencia en cada etapa.

| Configuración de Journey | Descripción                                                                                                                                                                |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | El usuario coincide con los criterios del segmento (por ejemplo, usuarios suscritos o cualquier segmento objetivo relevante).                                              |
| **Audiencia**            | Incluye tu segmento objetivo. Excluye usuarios con la etiqueta `journey_count = 2` para limitar las entradas a dos veces.                                                  |
| **Reglas de salida**     | Avanzaron a través de todo el journey.                                                                                                                                     |
| **Reglas de reingreso**  | Sí, después de cierto tiempo: 15 días.                                                                                                                                     |
| **Contenido**            | Proporciona una experiencia de primera vez en la entrada inicial, y una experiencia de segunda vez personalizada al reingresar. Evita más entradas más allá de la segunda. |

<Frame caption="Configuración de entrada limitada">
  <img src="https://mintcdn.com/onesignal/Kryww3qVcdmjY27T/images/journeys/limited-entry-settings.png?fit=max&auto=format&n=Kryww3qVcdmjY27T&q=85&s=71647a50f354d2174200298b11678e6b" alt="Configuración de journey de entrada limitada con exclusión de audiencia y reglas de reingreso" width="646" height="1490" data-path="images/journeys/limited-entry-settings.png" />
</Frame>

**Configuración inicial**

<Steps>
  <Step title="Prepara tu estrategia de etiquetas">
    Usa una etiqueta de usuario llamada `journey_count` para rastrear entradas. Las etiquetas se crean automáticamente cuando las estableces en el Journey. Ver [acción de etiqueta](./journeys-actions#tag-user) para detalles.
  </Step>

  <Step title="Configurar inclusión/exclusión de audiencia">
    En la audiencia del journey:

    * Incluye tu segmento objetivo (por ejemplo, "Usuarios suscritos").
    * Excluye usuarios donde la etiqueta de usuario `journey_count` es `2`.
  </Step>

  <Step title="Establecer reglas de reingreso">
    Establece las reglas de reingreso en "Sí, después de cierto tiempo: 15 días".
    Esto permite exactamente un reingreso entre la primera y segunda ejecución.
  </Step>
</Steps>

**Pasos del Journey**

<Frame caption="Flujo de entrada limitada">
  <img src="https://mintcdn.com/onesignal/Kryww3qVcdmjY27T/images/journeys/limited-entry.png?fit=max&auto=format&n=Kryww3qVcdmjY27T&q=85&s=3d8652adedf2610bb444ee217eb52856" alt="Flujo de journey de entrada limitada con rama sí/no basada en la etiqueta journey_count" width="932" height="1468" data-path="images/journeys/limited-entry.png" />
</Frame>

<Steps>
  <Step title="Agregar una rama sí/no al inicio">
    Condición: etiqueta de usuario `journey_count` es igual a `1`.

    * **Rama Sí** = usuarios que regresan (segunda entrada).
    * **Rama No** = usuarios por primera vez (aún no hay etiqueta presente).
  </Step>

  <Step title="Rama No (primera entrada)">
    * Agregar acción de etiquetar usuario: establecer `journey_count` en `1`.
    * Enviar tus mensajes y acciones de primera vez.
    * Continuar hasta el final o lógica adicional según sea necesario.
  </Step>

  <Step title="Rama Sí (segunda entrada)">
    * Agregar acción de etiquetar usuario: establecer `journey_count` en `2`.
    * Enviar tus mensajes y acciones de usuario que regresa.
    * Continuar hasta el final o lógica adicional según sea necesario.
  </Step>

  <Step title="Aplicar el límite">
    Debido a que la audiencia excluye usuarios con `journey_count = 2`, cualquier intento de tercera entrada será bloqueado automáticamente.
  </Step>
</Steps>

## Journeys recurrentes para días específicos

Envía mensajes recurrentes que se alineen con un día específico de la semana (por ejemplo, promociones semanales, recordatorios de eventos).

| Configuración de Journey | Descripción                                                                                                              |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| **Reglas de entrada**    | El usuario coincide con los criterios del segmento (por ejemplo, usuarios suscritos u otro segmento objetivo relevante). |
| **Audiencia**            | Incluye tu segmento objetivo.                                                                                            |
| **Reglas de salida**     | Avanzaron a través de todo el journey.                                                                                   |
| **Reglas de reingreso**  | Sí, después de cierto tiempo: 7 días.                                                                                    |
| **Contenido**            | Un mensaje semanal enviado en un día específico (por ejemplo, todos los viernes).                                        |

<Frame caption="Configuración de journey recurrente">
  <img src="https://mintcdn.com/onesignal/lYMMkFJp3v40a2sJ/images/journeys/recurring-journey-settings.png?fit=max&auto=format&n=lYMMkFJp3v40a2sJ&q=85&s=774b448a2c3789fcf5173ad71630d2aa" alt="Configuración de journey recurrente con reingreso de 7 días" width="648" height="1446" data-path="images/journeys/recurring-journey-settings.png" />
</Frame>

**Configuración inicial**

<Steps>
  <Step title="Configurar audiencia">
    Incluye tu segmento objetivo para que los usuarios elegibles puedan ingresar al journey en cualquier momento durante la semana.
  </Step>

  <Step title="Establecer reglas de reingreso">
    Establece las reglas de reingreso en "Sí, después de cierto tiempo: 7 días" para habilitar la recurrencia semanal.

    * El temporizador de reingreso comienza cuando el usuario **sale** del Journey, no cuando entró.
    * Un reingreso de 7 días garantiza que los usuarios reingresen a tiempo para la ventana de tiempo de la próxima semana.
    * La duración del reingreso debe ser **más larga que la duración de la ventana de tiempo** para evitar envíos duplicados.

    Ver [Usar ventanas de tiempo para envíos recurrentes](./journeys-actions#using-time-windows-for-recurring-sends) para detalles.
  </Step>
</Steps>

**Pasos del Journey**

<Frame caption="Flujo de journey recurrente">
  <img src="https://mintcdn.com/onesignal/lYMMkFJp3v40a2sJ/images/journeys/recurring-journey-steps.png?fit=max&auto=format&n=lYMMkFJp3v40a2sJ&q=85&s=12657ad8e9b0cfc2de32a9d87f9eed2c" alt="Flujo de journey recurrente con nodo de ventana de tiempo y paso de mensaje" width="598" height="1460" data-path="images/journeys/recurring-journey-steps.png" />
</Frame>

<Steps>
  <Step title="Agregar un nodo de ventana de tiempo (primer paso)">
    Configura la ventana de tiempo para filtrar tu día objetivo de la semana (por ejemplo, viernes).
    Los usuarios que ingresan al journey esperarán hasta el siguiente día coincidente.
  </Step>

  <Step title="Agregar tu mensaje después de la ventana de tiempo">
    Coloca el nodo de mensaje inmediatamente después de la ventana de tiempo para que se envíe cuando se alcance el día.
  </Step>

  <Step title="Finalizar el journey">
    Permite que los usuarios salgan después de que se envíe el mensaje. Con reingreso a los 7 días, volverán a unirse y se repetirá semanalmente.
  </Step>
</Steps>

<Tip>
  Actualiza el contenido del mensaje regularmente para evitar repetir la misma copia cada semana.
</Tip>

## Journeys progresivos (impulsados por eventos)

Escala el compromiso basándote en la progresión del usuario usando [eventos personalizados](./custom-events) y condiciones de [esperar hasta](./journeys-actions#wait-until).

| Configuración de Journey | Descripción                                                                                                                                                                                                                                                                                                                                                                |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | **Evento personalizado** = `Progression_Level`, con filtro `progression_level = 0`.                                                                                                                                                                                                                                                                                        |
| **Audiencia**            | Filtro de segmento opcional. Puedes ejecutar esto para todos los usuarios o restringir a un subconjunto; no se requieren etiquetas.                                                                                                                                                                                                                                        |
| **Reglas de salida**     | - Avanzaron a través de todo el journey.<br />- O cuando se alcanza el nivel máximo de progresión (por ejemplo, `progression_level = 3`).<br />- Opcionalmente: salir cuando expira un nodo **Esperar hasta**.<br />- Opcionalmente: ramificar desde un nodo **Esperar hasta** para etiquetar usuarios que no completan el evento, llevándolos a un journey de reenganche. |
| **Reglas de reingreso**  | No                                                                                                                                                                                                                                                                                                                                                                         |
| **Contenido**            | Mensajes basados en etapas que escalan a medida que los usuarios completan hitos (emails en este ejemplo).                                                                                                                                                                                                                                                                 |

<Frame caption="Flujo de journey de progresión">
  <img src="https://mintcdn.com/onesignal/86gjHZhU_WHClFAO/images/journeys/progression-journeys.png?fit=max&auto=format&n=86gjHZhU_WHClFAO&q=85&s=d1115ca7a2a7c06aa0cc0fa4b81a0533" alt="Flujo de journey progresivo con nodos wait-until para cada hito de nivel" width="690" height="1482" data-path="images/journeys/progression-journeys.png" />
</Frame>

**Pasos del Journey**

<Steps>
  <Step title="El usuario ingresa al journey">
    Todos los usuarios elegibles ingresan según las reglas de entrada.
    Activador: **Evento personalizado** `Progression_Level` con `progression_level = 0`.
    Inicio: **Inmediatamente**.
  </Step>

  <Step title="Nivel 1">
    * Esperar hasta que ocurra el evento personalizado `Progression_Level` con `progression_level = 1`.
    * Enviar: mensaje **¡Nivel 1 completado!**.
    * (Opcional) Aplicar expiración en el nodo de espera → salir al usuario si no se alcanza el hito.
    * (Opcional) Ramificar: si la expiración ocurre, etiquetar al usuario y enviarlo a un journey de reenganche.
  </Step>

  <Step title="Nivel 2">
    * Esperar hasta que ocurra el evento personalizado `Progression_Level` con `progression_level = 2`.
    * Enviar: mensaje **¡Nivel 2 completado, lo estás haciendo genial!**.
    * (Opcional) Aplicar expiración o ramificar/etiquetar para reenganche.
  </Step>

  <Step title="Nivel 3">
    * Esperar hasta que ocurra el evento personalizado `Progression_Level` con `progression_level = 3`.
    * Enviar: mensaje **¡Has alcanzado el nivel 3!**.
    * (Opcional) Aplicar expiración o ramificar/etiquetar para reenganche.
  </Step>

  <Step title="Salir">
    Finalizar el journey una vez que los usuarios completen el Nivel 3, o cuando expire un nodo Esperar hasta.
    Opcionalmente, usar rutas de ramificación/etiquetado para dirigir usuarios estancados a un track de reenganche.
    Programación: **Iniciar inmediatamente**, **Nunca se detiene**.
  </Step>
</Steps>

<Tip>
  Este método asegura que la progresión solo ocurra cuando ocurran señales de compromiso reales. Agregar lógica de expiración y ramificación/etiquetado te permite manejar con gracia a los usuarios estancados, ya sea saliéndolos o redirigiendo a un journey de reenganche.
</Tip>

***

## Ramificar un Journey por el botón de acción clicado

Dirige a los usuarios por diferentes rutas de Journey según qué botón de acción de notificación push tocaron. Este patrón usa [botones de acción](./action-buttons), un [evento personalizado](./custom-events) y un paso [Wait Until](./journeys-actions#wait-until) para ramificar a los usuarios por su clic de botón específico — no solo si hicieron clic o no.

<Info>
  Este ejemplo requiere código de sitio web o aplicación para capturar el clic del botón y enviar un evento personalizado. No se puede hacer completamente a través del panel de OneSignal.
</Info>

| Configuración de Journey | Descripción                                                                                                                |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------- |
| **Reglas de entrada**    | El usuario coincide con los criterios del segmento (por ejemplo, usuarios suscritos o un segmento específico de campaña).  |
| **Reglas de salida**     | Avanzaron a través de todo el journey.                                                                                     |
| **Reglas de reingreso**  | No                                                                                                                         |
| **Contenido**            | Envía un push con múltiples botones de acción, luego ramifica los mensajes de seguimiento según qué botón tocó el usuario. |

Las condiciones de comportamiento de mensaje de la [rama Sí/No](./journeys-actions#yesno-branch) integrada detectan si un usuario **hizo clic** o **recibió** un mensaje — pero no *qué* botón hizo clic. Para ramificar por botón específico, capturas el ID de acción del evento de clic y lo envías como una propiedad de Evento personalizado en la que el Journey puede ramificar.

<Steps>
  <Step title="Agrega botones de acción a tu push">
    Al crear el mensaje push en el Journey (o en una [plantilla](./templates)), abre **Opciones avanzadas > Botones de acción** y asigna un **ID de acción** único a cada botón.

    **Ejemplo**: Un push promocional con dos CTAs:

    * Botón 1: "Comprar ahora" → ID de acción: `shop_now`
    * Botón 2: "Más información" → ID de acción: `learn_more`

    Ver [Botones de acción](./action-buttons) para detalles completos de configuración.
  </Step>

  <Step title="Agrega un listener de clic y envía un Evento personalizado">
    En tu sitio web o aplicación, escucha el evento de clic en la notificación y envía un Evento personalizado que incluya el ID de acción como propiedad.

    <Note>
      El ejemplo del Web SDK requiere la versión `160500` o posterior. Los usuarios deben estar [conectados](./web-sdk-reference#login) para que los eventos personalizados sean rastreados.
    </Note>

    <CodeGroup>
      ```javascript Web SDK theme={null}
      OneSignalDeferred.push(function(OneSignal) {
        OneSignal.Notifications.addEventListener("click", function(event) {
          var actionId = event.result.actionId;
          if (actionId) {
            OneSignal.User.trackEvent("cta_clicked", { button: actionId });
          }
        });
      });
      ```

      ```kotlin Android SDK theme={null}
      OneSignal.Notifications.addClickListener { event ->
          val actionId = event.result.actionId
          if (actionId != null) {
              OneSignal.User.trackEvent("cta_clicked", mapOf("button" to actionId))
          }
      }
      ```

      ```swift iOS SDK theme={null}
      let listener = { (event: OSNotificationClickEvent) in
          if let actionId = event.result.actionId {
              OneSignal.User.trackEvent("cta_clicked", properties: ["button": actionId])
          }
      }
      OneSignal.Notifications.addClickListener(listener)
      ```
    </CodeGroup>

    Ver [Eventos personalizados](./custom-events) para requisitos y límites de eventos.
  </Step>

  <Step title="Agrega un paso Wait Until en el Journey">
    Después del paso de mensaje push en tu Journey:

    1. Agrega un paso **Wait Until**.
    2. Agrega una condición para cada botón: Evento personalizado `cta_clicked` donde la propiedad `button` es igual al ID de acción (por ejemplo, `shop_now`).
    3. Agrega condiciones adicionales para cada ID de acción en el que desees ramificar (por ejemplo, `learn_more`).
    4. Establece una **expiración** (por ejemplo, 3 días) para que los usuarios que no hagan clic en ningún botón continúen por una ruta de respaldo.

    Los usuarios siguen la rama para la **primera condición que cumplen**. Si no se cumple ninguna condición antes de la expiración, siguen la rama de expiración.
  </Step>

  <Step title="Agrega mensajes de seguimiento a cada rama">
    En cada rama después del paso Wait Until, agrega el mensaje o acción de seguimiento apropiado:

    * **Rama "Comprar ahora"**: Envía una recomendación de producto o código de descuento.
    * **Rama "Más información"**: Envía contenido educativo o una descripción general de funciones.
    * **Rama de expiración**: Envía un mensaje de reenganche o sal del Journey.
  </Step>
</Steps>

<Tip>
  Puedes encadenar múltiples pasos Wait Until para ramificar también en interacciones posteriores — no hay límite en el número de pasos Wait Until en un Journey.
</Tip>

***

## Preguntas frecuentes

### ¿Puedo programar el envío de un mensaje todos los días?

Sí. Agrega un nodo de [ventana de tiempo](./journeys-actions#time-window) como primer paso y configúralo para cada día de la semana con las horas en que deseas que se envíe el mensaje (por ejemplo, de 10 AM a 6 PM en la zona horaria del usuario). Luego establece las **reglas de reingreso** para reingresar después de un tiempo menor a un día pero **más largo que la duración de la ventana de tiempo** — por ejemplo, 12 horas para una ventana de 8 horas. Esto garantiza que los usuarios reingresen con suficiente antelación para alcanzar la ventana de tiempo del día siguiente sin el riesgo de un envío doble dentro de la misma ventana.

### ¿Puedo hacer pruebas A/B de diferentes mensajes en un Journey?

Sí. Agrega un nodo de [rama dividida](./journeys-actions#random-split) para dividir a los usuarios de manera uniforme (por ejemplo, 50/50). Coloca una plantilla de mensaje diferente en cada rama, luego compara las analíticas entre las dos plantillas después de que se ejecute el Journey.

### ¿Cómo limito cuántas veces un usuario puede ingresar a un Journey?

Usa una etiqueta (por ejemplo, `journey_count`) para rastrear las entradas. Incrementa la etiqueta cada vez que el usuario ingresa y agrega una regla de exclusión de audiencia que bloquee a los usuarios una vez que la etiqueta alcance tu límite deseado. Ver el ejemplo de [Journey de entrada limitada](#limited-entry-journey) arriba.

### ¿Por qué mi Journey recurrente envió en el día incorrecto?

El nodo de [ventana de tiempo](./journeys-actions#time-window) filtra por la zona horaria local del usuario si hay datos de zona horaria disponibles. Si un usuario no tiene datos de zona horaria, el mensaje se envía según la zona horaria predeterminada de tu app. Verifica que la configuración de tu ventana de tiempo y los datos de zona horaria del usuario sean correctos.

### ¿Cómo detengo un Journey en ejecución?

Establece el estado del Journey en **En pausa** o **Detenido** en la configuración del Journey. Los Journeys en pausa retienen a los usuarios en su paso actual; los Journeys detenidos sacan a todos los usuarios inmediatamente. Ver [Configuración del Journey](./journeys-settings) para detalles.

***

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Descripción general de Journeys" icon="route" href="./journeys-overview">
    Introducción a Journeys y cómo funcionan.
  </Card>

  <Card title="Acciones de Journey" icon="code-branch" href="./journeys-actions">
    Agrega pasos de espera, lógica de ramificación, ventanas de tiempo y rutas divididas.
  </Card>

  <Card title="Configuración de Journey" icon="gear" href="./journeys-settings">
    Configura reglas de entrada, reglas de salida, reingreso y programación.
  </Card>

  <Card title="Mensajes de Journey" icon="envelope" href="./journeys-messages">
    Configura pasos de push, email, SMS y mensajes in-app en un Journey.
  </Card>

  <Card title="Carrito abandonado" icon="cart-shopping" href="./abandoned-cart">
    Tutorial completo para crear un Journey de carrito abandonado.
  </Card>

  <Card title="Eventos personalizados" icon="bolt" href="./custom-events">
    Activa Journeys y pasa propiedades de eventos para personalización.
  </Card>

  <Card title="Análisis de Journey" icon="chart-bar" href="./journeys-analytics">
    Rastrea el rendimiento del Journey con métricas de entrega, actividad de usuarios e insights de conversión.
  </Card>
</Columns>

<AccordionGroup>
  <Accordion title="Recursos adicionales en el blog de OneSignal">
    * [Maximizando el compromiso del usuario: La sinergia de las notificaciones push y el email](https://onesignal.com/blog/use-push-notifications-and-email-together/)
    * [Impulsa valor consistentemente con Journeys](https://onesignal.com/blog/consistently-drive-value-with-journeys/)
    * [Aumenta el compromiso con email para Journeys multicanal](https://onesignal.com/blog/increase-engagement-with-email-for-cross-channel-journeys/)
    * [Mejora la retención con In-App y SMS para Journeys](https://onesignal.com/blog/improve-retention-with-in-app-and-sms-for-journeys/)
  </Accordion>
</AccordionGroup>
