> ## 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.

# Flujos de eventos de mensajes dentro de la aplicación

> Cómo utilizar flujos de eventos para capturar métricas de mensajes dentro de la aplicación

Este documento explica las capacidades y el uso de nuestros eventos de [Mensajes Dentro de la Aplicación](./in-app-messages-setup). Puedes rastrear estadísticas de engagement esenciales cada vez que un usuario hace clic o visualiza estos mensajes, incluyendo clics a nivel de bloque y visualizaciones específicas de página.

## Eventos de mensajes dentro de la aplicación

Hay tres tipos [`event.kind`](./event-streams-data#event-kind) de Eventos de Mensajes Dentro de la Aplicación:

* Impresión dentro de la aplicación - `message.iam.impression`
* Clic dentro de la aplicación - `message.iam.clicked`
* Página dentro de la aplicación mostrada - `message.iam.page_displayed`

Estos eventos se disparan cuando un usuario abre e interactúa con un mensaje dentro de la aplicación en el dispositivo.

### Impresión dentro de la aplicación

Este evento se dispara tan pronto como el mensaje termina de cargar y se muestra en pantalla.

Cuando se usan [carruseles](./design-your-in-app-message#carousels), puedes obtener el nombre y UUID de la página específica que se muestra usando `event.data.page_name` y `event.data.page_id`.

### Clic dentro de la aplicación

Este evento es aplicable a cualquier elemento o bloque con una acción de clic (también referido como "target" u objetivo). Puedes obtener el nombre y UUID del objetivo específico en el que se hizo clic usando `event.data.target_name` y `event.data.target_id`, así como la página a la que pertenece el objetivo usando `event.data.page_name` y `event.data.page_id`.

Ve [Acciones de clic dentro de la aplicación](./iam-click-actions) para más detalles.

### Página dentro de la aplicación mostrada

Este es un evento que solo es aplicable a [carruseles](./design-your-in-app-message#carousels). Puedes obtener el nombre y UUID de la página o tarjeta específica que se muestra usando `event.data.page_name` y `event.data.page_id`. La impresión para la primera tarjeta se dispara tan pronto como el documento termina de cargar. Las impresiones de páginas subsiguientes se disparan al deslizar.

## Datos de eventos de mensajes dentro de la aplicación

Cada `event.kind` puede tener datos de eventos adicionales dependiendo de cómo crees el mensaje dentro de la aplicación.

<ParamField path="event.data.page_name" type="string">
  El nombre de la página o tarjeta que se muestra cuando el `event.kind` es `clicked` o `page_displayed`. No disponible para eventos de `impression`.

  El `page_name` es útil para saber qué página se mostró y en qué se hizo clic en esa página.

  Los nombres de páginas tienen como valor predeterminado "Card 1", "Card 2", etc. pero puedes cambiar los nombres dentro del Editor de Bloques.

  <Frame>
    <img src="https://mintcdn.com/onesignal/Z6xkXGfmy814If53/images/docs/e0862074b7ea2c064808035d2028410dae6aecc4bdf9ae4c4c83eeee1ac8d643-Screenshot_2025-01-17_at_1.30.34_PM.png?fit=max&auto=format&n=Z6xkXGfmy814If53&q=85&s=44d2b05d410b28b9e6fec94fd979ec5b" width="1040" height="826" data-path="images/docs/e0862074b7ea2c064808035d2028410dae6aecc4bdf9ae4c4c83eeee1ac8d643-Screenshot_2025-01-17_at_1.30.34_PM.png" />
  </Frame>
</ParamField>

<ParamField path="event.data.page_id" type="string UUID v4">
  Un identificador único para la página. Útil para casos de uso de un [carrusel](./design-your-in-app-message#carousels) y una tarjeta antigua se elimina o reemplaza con una nueva tarjeta.
</ParamField>

<ParamField path="event.data.target_name" type="string">
  El nombre del botón o elemento de bloque de imagen. Debes configurar [acciones de clic](./iam-click-actions).
</ParamField>

<ParamField path="event.data.target_id" type="string UUID v4">
  Un identificador único para el botón o elemento de bloque de imagen. Debes configurar [acciones de clic](./iam-click-actions). Esto es útil cuando se usa un [carrusel](./design-your-in-app-message#carousels) y una tarjeta antigua se elimina o reemplaza con una nueva tarjeta.
</ParamField>

## Crea tu Flujo de Eventos de mensajes dentro de la aplicación

### Configurar flujos de eventos

Revisa las instrucciones de [Configuración de Flujo de Eventos](./event-streams#setup) para orientación sobre cómo configurar y personalizar tu flujo de eventos. Lo siguiente proporciona pasos específicos de IAM para configurar tu flujo de eventos (paso 3).

## Asegúrate de que el objetivo que deseas rastrear esté configurado correctamente

Para aprovechar los nombres personalizados en el cuerpo de una solicitud de flujos de eventos, debes especificar manualmente un nuevo nombre personalizado en el Editor de Bloques o HTML. Los Mensajes Dentro de la Aplicación que han existido antes del lanzamiento de nombres personalizados no podrán exponer valores de `page_name` y `target_name` en el flujo de eventos hasta que el Dentro de la Aplicación se actualice con nombres personalizados para cada página o bloque.

Después de que el Dentro de la Aplicación se haya actualizado, las solicitudes de flujo de eventos que se activen a partir de ese momento tendrán acceso a esos valores. En cualquier momento dado, los valores de `page_name` y `target_name` reflejarán el estado de nombres personalizados del Dentro de la Aplicación en ese momento, que puede cambiar si el Dentro de la Aplicación se actualiza nuevamente.

<Tabs>
  <Tab title="Editor de bloques">
    Los tres eventos se pueden usar con este editor. Cuando uses el editor de bloques, asegúrate de que el objetivo contenga una [acción de clic dentro de la aplicación](./iam-click-actions). Un objetivo incluye imágenes, botones, el botón de cerrar y el bloque de fondo. Los bloques de texto actualmente no admiten acciones de clic y no están incluidos.

    Los nombres personalizados de objetivos deben ser únicos para evitar confusión en la experiencia del panel.
  </Tab>

  <Tab title="Editor HTML">
    Solo los eventos de Impresión dentro de la aplicación y Clic se pueden usar con este editor. Cuando uses el editor HTML, puedes rastrear clics en cualquier tipo de elemento, no solo botones e imágenes. Hay 2 requisitos:

    1. El elemento debe tener el atributo `data-onesignal-unique-label="<insert_value>"` para rastrear un objetivo
    2. El elemento debe tener un detector de eventos aplicado que llame a un método de la [biblioteca JS dentro de la aplicación](./in-app-message-api) integrada, también conocida como `OneSignalIamAPI`.

    Nota: Para evitar confusión, asegúrate de que los nombres de objetivos sean únicos. Para unicidad crítica, como informes internos personalizados, usa el `target_id`, que OneSignal garantiza que sea único. Ten en cuenta que usar atributos `data-onesignal-unique-label` con la misma etiqueta en múltiples elementos fusionará sus análisis. Cambiar estas etiquetas retiene datos anteriores bajo la etiqueta original, con nuevos datos asignados a la nueva etiqueta. Para un seguimiento preciso, prioriza `target_id`.

    Por ejemplo:

    <CodeGroup>
      ```html html theme={null}
      // For elements that do something like tag a user or prompt a push do something like this:

      <body>
        <button data-onesignal-unique-label="my-tag-user-button">Tag User</button>
      </body>
      <script>
        document
          .querySelector("button[data-onesignal-unique-label="my-tag-user-button")
          .addEventListener("click", function(e) {
            OneSignalIamApi.tagUser(e, { fiz: "baz" });
           });
      </script>

      // or for elements that don't require any specific functionality of the OneSignalIamApi other than click tracking, just call trackClick

      <body>
        <button data-onesignal-unique-label="my-button">Click Here</button>
      </body>
      <script>
        document
          .querySelector("button[data-onesignal-unique-label="my-button")
          .addEventListener("click", function(e) {
            OneSignalIamApi.trackClick(e);
           });
      </script>
      ```
    </CodeGroup>

    **Sample Input:**

    <CodeGroup>
      ```json json theme={null}
      {
        "page_name":"{{ event.data.page_name }}",
        "page_id":"{{ event.data.page_id }}",
        "target_id":"{{ event.data.target_id }}",
        "target_name":"{{ event.data.target_name }}",
        "iam_id":"{{ message.id }}",
        "iam_name":"{{ message.name }}",
        "event_kind": "{{ event.kind }}"
      }
      ```
    </CodeGroup>

    **Sample Output:**

    <CodeGroup>
      ```json json theme={null}
      {
        "page_name" : "html_page",
        "page_id": "d8b28eda-add3-59f8-a12d-07c70642363b" ,
        "target_id": "6bab1bd9-4de6-557b-b5ed-ecb85baed f89",
        "target_name": "my-location-prompt-button",
        "iam_id": "bb6329b6-f81a-44aa-a571-30ef6746de0c",
        "iam_name": "html iam naming",
        "event_kind": "message. iam.clicked"
      }
      ```
    </CodeGroup>
  </Tab>
</Tabs>

### Utilizar IDs únicos

Mejor Práctica: Cuando uses Flujos de Eventos para propósitos de análisis, usa `message.id`, `page_id` y `target_id` para validar unicidad. Los nombres personalizados se pueden usar, pero están destinados a ayudar a diferenciar entre elementos en un IAM en un formato legible para humanos. Si tienes múltiples mensajes dentro de la aplicación, usa `message.id` para diferenciarlos.

### Usar nombres claros en el editor de bloques

Usa nombres significativos y únicos para todos los títulos, tarjetas y bloques de mensajes dentro de la aplicación para simplificar el análisis de datos. Para renombrar una tarjeta en un carrusel, selecciona la pestaña que deseas actualizar y selecciona el menú desplegable "Opciones" junto a las pestañas de tarjetas. Verás una opción para renombrar la tarjeta.

Para renombrar un bloque, selecciona el menú de opciones de tres puntos en la esquina superior derecha de cada bloque para abrir el modal de renombrado. Todos los nombres personalizados se reflejarán en el informe del panel y el flujo de eventos, si es aplicable. Los nombres personalizados no aparecerán en los flujos de eventos a menos que estén configurados y guardados. Si tienes IAMs activos y recientemente configuraste un nuevo flujo de eventos de IAM, querrás asegurarte de que estos IAMs tengan nombres personalizados significativos para un análisis más limpio.

***
