> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notifique.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# One-click unsubscribe (RFC 8058)

> Headers List-Unsubscribe para o botão nativo de descadastro no Gmail e Yahoo.

**RFC 8058** é o “botão de sair” na caixa de entrada, sem abrir o e-mail e caçar o rodapé.

## Por que usar?

Gmail e Yahoo pedem one-click unsubscribe em mensagens promocionais. Sem os headers certos, o descadastro depende só do link no HTML (preference center). Com RFC 8058, o provedor mostra o botão nativo e a Notifique honra o pedido na hora.

## Quando usar

* **Template MARKETING** (e campanhas/automações com ele) → headers RFC 8058 **por padrão**
* **`POST /v1/email/messages`** com contato resolvido pelo e-mail → **por padrão**
* **E-mail transacional** (recibo, OTP, reset de senha) → use `listUnsubscribe: false`
* **Destinatário sem contato** no workspace → headers não são injetados (não há token)

## Como funciona na prática

1. No envio, a Notifique gera um token (mesmo tipo do `{{preferences_link}}`) e grava nos headers MIME:
   * `List-Unsubscribe: <https://…/w/list-unsubscribe/:contactId?token=…>`
   * `List-Unsubscribe-Post: List-Unsubscribe=One-Click`
2. Gmail/Yahoo fazem **POST** nesse URL com corpo `List-Unsubscribe=One-Click` (sem cookies, sem login), o opt-out acontece **só no POST**.
3. **GET** no mesmo URL só valida o token e mostra uma página de confirmação (não altera preferências, evita scanners/prefetch).
4. No POST, a Notifique descadastra **na hora**:
   * com `topic` na URL (template com tópico) → tópico `UNSUBSCRIBED` (tópico inválido → erro, sem fallback global)
   * sem tópico → `receiveMarketing = false`
5. A página de sucesso pode linkar o preference center para reativar.

<Info>
  O rodapé com `{{preferences_link}}` / “click here to unsubscribe” continua existindo. RFC 8058 é **adicional** (headers), não substitui o preference center.
</Info>

## API direta (`POST /v1/email/messages`)

```json theme={null}
{
  "from": "marketing@seudominio.com",
  "to": ["cliente@example.com"],
  "subject": "Novidades da semana",
  "html": "<p>Olá!</p>",
  "listUnsubscribe": true,
  "listUnsubscribeTopicId": "cltopic..."
}
```

| Campo                    | Padrão | Efeito                                                                                |
| ------------------------ | ------ | ------------------------------------------------------------------------------------- |
| `listUnsubscribe`        | `true` | Injeta headers se o destinatário for um **contato** do workspace                      |
| `listUnsubscribeTopicId` | ,      | Escopo do one-click a um [tópico](/contacts-api/como-funciona/topicos-de-comunicacao) |

Se `listUnsubscribeTopicId` não existir neste workspace: **400** com `code` **`INVALID_LIST_UNSUBSCRIBE_TOPIC`**. Veja [Respostas de erro](/guides/conceitos/resposta-de-erros).

Para transacional:

```json theme={null}
{
  "listUnsubscribe": false
}
```

## Próximos passos

* [Tópicos de comunicação](/contacts-api/como-funciona/topicos-de-comunicacao)
* [Quick Start de e-mail](/emails-api/como-funciona/quick-start)
* [Variáveis de template](/template-api/como-funciona/variaveis-disponiveis-e-crud)
