# Entrada baseada em gatilho

Uma **Entrada baseada em gatilho** inicia a jornada quando um usuário realiza um evento específico (por exemplo, executa uma ação específica).
<Aside type="tip">
Você pode adicionar múltiplos pontos de Entrada baseada em gatilho. Nesse caso, qualquer um deles iniciará a jornada.

<img src="/journey-elements-README-6.webp" alt="Múltiplos pontos de Entrada baseada em gatilho em uma única tela de jornada"/>
</Aside>

Para configurar uma Entrada baseada em gatilho, localize o elemento de entrada na tela e selecione o Evento que servirá como gatilho.

> Para mais informações sobre como configurar eventos, consulte a documentação de [Eventos](/pt/product/audience-data-and-segmentation/events/).

Se o Evento selecionado tiver atributos, você pode restringir as condições de entrada usando esses atributos. Clique em **Adicionar condição** ao editar o elemento, depois escolha um atributo na lista suspensa e defina seu operador e valor.

> Para os operadores disponíveis, consulte [Operadores de tag por tipo](/pt/product/audience-data-and-segmentation/segmentation/create-segments/by-tags/#tag-operators-by-type).

<img src="/journey-elements-trigger-based-entry-1.webp" alt="Selecione o evento que servirá como gatilho"/>

<Aside type="caution" title="Importante">
- Inclua **o HWID (ID de hardware) ou o ID de Usuário** em sua solicitação de API [`/postEvent`](/pt/developer/api-reference/user-centric-api#postevent) para o **Evento de Início**. Se você enviar apenas um ID de Usuário, o Pushwoosh resolve o dispositivo do usuário automaticamente.
- A entrada requer que o usuário tenha pelo menos um dispositivo registrado. Um ID de Usuário sem dispositivo associado não pode entrar na jornada.
</Aside>

## Defina quem entra na campanha

Defina qual(is) usuário(s) deve(m) entrar na jornada quando um evento específico ocorrer.

Use o menu suspenso **Quem entra na campanha?** para escolher entre os dois modos disponíveis:

### Usuários que realizam o evento (padrão)

O usuário que dispara o evento é quem entra na jornada.

![Selecione os usuários que realizam o evento](/journey-elements-trigger-based-entry-7.webp)

**Exemplo**
Um usuário conclui uma compra (evento `CheckoutSuccess`). Esse mesmo usuário (por exemplo, `ID de Usuário: 123`) entra em uma jornada pós-compra que inclui uma mensagem de agradecimento, recomendações de produtos ou uma pesquisa de satisfação.

### Usuários de um atributo de evento

Em vez de inscrever o usuário que disparou o evento, você pode passar um ou mais [`IDs de Usuário`](/pt/product/pushwoosh-knowledge-hub/users-userids/) em um atributo de evento personalizado. Os usuários listados nesse atributo entrarão na jornada.

Para isso, selecione **Usuários de um atributo de evento** e escolha uma chave de atributo (por exemplo, `recipient_ids`, `target_user_id`). Essa chave deve corresponder à estrutura do seu payload de evento.

![Selecione usuários de um atributo de evento](/journey-elements-trigger-based-entry-8.webp)

<Aside type="caution" title="Requer assistência de um desenvolvedor">
Para usar o modo **Usuários de um atributo de evento** corretamente, seu aplicativo ou backend deve enviar a estrutura de payload correta. Por favor, compartilhe os exemplos abaixo com sua equipe de desenvolvimento.
</Aside>

##### Exemplo de payload (usuário único)

```json
{
  "application": "XXXXX-XXXXX",
  "event": "invitation",         
  "attributes": {
      "targetId": 321
  },
  "userId": 123
}

```

O usuário `321` (de `targetId`) entra na jornada.

##### Exemplo de payload (múltiplos usuários)

Se você fornecer múltiplos IDs de usuário, use um array JSON de strings.

```javascript
{
    "application": "XXXXX-XXXXX",
    "event": "invitation",         
    "attributes": {
        "targetIds": [1,2,3,4]
    },
    "userId": 123
}

```

Os usuários `1`, `2`, `3` e `4` entrarão na jornada.

#### Casos de uso

**Notificações de comentários**

Quando alguém comenta na postagem de um usuário, o dono da postagem é notificado.

**Exemplo:** Um evento de comentário inclui o ID do dono da postagem em um atributo `target_user_id`. Esse usuário entra em uma jornada para receber a notificação.

**Programas de indicação**

Quando um usuário indicado se cadastra ou faz uma compra, a pessoa que o indicou é adicionada à jornada.

**Exemplo:** O usuário `123` dispara o evento, e o indicador `456` (do atributo `referrer_id`) entra em uma campanha de recompensa.

**Compras de presente**

Quando um usuário compra um presente, o destinatário é adicionado a uma jornada usando o `recipient_user_id` do payload do evento.

**Exemplo** O usuário `123` compra um presente para o usuário `456`, que então recebe uma notificação, um fluxo de integração ou uma mensagem de agradecimento.

## Definir a disponibilidade da entrada

Controle quando os usuários podem entrar em uma jornada por meio de uma entrada baseada em gatilho. Você tem duas opções:

*   **Permitir entrada a qualquer momento**: Os usuários podem entrar na jornada sempre que o evento de gatilho ocorrer.
*   **Limitar a entrada a um período específico**: Os usuários só podem entrar na jornada se o evento de gatilho acontecer dentro do intervalo de datas selecionado.

    Ao limitar a entrada, selecione a **data de início**, a **data de término** e o **fuso horário**. A janela de entrada começa às **00:00** na data de início e termina às **23:59** na data de término, com base no fuso horário escolhido.

![Definir a disponibilidade da entrada](/journey-elements-trigger-based-entry-2.webp)

## Controle quantas sessões um usuário pode ter ao mesmo tempo

Decida se cada usuário pode participar de apenas uma jornada por vez, ou participar de várias jornadas em paralelo.

Escolha uma das seguintes opções no menu suspenso:

*   Uma sessão ativa por usuário
*   Múltiplas sessões ativas por usuário

#### Uma sessão ativa por usuário

Cada usuário pode ter apenas uma sessão ativa na campanha. Eles devem concluir ou sair da sessão atual antes de iniciar uma nova.

![Selecione uma sessão ativa por usuário](/journey-elements-trigger-based-entry-3.webp)

##### Casos de uso

*   **Fluxos de integração** onde um usuário não deve reiniciar até que termine a jornada atual
*   **Lembretes de renovação de assinatura** onde os usuários não devem receber notificações sobrepostas
*   **Ofertas ou testes por tempo limitado** onde apenas uma execução de campanha ativa é permitida por usuário
*   **Campanhas de coleta de feedback** para garantir que cada usuário forneça sua opinião uma vez antes de reentrar

#### Múltiplas sessões ativas por usuário

Os usuários podem ter mais de uma sessão ativa em uma campanha. Cada sessão deve ser identificada por um atributo de evento único (por exemplo, `order_id`, `product_id`).

Para configurar isso:

1.  Selecione **Múltiplas sessões ativas por usuário** no menu suspenso.

2.  Escolha um atributo identificador de sessão (por exemplo, `order_id`, `product_id`). Este atributo distinguirá uma sessão da outra.

![Selecione Múltiplas sessões ativas por usuário](/journey-elements-trigger-based-entry-4.webp)

<Aside type="caution" title="Importante">
Este atributo deve ser incluído em todos os eventos relevantes da jornada (por exemplo, em **Aguardar por gatilho** ou **Metas de Conversão**). Se o atributo identificador de sessão estiver ausente, o sistema não poderá vincular o evento a uma sessão específica. Em vez disso, o evento será aplicado a todas as sessões ativas para aquele usuário.
</Aside>

**Exemplo**

*   `OrderPlaced` com `order_id = "1001"` → inicia a **Sessão 1**

*   `OrderPlaced` com `order_id = "1002"` → inicia a **Sessão 2**

Se um evento `OrderReady` for enviado sem `order_id`, tanto a Sessão 1 quanto a Sessão 2 serão marcadas como "prontas", mesmo que apenas um pedido esteja realmente pronto.

##### Casos de uso

*   **Compras de e-commerce**: cada pedido inicia sua própria jornada, para que múltiplos pedidos de um usuário possam ser rastreados independentemente. *(atributo: `order_id`)*
*   **Programas de indicação**: cada indicação cria uma nova sessão, permitindo que um usuário indique vários amigos. *(atributo: `referral_id`)*
*   **Programas de fidelidade**: rastreie pontos ou recompensas de diferentes transações que ocorrem em paralelo. *(atributo: `transaction_id`)*
*   **Reservas de ingressos**: cada reserva inicia sua própria jornada, para que os usuários possam gerenciar múltiplos ingressos de uma vez. *(atributo: `booking_id`)*
*   **Agendamento de compromissos**: cada compromisso é tratado como uma sessão separada. *(atributo: `appointment_id`)*

## Controle se os usuários podem reentrar na campanha

Decida o que acontece quando um usuário que já está na jornada dispara o evento de entrada novamente.

Escolha uma das seguintes opções no menu suspenso:

*   Não permitir reentrada (padrão)
*   Permitir reentrada

#### Não permitir reentrada

Usuários que já estão na jornada não reentrarão nela. Se um usuário estiver em uma sessão ativa e disparar o evento de entrada novamente, o novo gatilho é ignorado e o usuário continua sua sessão atual.

**Casos de uso**

*   **Séries de boas-vindas e integração** onde um novo usuário passa pela jornada uma vez do início ao fim e mantém seu lugar se disparar o evento novamente, em vez de ser enviado de volta ao início
*   **Ofertas únicas** onde cada cliente deve receber uma promoção ou desconto apenas uma vez, mesmo que dispare o evento várias vezes
*   **Fluxos educacionais e de nutrição** onde os assinantes continuam avançando no conteúdo sem reiniciar e receber os mesmos e-mails novamente

#### Permitir reentrada

Usuários que já estão na jornada serão removidos de sua sessão atual e reinseridos com uma nova sessão. Cada vez que um usuário dispara o evento de entrada, sua sessão atual termina e uma nova começa.

**Casos de uso**

*   **Alertas de queda de preço** onde o reinício deve captar o novo preço, não continuar notificando sobre o preço desatualizado da sessão anterior
*   **Campanhas de reconquista** onde um usuário inativo que retorna deve sempre começar pela primeira mensagem da sequência

<Aside type="note">
A reentrada controla o que acontece com os usuários que já estão na jornada. Não afeta quantas sessões um usuário pode executar em paralelo. Isso é configurado em [Controle quantas sessões um usuário pode ter ao mesmo tempo](#control-how-many-sessions-a-user-can-have-at-the-same-time).
</Aside>

Depois de configurar o elemento de entrada, clique em **Aplicar** para salvar as alterações.

## Cenário de exemplo: Jornada de pedido de e-commerce com múltiplas sessões

Imagine que você queira enviar notificações para cada pedido que um usuário faz. Cada pedido deve ter sua própria sessão de jornada. Para fazer isso, você usará o evento `OrderPlaced` como gatilho e o atributo `order_id` como identificador de sessão.

1.  Crie o evento `OrderPlaced` e certifique-se de que ele inclua o atributo `order_id`. [Saiba mais sobre como criar eventos](/pt/product/audience-data-and-segmentation/events/#implementation)

![Criar evento OrderPlaced](/journey-elements-trigger-based-entry-5.webp)
2.  Defina este evento como o gatilho para sua jornada.

![Defina este evento como o gatilho para sua jornada](/journey-elements-trigger-based-entry-6.webp)

3.  Nas configurações de sessão, selecione **Múltiplas sessões ativas por usuário** e escolha `order_id` como o identificador de sessão.

![selecione Múltiplas sessões ativas por usuário](/journey-elements-trigger-based-entry-9.webp)

Nesta configuração, cada novo pedido inicia uma sessão de jornada separada.

*   `OrderPlaced` com `order_id = 1001` inicia a **Sessão 1**
*   `OrderPlaced` com `order_id = 1002` inicia a **Sessão 2**

4.  Em seguida, adicione um [elemento Aguardar por Gatilho](/pt/product/customer-journey/journey-elements/flow-controls/wait-for-trigger/) para rastrear quando um pedido está pronto para retirada ou entrega. Use o evento `OrderReady`, que também deve incluir o mesmo `order_id`.
    Isso garante que cada pedido seja atualizado na sessão correta:
*   `OrderReady` com `order_id = 1001` aplica-se apenas à **Sessão 1**
*   `OrderReady` com `order_id = 1002` aplica-se apenas à **Sessão 2**
<Aside type="caution" title="Importante">
Se o evento **não** incluir `order_id`, o sistema não pode saber a qual sessão ele pertence, e o evento será aplicado a todas as sessões ativas para aquele usuário.
</Aside>

![Use o evento OrderReady no elemento Aguardar por Gatilho](/journey-elements-trigger-based-entry-10.webp)

5.  Finalmente, adicione uma [meta de conversão](/pt/product/customer-journey/journey-settings/#conversion-goals), por exemplo, o evento `OrderDelivered`. Este evento também deve incluir o mesmo `order_id` para que possa ser correspondido à sessão correta.
*   Se `OrderDelivered` incluir `order_id = "1001"`, ele registra uma conversão para a **Sessão 1**.

*   Se `OrderDelivered` incluir `order_id = "1002"`, ele registra uma conversão para a **Sessão 2**.
<Aside type="caution" title="Importante">
Se `order_id` estiver ausente, a conversão será aplicada a todas as sessões ativas para aquele usuário em vez de apenas à pretendida.
</Aside>

![selecione Múltiplas sessões ativas por usuário](/journey-elements-trigger-based-entry-11.webp)