O módulo Campanhas foi desenhado com **LGPD-first**. Esta página detalha o que é coletado, como é protegido e por quanto tempo é mantido.

## O que é coletado em cada clique

Quando alguém clica em `https://app.medsac.com.br/r/MSAC-...`, registramos o clique com os seguintes dados:

| Campo                                             | O que é                             | Por que coletamos                            |
| ------------------------------------------------- | ----------------------------------- | -------------------------------------------- |
| `click_token`                                     | Token único de 24 chars             | Para vincular o clique à conversa correta    |
| `utm_source / medium / campaign / content / term` | UTMs da URL ou defaults da campanha | Atribuição comercial                         |
| `gclid`                                           | Google Click ID (se presente)       | Permitir reconciliação futura com Google Ads |
| `fbclid`                                          | Facebook Click ID (se presente)     | Reconciliação Meta                           |
| `user_agent`                                      | Navegador e SO                      | Detecção de bots e analytics                 |
| `referer`                                         | Site que originou o clique          | Atribuição da origem                         |
| `ip_hash`                                         | **SHA256 do IP + salt secreto**     | Rate limit + detecção de abuso               |
| `clicked_at`                                      | Timestamp                           | Análise temporal                             |

## O que NÃO é gravado

* **IP bruto** — nunca persistido no banco. Só o hash irreversível.

* **Dados do dispositivo além do User-Agent** — fingerprint não é feito.

* **Cookies** — o redirect não cria cookie nenhum.

## O que NÃO é exibido na interface

O card MEDSAC na conversa **nunca mostra**:

* `click_token` (apenas usado internamente)

* `campaign_token`

* Valor cru de `gclid` ou `fbclid` (só chips dizendo "Google Ads" / "Meta/Facebook")

* `ip_hash`, `user_agent`, `referer`

O atendente vê apenas: nome da campanha, UTMs, ID interno.

## IP hash e salt

O IP é processado com `SHA256(ip + salt)`. O salt é uma chave secreta, armazenada de forma protegida no servidor e jamais exposta publicamente.

**Por que hashar e não anonimizar?** Porque precisamos comparar IPs entre cliques (rate limit de 30/min/IP). Com hash, conseguimos comparar sem armazenar dado pessoal reversível.

**Risco de reidentificação:** baixo. Mesmo se um atacante obtivesse o banco e descobrisse o algoritmo, sem o salt e sem uma rainbow table de IPs específicos, não consegue reverter.

## Rate limit

A rota `/r/:token` tem throttle de **30 requisições/minuto/IP**. Logs de bloqueio carregam IP cru (base legal: interesse legítimo de segurança contra abuso). Esses logs têm retenção curta e acesso restrito à equipe de operações.

## Retenção de dados

**Política atual:**

* **Cliques com match** (`matched_conversation_id` preenchido) — mantidos enquanto a conversa existir, para fins de auditoria comercial.

* **Cliques sem match** (órfãos > 90 dias) — purgados periodicamente. Esses cliques não trazem valor analítico e mantê-los só aumenta exposição.

**Em estudo:** anonimização automática de UTMs e click IDs em cliques com mais de 365 dias, mantendo apenas os vínculos de atribuição.

## Responsabilidades sob a LGPD

**Sua clínica (Controlador):**

* Define a finalidade do tratamento (marketing, comercial, atendimento).

* Deve incluir a coleta de dados de campanha na sua **Política de Privacidade**.

* Deve atender solicitações de **direito de acesso, retificação e exclusão** dos titulares.

**MEDSAC (Operador):**

* Processa os dados sob sua instrução.

* Garante segurança técnica (hash de IP, rate limit, encriptação em trânsito).

* Apaga dados conforme política de retenção combinada.

## Direitos do titular

Se um paciente solicitar:

* **Acesso aos dados** — conseguimos exportar todos os cliques + conversas vinculadas àquele número de WhatsApp.

* **Exclusão** — apagamos cliques + dissociamos da conversa (mantendo a conversa pelo dever legal de retenção de comunicações comerciais).

* **Portabilidade** — exportação em formato CSV.

Para solicitar, abra ticket no painel ou contate [`lgpd@medsac.com.br`](mailto:lgpd@medsac.com.br).