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

# Mensagens de fallback: Garantindo entrega entre canais

> Implemente uma estratégia de fallback com o OneSignal para garantir que mensagens críticas sejam entregues por email ou SMS quando notificações push falharem. Aprenda como configurar mensagens entre canais usando Jornadas, APIs e segmentação para engajamento confiável do usuário.

## Por que usar um método de fallback?

Uma mensagem nem sempre pode ser enviada ou recebida através de um determinado canal. Razões comuns incluem:

* O usuário não tem esse canal disponível (por exemplo, sem endereço de email ou número de telefone, ou não se inscreveu para push)
* A mensagem falhou ao enviar devido a erros de entrega ou tokens inválidos
* Usuários desabilitando ou revogando permissões
* Dispositivos estando offline ou em estados restritos (por exemplo, Modo Foco do iOS)
* Aplicativos desinstalados ou tokens push expirados

O OneSignal suporta fallback em **todos os canais**—Push, In-App, Email e SMS—para que você possa garantir que comunicações críticas ainda alcancem os usuários, independentemente do canal original.

***

## Visão geral da estratégia de fallback

<Steps>
  <Step title="Enviar mensagem primária">
    Tente entregar a mensagem através do seu canal preferido (por exemplo, Push, Email ou SMS).
  </Step>

  <Step title="Aguardar confirmação de entrega ou interação">
    Use dados de entrega ou lógica baseada em eventos para determinar se a mensagem foi entregue, clicada ou aberta com sucesso. Em Jornadas, isso acontece automaticamente usando [nós Wait Until](./journeys-actions#wait-until).
  </Step>

  <Step title="Acionar canal de fallback">
    Se a mensagem não reportou uma [entrega confirmada](./confirmed-delivery) ou não foi clicada/aberta, envie a mesma mensagem através de outro canal disponível (por exemplo, Email, SMS ou Push).
  </Step>
</Steps>

***

## Requisitos

* [External ID](./users#external-id)
* Os usuários devem ter pelo menos uma [assinatura](./subscriptions) válida para cada canal (email, telefone, token push)

***

## Exemplos de configuração

### Opção 1: Jornadas do OneSignal

Use as [Jornadas do OneSignal](./journeys-overview) para automatizar visualmente a lógica de fallback sem código.

* Interface de arrastar e soltar
* Suporta confirmação de entrega (com [Entrega Confirmada](./confirmed-delivery))
* Combina Push, In-App, Email e SMS
* Automatiza fallback sem integração de API

#### Configuração recomendada

Em vez de ramificação sim/não, use um nó [**Wait Until**](./journeys-actions#wait-until):
Configure-o para **aguardar até que a mensagem seja entregue**
*(entrega confirmada aplica-se apenas a push)*, **clicada** ou **aberta** *(apenas email)*.

* Defina um **período de expiração** para evitar esperas indefinidas
* Após a expiração, envie a mensagem de fallback através de outro canal

<Frame caption="Mostra exemplo de jornada de fallback.">
  <img src="https://mintcdn.com/onesignal/gdr6jv21nTHUt4_t/images/journeys/fallback-journey.png?fit=max&auto=format&n=gdr6jv21nTHUt4_t&q=85&s=d488ae23cd10df4e5ac9979d477d08a4" width="600" data-path="images/journeys/fallback-journey.png" />
</Frame>

<Note> A Entrega Confirmada deve ser habilitada por plataforma. Consulte [Entrega Confirmada](./confirmed-delivery). </Note>

***

### Opção 2: Fluxo de trabalho de fallback personalizado (Avançado)

Você pode construir um sistema de fallback usando a [API REST do OneSignal](/reference/create-message) e a [API View Message](/reference/view-message), mas requer implementação cuidadosa.

<Steps>
  <Step title="Enviar uma mensagem para um usuário">
    Envie uma notificação para um único usuário usando seu `external_id` e canal de destino.

    ```json json theme={null}
    POST https://onesignal.com/api/v1/notifications
    {
      "include_aliases": {
        "external_id": ["user123"]
      },
      "target_channel": "push",
      "contents": { "en": "Your order has shipped!" }
    }
    ```
  </Step>

  <Step title="Verificar status de entrega">
    Consulte a [API View Message](/reference/view-message) usando o `notification_id` para determinar se foi entregue.

    ```json json theme={null}
    GET https://onesignal.com/api/v1/notifications/{notification_id}
    ```

    Se a mensagem falhou ou mostra `"received": 0`, prepare-se para reenviar através de outro canal.
  </Step>

  <Step title="Enviar mensagem de fallback">
    Antes de reenviar, verifique os canais disponíveis do usuário recuperando seu registro (via [API View User](/reference/view-user)).
    Em seguida, envie a mensagem novamente através do próximo canal disponível (Email, SMS ou Push).
  </Step>
</Steps>

<Warning>
  Este método é complexo e **não recomendado** para a maioria dos casos de uso. Requer rastreamento no nível da mensagem, buscas de usuários e gerenciamento manual da lógica de fallback.
</Warning>

***

### Opção 3: Event Streams

Use [Event Streams](./event-streams) para monitorar eventos de mensagens em tempo real. Isso permite que sistemas externos reajam automaticamente quando uma mensagem falha.

Fluxo comum:

1. Envie uma notificação push ou email
2. Capture eventos `notification_failed` ou `delivery_failed` através do Event Streams
3. Determine se o usuário pode receber outro canal (verificando suas assinaturas disponíveis e inscritas através da [API View User](/reference/view-user))
4. Envie uma mensagem de fallback através do próximo canal disponível

> Event Streams fornecem insights de entrega em tempo real, mas não emitem um evento para "não enviado", pois mensagens não enviadas não têm evento. Use isso apenas para lidar com falhas, cliques, aberturas e cancelamentos de inscrição.

***

### Opção 4: Detectar e segmentar usuários não inscritos

Você pode marcar usuários que cancelaram a inscrição de canais específicos e reorientá-los manualmente através de outro.

<Steps>
  <Step title="Detectar status de não inscrição">
    Use o observador SDK [`addPermissionObserver()`](./mobile-sdk-reference#addpermissionobserver-push) para detectar mudanças de permissão push.
  </Step>

  <Step title="Marcar usuários não inscritos">
    Quando a permissão for revogada, marque o usuário (por exemplo, `unsubscribed_from_push: true`).
  </Step>

  <Step title="Segmentar para fallback">
    No painel do OneSignal, crie um segmento:

    * `unsubscribed_from_push = true`
    * E tem assinatura de email ou SMS
      Em seguida, segmente esse segmento com sua campanha de fallback.
  </Step>
</Steps>

> Esta é uma opção manual e não ideal para automação, mas funciona para campanhas de fallback periódicas.

***

## Melhores práticas

* **Escolha o canal de fallback com base na prioridade da mensagem.**
  * Use **SMS** para alertas urgentes (por exemplo, segurança ou inatividade).
  * Use **Email ou In-App** para atualizações não urgentes.
* **Jornadas são o método mais fácil e confiável** para gerenciar fallback.
* **Adicione expirações** aos nós Wait Until para evitar esperas indefinidas.
* **Entrega Confirmada** é necessária para acionar fallback verdadeiramente baseado em entrega.
* **Evite duplicatas multicanal** garantindo que as mensagens de fallback referenciem o status de entrega.

***

## Exemplos de casos de uso

### Alerta de segurança

Se um push de alerta de segurança falhar, envie um alerta SMS imediatamente.

### Atualização de entrega de pedido

Envie um push com informações de rastreamento. Se não for entregue, envie a mesma atualização por Email.

### Notificação de falha de pagamento

Se um push falhar, envie um SMS incentivando o usuário a tentar o pagamento novamente.

### Lembrete de evento

Se um lembrete de email não for entregue, envie uma notificação Push.

### Alerta de inatividade do sistema

Se o push falhar, o fallback para SMS garante que os usuários permaneçam informados em tempo real.

### Aviso de cobrança

Se a entrega de email falhar, envie um lembrete push ou SMS.

### Notificação de venda relâmpago

Se o push não for entregue, envie um SMS com detalhes da promoção e um link para comprar.

<Info>
  Need help?

  Chat with our Support team or email `support@onesignal.com`

  Please include:

  * Details of the issue you're experiencing and steps to reproduce if available
  * Your OneSignal App ID
  * The External ID or Subscription ID if applicable
  * The URL to the message you tested in the OneSignal Dashboard if applicable
  * Any relevant [logs or error messages](/docs/en/capturing-a-debug-log)

  We're happy to help!
</Info>

***
