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

# Users

> Entenda como Users funcionam no OneSignal, incluindo identificação de usuário, OneSignal ID, External ID e como Subscriptions e propriedades de usuário são gerenciadas através de canais.

## Visão geral

No OneSignal, um **User** representa um indivíduo com uma ou mais [Subscriptions](./subscriptions) através dos seus canais de mensagens (push móvel, push web, email e SMS).

* Cada User pode ter até **20 Subscriptions**.
* Cada User recebe automaticamente um **OneSignal ID** (UUID v4).
* Users começam como **anônimos** até que você atribua a eles um **External ID**. Atribuir um External ID vincula Subscriptions juntas e pode substituir o OneSignal ID existente se o usuário já existir no seu app.
* **Users e Subscriptions têm propriedades diferentes.** Por exemplo, **Tags** são armazenadas no nível de User, enquanto **subscription status** (opted-in/out) pertence à Subscription.
* Quando o contexto de User muda — por exemplo, fazendo login (anônimo → identificado) ou trocando de conta (UserA → UserB) — a **Subscription é reatribuída** do User antigo para o novo.
  * A Subscription agora herdará as propriedades do novo User.
  * Propriedades vinculadas ao User anterior (como Tags, idioma ou External ID) não se aplicarão mais.

**Exemplo:**

* UserA tem Tag `premium=true`
* UserB tem Tag `premium=false`
* Se uma Subscription move de UserA para UserB, ela não estará mais associada com `premium=true` e em vez disso refletirá as propriedades de UserB.

<Frame>
  <iframe width="560" height="315" src="https://www.youtube.com/embed/yZM6zn7nLDw?si=oT7ncbhX0sNtmKML" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

### Usuários anônimos vs. identificados

* **Usuário anônimo:** Não tem External ID → cada Subscription é separada com seu próprio OneSignal ID (tratada como Users separados).
* **Usuário identificado:** Tem um External ID → OneSignal faz merge de todas as Subscriptions sob um único OneSignal ID.

**Exemplo: Usuário anônimo**

* Subscription Web push → `OneSignal_ID_1`
* Subscription Mobile → `OneSignal_ID_2`
* Subscription Email → `OneSignal_ID_3`
* Subscription SMS → `OneSignal_ID_4`
* **Resultado:** Quatro Users (cada Subscription é um User separado com propriedades únicas)

**Exemplo: Usuário identificado**

* Subscription Web push com External ID `External_ID_A` → `OneSignal_ID_1`
* Subscription Mobile com mesmo `External_ID_A` → merged into `OneSignal_ID_1`
* Subscription Email com mesmo `External_ID_A` → merged into `OneSignal_ID_1`
* Subscription SMS com mesmo `External_ID_A` → merged into `OneSignal_ID_1`
* **Resultado:** Um User com quatro Subscriptions (todas vinculadas ao mesmo User)

<Note>
  Sempre atribua um External ID. Isso garante que Subscriptions através de canais e dispositivos se unifiquem sob um único perfil de User e previne duplicação.

  * Use identificadores estáveis e não genéricos (ex: seu ID de usuário interno ou endereço de email).
  * Chame `OneSignal.login` cedo no ciclo de vida do seu app.
</Note>

***

## Propriedades de user

