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

# Event streams de mensagens no aplicativo

> Como utilizar event streams para capturar métricas de mensagens no aplicativo

Este documento explica as capacidades e uso de nossos eventos de [Mensagens no Aplicativo](./in-app-messages-setup). Você pode rastrear estatísticas de engajamento essenciais cada vez que um usuário clica ou visualiza essas mensagens, incluindo cliques em nível de bloco e exibições específicas de página.

## Eventos de mensagens no aplicativo

Existem três tipos [`event.kind`](./event-streams-data#event-kind) de Eventos de Mensagens no Aplicativo:

* Impressão no aplicativo - `message.iam.impression`
* Clique no aplicativo - `message.iam.clicked`
* Página exibida no aplicativo - `message.iam.page_displayed`

Esses eventos são acionados quando um usuário abre e interage com uma mensagem no aplicativo no dispositivo.

### Impressão no aplicativo

Este evento é acionado assim que a mensagem termina de carregar e é exibida na tela.

Ao usar [carrosséis](./design-your-in-app-message#carousels), você pode obter o nome e UUID da página específica que é mostrada usando `event.data.page_name` e `event.data.page_id`.

### Clique no aplicativo

Este evento é aplicável a qualquer elemento ou bloco com uma ação de clique (também referido como "target"). Você pode obter o nome e UUID do target específico que é clicado usando `event.data.target_name` e `event.data.target_id`, bem como a página à qual o target pertence usando `event.data.page_name` e `event.data.page_id`.

Veja [Ações de clique em mensagens no aplicativo](./iam-click-actions) para detalhes.

### Página exibida no aplicativo

Este é um evento que é aplicável apenas a [carrosséis](./design-your-in-app-message#carousels). Você pode obter o nome e UUID da página ou card específico que é mostrado usando `event.data.page_name` e `event.data.page_id`. A impressão para o primeiro card é acionada assim que o documento termina de carregar. As impressões de página subsequentes são acionadas ao deslizar.

## Dados de evento de mensagens no aplicativo

Cada `event.kind` pode ter dados de evento adicionais dependendo de como você cria a mensagem no aplicativo.

<ParamField path="event.data.page_name" type="string">
  O nome da página ou card que é exibido quando o `event.kind` é `clicked` ou `page_displayed`. Não disponível para eventos `impression`.

  O `page_name` é útil para saber qual página foi exibida e o que foi clicado nessa página.

  Os nomes das páginas são padronizados como "Card 1", "Card 2", etc., mas você pode alterar os nomes dentro do Editor de Blocos.

  <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">
  Um identificador único para a página. Útil para casos de uso de [carrossel](./design-your-in-app-message#carousels) e um card antigo é excluído ou substituído por um novo card.
</ParamField>

<ParamField path="event.data.target_name" type="string">
  O nome do botão ou elemento de bloco de imagem. Você deve definir [ações de clique](./iam-click-actions).
</ParamField>

<ParamField path="event.data.target_id" type="string UUID v4">
  Um identificador único para o botão ou elemento de bloco de imagem. Você deve definir [ações de clique](./iam-click-actions). Isso é útil ao usar um [carrossel](./design-your-in-app-message#carousels) e um card antigo é excluído ou substituído por um novo card.
</ParamField>

## Crie seu Event Stream de mensagens no aplicativo

### Configurar event streams

Revise as instruções de [Configuração de Event Stream](./event-streams#setup) para orientação sobre como configurar e personalizar seu event stream. O seguinte fornece etapas específicas de IAM para configurar seu event stream (etapa 3).

## Garanta que o target que você deseja rastrear esteja configurado corretamente

Para aproveitar nomes personalizados no corpo de uma solicitação de event streams, você deve especificar manualmente um novo nome personalizado no editor de Blocos ou HTML. Mensagens no Aplicativo que existiram antes do lançamento de nomes personalizados não poderão expor valores `page_name` e `target_name` no event stream até que a Mensagem no Aplicativo seja atualizada com nomes personalizados para cada página ou bloco.

Depois que a Mensagem no Aplicativo for atualizada, as solicitações de event stream que forem acionadas a partir daquele momento terão acesso a esses valores. A qualquer momento, os valores `page_name` e `target_name` refletirão o estado de nomes personalizados da Mensagem no Aplicativo naquele momento, que pode mudar se a Mensagem no Aplicativo for atualizada novamente.

<Tabs>
  <Tab title="Editor de blocos">
    Todos os três eventos podem ser usados com este editor. Ao usar o editor de blocos, certifique-se de que o target contenha uma [ação de clique em mensagens no aplicativo](./iam-click-actions). Um target inclui imagens, botões, o botão de fechar e o bloco de fundo. Os blocos de texto atualmente não suportam ações de clique e não estão incluídos.

    Os nomes personalizados dos targets devem ser únicos para evitar confusão na experiência do painel.
  </Tab>

  <Tab title="Editor HTML">
    Apenas os eventos de Impressão no aplicativo e Clique podem ser usados com este editor. Ao usar o editor HTML, você pode rastrear cliques em qualquer tipo de elemento, não apenas botões e imagens. Existem 2 requisitos:

    1. O elemento deve ter o atributo `data-onesignal-unique-label="<insert_value>"` para rastrear um target
    2. O elemento deve ter um event listener aplicado a ele que chama um método da [biblioteca JS de mensagens no aplicativo](./in-app-message-api) embutida, também conhecida como `OneSignalIamAPI`.

    Nota: Para evitar confusão, certifique-se de que os nomes dos targets sejam únicos. Para exclusividade crítica, como relatórios internos personalizados, use o `target_id`, que é garantido como único pelo OneSignal. Observe que usar atributos `data-onesignal-unique-label` com o mesmo rótulo em múltiplos elementos mesclará suas análises. Alterar esses rótulos retém dados anteriores sob o rótulo original, com novos dados atribuídos ao novo rótulo. Para rastreamento preciso, priorize `target_id`.

    Por exemplo:

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

    **Entrada de Exemplo:**

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

    **Saída de Exemplo:**

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

### Utilize IDs únicos

Melhor Prática: Ao usar Event Streams para fins de análise, use `message.id`, `page_id` e `target_id` para validar exclusividade. Nomes personalizados podem ser usados, mas são destinados a ajudar a diferenciar entre elementos em uma IAM em um formato legível por humanos. Se você tiver múltiplas mensagens no aplicativo, use `message.id` para diferenciá-las.

### Use nomes claros no editor de blocos

Use nomes significativos e únicos para todos os títulos, cards e blocos de mensagens no aplicativo para simplificar a análise de dados. Para renomear um card em um carrossel, selecione a aba que deseja atualizar e selecione o menu suspenso "Options" ao lado das abas do card. Você verá uma opção para renomear o card.

Para renomear um bloco, selecione o menu de opções de três pontos no canto superior direito de cada bloco para abrir o modal de renomeação. Todos os nomes personalizados serão refletidos no relatório do painel e event stream, se aplicável. Nomes personalizados não aparecerão em event streams a menos que sejam definidos e salvos. Se você tiver IAMs ativas e tiver configurado recentemente um novo event stream de IAM, você vai querer garantir que essas IAMs tenham nomes personalizados significativos para uma análise mais limpa.

***
