# Identificação do usuário

Passe dados do usuário pro SDK melhorar o matching dos seus anúncios.

## Quando chamar o identify

Chame o `identify` do SDK depois que o usuário fizer login ou preencher o perfil, e antes de mostrar qualquer paywall. Esses dados melhoram o matching nas plataformas de anúncio, em especial no Facebook CAPI e na TikTok Events API. Usa RevenueCat e o app deixa comprar antes do cadastro? Chame o identify com `userId: await Purchases.getAppUserID()` antes do paywall. Sem isso a compra não se liga ao anúncio: aparece como Direto e a campanha mostra 0 vendas. Detalhes na página do RevenueCat.

```typescript
import Paywallo from "@virex-tech/paywallo-sdk";

// Chama depois do login ou cadastro
async function onLoginSuccess(user: User) {
  await Paywallo.identify({
    email: user.email,
    phone: user.phone,
    firstName: user.firstName,
    lastName: user.lastName,
    dateOfBirth: user.dateOfBirth, // "YYYY-MM-DD"
    gender: user.gender,           // "m" | "f"
  });
}
```

Pra confirmar que os dados chegaram, procura o usuário em **Usuários** no dashboard.

Campos disponíveis:

`email` Email do usuário

`phone` Telefone com DDI (ex: +5511999999999)

`firstName` Primeiro nome

`lastName` Sobrenome

`dateOfBirth` Data de nascimento no formato YYYY-MM-DD (ex: "1990-01-15")

`gender` "m" para masculino, "f" para feminino

`zipCode` CEP do usuário (ex: "01310-100")

`properties` Atributos customizados do usuário (ex: userId, nome, status da assinatura)

Todos os campos são opcionais, mas quanto mais você enviar, melhor a qualidade do matching (EMQ) no Facebook e TikTok — envie tudo o que tiver disponível, especialmente email, data de nascimento e telefone. O Paywallo só entrega esses campos às plataformas de anúncio com hash SHA-256 — o valor em claro nunca sai do nosso servidor.

## Atributos customizados (properties)

O campo `properties` aceita atributos livres do tipo `Record<string, string | number | boolean | null>`. Use para passar contexto do usuário que seja útil nos seus segmentos e filtros.

```typescript
await Paywallo.identify({
  email: user.email,
  properties: {
    userId: user.id,                        // identificador do seu usuário
    name: user.name,
    subscriptionStatus: user.status,        // "active" | "trial" | "expired"
    country: user.country,
    language: user.language,
  },
});
```

**properties.userId** é o identificador do seu usuário no seu sistema. É ele que liga todos os dispositivos da mesma pessoa a um único perfil, então a atribuição e os eventos continuam corretos quando o usuário troca de aparelho ou reinstala o app.

## Reset (Logout)

Chame o `reset` do SDK no logout ou na troca de conta. Ele apaga os dados de identificação guardados no aparelho e gera um id anônimo novo. Depois do próximo login, chame o `identify()` de novo: sem isso o aparelho volta a ser anônimo, e o envio de push por `recipients` deixa de encontrá-lo.

```typescript
import Paywallo from "@virex-tech/paywallo-sdk";

async function handleLogout() {
  await Paywallo.reset();
  // navega pra tela de login
}
```