| Property           | Description                                                                                                                                                                                        |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **External ID**    | Um identificador único que você atribui para unificar o usuário com seu sistema.                                                                                                                   |
| **OneSignal ID**   | Um UUID v4 auto-gerado pelo OneSignal para cada usuário. Pode mudar ao atribuir um External ID.                                                                                                    |
| **Aliases**        | Pares chave-valor como `mixpanel_id : 1234`. Veja [Aliases](./aliases).                                                                                                                            |
| **Channel**        | As [Subscriptions](./subscriptions) que o usuário tem, como Push, Email ou SMS.                                                                                                                    |
| **Country**        | Código de país no formato [ISO 3166-1 Alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).                                                                                                  |
| **Email**          | Email da Subscription Email mais recente.                                                                                                                                                          |
| **First session**  | Quando o usuário foi inicialmente criado no OneSignal.                                                                                                                                             |
| **IP Address**     | Da Subscription atualizada mais recentemente.                                                                                                                                                      |
| **Language**       | Idioma do usuário em [formato ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes). Pode ser atualizado via API ou `setLanguage`.                                              |
| **Last session**   | O timestamp mais recente de interação com o app.                                                                                                                                                   |
| **Location**       | Coordenadas GPS de subscriptions móveis (se rastreamento de localização estiver habilitado). Veja [Location-Triggered Notifications](./location-triggered-event).                                  |
| **Phone**          | Número de telefone da Subscription SMS mais recente.                                                                                                                                               |
| **Tags**           | Metadados personalizados (ex: preferências, comportamento). Veja [Tags](./add-user-data-tags).                                                                                                     |
| **Test User name** | Um rótulo atribuído ao marcar um User como usuário de teste. Definido via dashboard ou a propriedade `test_user_name` na API. Veja [Test Users](./find-set-test-subscriptions#test-subscriptions). |
| **Timezone**       | `timezone_id` em [formato IANA TZ](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), definido pelo SDK. Pode ser atualizado via API.                                                  |

## OneSignal ID

O **OneSignal ID** é um UUID v4 interno gerado para representar unicamente um usuário. É criado automaticamente em cenários como:

* Primeira abertura do app móvel (ou após reinstalação)
* Nova Subscription de web push
* Criação de Users/Subscriptions via [Create user](/reference/create-user) ou [CSV Import](./import)
* Limpeza de cache do navegador e retorno ao site
* Logout com `OneSignal.logout`

Uma vez que um **External ID** é usado via `OneSignal.login`, qualquer OneSignal ID existente vinculado à Subscription atual é substituído pelo associado àquele External ID. Subscriptions através de plataformas (Push, Email, SMS) serão mescladas sob o mesmo OneSignal ID se compartilharem o mesmo External ID.

### Reatribuição e comportamento

Se um usuário reinstala o app ou limpa o cache, um novo OneSignal ID e Subscription são criados. No entanto, chamar `OneSignal.login` vinculará a nova Subscription de volta ao perfil de usuário original.

Subscriptions adicionadas via `OneSignal.User.addEmail` ou `addSms` herdarão o OneSignal ID atual.

Referências do SDK:

* [Referência do Mobile SDK](./mobile-sdk-reference)
* [Referência do Web SDK](./web-sdk-reference)

## External ID

O **External ID** é uma string única que você atribui a usuários para rastreá-los através de dispositivos e subscriptions.

<Frame caption="Use o External ID para rastrear o usuário através de suas subscriptions.">
  <img src="https://mintcdn.com/onesignal/RWtLFPeffHrC81wI/images/docs/a30870df69f4545ec68fc9ff9902784b35ede0dd0ce7b3a5b03b8acb6bb1c748-eid.png?fit=max&auto=format&n=RWtLFPeffHrC81wI&q=85&s=bcb07ae72a25e91288a5034a3e0ecb17" width="560" height="452" data-path="images/docs/a30870df69f4545ec68fc9ff9902784b35ede0dd0ce7b3a5b03b8acb6bb1c748-eid.png" />
</Frame>

Você pode definir ou remover o External ID via:

* `OneSignal.login` - **Recomendado** veja [Mobile SDK](./mobile-sdk-reference#login-external-id) e [Web SDK](./web-sdk-reference#login-external-id)
* [API Create user](/reference/create-user)
* [API Transfer subscription](/reference/transfer-subscription)
* `OneSignal.logout` (para remover)

### IDs restritos

Não use valores placeholder ou valores temporários para External IDs.

Os seguintes valores não podem ser usados para External IDs:

* `NA`
* `NULL`
* `-1`
* `0`
* `1`
* `all`
* `00000000-0000-0000-0000-000000000000`

***

## Múltiplos usuários no mesmo dispositivo

Quando múltiplos usuários compartilham um dispositivo, cada novo login deve acionar uma chamada para `OneSignal.login` com um External ID diferente. Isso reatribui o OneSignal ID e Subscription ao novo usuário.

Para lidar com logout, você pode fazer o seguinte para remover o contexto do usuário:

* Chame `OneSignal.logout()` → limpa External ID, remove propriedades de usuário anteriores (Tags, Aliases, etc.) e atribui OneSignal ID anônimo.
* Opcionalmente desabilite notificações usando `optOut`, e reabilite com `optIn` ao fazer login novamente.

***

## Usuários ativos mensais (MAU)

MAU é usado para **cobrança** e é definido como uma [Subscription](./subscriptions) móvel que tem uma última sessão dentro do período de cobrança de 30 dias. Isso inclui:

* Usuários que abrem seu app pela primeira vez, criando uma Subscription móvel via nosso SDK
* Usuários que reinstalam o app e o abrem novamente, criando outra Subscription móvel via nosso SDK
* Usuários que são importados via nossa API

### Exemplo de cobrança MAU

Se um User tem estas Subscriptions:

* iOS mobile (ativo nos últimos 30 dias)
* Android mobile (ativo nos últimos 30 dias)
* Web push
* Email
* SMS

Apenas as Subscriptions móveis iOS e Android contam, resultando em **2 MAUs**.

O status da subscription não importa para cobrança MAU.

### Reduzindo MAUs (ex: casos de uso de paywall)

Você pode atrasar a inicialização do SDK e criação de Subscription usando os [métodos de privacidade](./mobile-sdk-reference#privacy) do mobile SDK.

1. Chame `setConsentRequired()` antes de inicializar o SDK – isso previne auto-criação de uma Subscription
2. Chame `setConsentGiven()` quando estiver pronto para criar uma Subscription para o usuário

***
