# Temas y centro de preferencias (/es/guides/preference-center)

Un único interruptor "suscrito / de baja" se queda corto en cuanto envías más de un tipo de email. Los **temas** permiten que un contacto conserve tus alertas de seguridad y el resumen semanal mientras se da de baja de las promociones — en lugar de darse de baja de todo. Esta guía cubre la creación de temas, el centro de preferencias alojado, el double opt-in y el historial de consentimiento.

## Temas

Un **tema** es un tipo de comunicación al que un contacto puede suscribirse de forma independiente — *Novedades de producto*, *Alertas de seguridad*, *Resumen semanal*, *Promociones*, *Notificaciones de facturación*, etc. Créalos y gestiónalos en **Ajustes › Datos › Temas**.

Cada tema tiene:

| Campo                    | Qué hace                                                                                                                                                        |
| ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Nombre**               | Lo que ve el contacto en el centro de preferencias (p. ej. "Resumen semanal").                                                                                  |
| **Clave**                | Identificador de máquina estable (p. ej. `weekly_digest`) — el contrato para la API y las importaciones. **Inmutable** una vez creado.                          |
| **Canales**              | En qué canales se ofrece el tema (email, SMS). Por defecto, email.                                                                                              |
| **Obligatorio**          | Temas de clase transaccional (seguridad, facturación). Se muestran bloqueados y **siempre se entregan**, incluso a un contacto que desactivó todo el marketing. |
| **Suscrito por defecto** | Si un contacto nuevo cuenta como suscrito a este tema opcional hasta que indique lo contrario.                                                                  |
| **Double opt-in**        | Requiere que el contacto confirme mediante un enlace por email antes de que la suscripción cuente (ver abajo).                                                  |

Los temas son **solo presentación y consentimiento** — nunca cambian cómo se produce un evento ni cómo un workflow hace match. Un proyecto sin temas se comporta exactamente igual que antes.

### Obligatorios vs opcionales

* Los temas **obligatorios** se saltan el interruptor general. Son para correo del que un contacto no puede razonablemente darse de baja — una alerta de seguridad, un aviso de facturación. El centro los muestra como *Siempre activo*.
* Los temas **opcionales** requieren el interruptor general del canal **activado** *y* un opt-in a nivel de tema. Es el caso normal.

## El centro de preferencias alojado

Cada email de marketing (y headless) ya lleva un enlace personalizado a una página alojada — no construyes ni alojas nada. Con temas definidos, esa página se convierte en un centro **por-tema y por-canal**:

* Un interruptor general para el email de marketing.
* Un toggle por cada tema opcional.
* Los temas obligatorios se muestran bloqueados ("Siempre activo").
* Una opción de "darse de baja de todo" (el destino de un solo clic de la cabecera `List-Unsubscribe`).

Se accede mediante un **token firmado** — sin el id del contacto en la URL — y se renderiza en el idioma del contacto. Los enlaces que ya están en bandejas de entrada antiguas siguen funcionando.

<Callout title="Asignar un tema a una campaña">
  Cuando fijas el tema de una campaña, su audiencia se limita automáticamente a los contactos suscritos a ese tema. Una campaña sin tema mantiene el comportamiento de siempre (todos los suscritos al marketing).
</Callout>

## Double opt-in

Activa **Double opt-in** en un tema y una suscripción deja de contar hasta que el contacto confirme:

1. El contacto se suscribe (desde el centro de preferencias o un formulario). Su estado pasa a **pendiente** — todavía no recibe correo del tema.
2. Bitelio envía un enlace de confirmación desde tu dominio de envío verificado.
3. Al hacer clic, pasa a **suscrito** y se sella la **versión de consentimiento** activa (a qué accedió, y cuándo).

Un contacto pendiente nunca recibe el correo del tema, así que una suscripción sin confirmar no puede colarse en un envío.

## Historial de consentimiento

Cada cambio de consentimiento — un toggle en el centro, el envío de un formulario, un rebote, una queja, una importación — se escribe en un **historial de consentimiento append-only**. Abre un contacto y selecciona la pestaña **Consent** para leerlo: qué cambió, cuándo, el origen y el motivo. Es el registro al que acudir en una revisión de cumplimiento.

## Construir tu propio centro de preferencias

No tienes por qué usar la página alojada. Genera un enlace para un contacto e incrústalo o maneja la API pública tú mismo:

```bash
# Generar un enlace del centro de preferencias para un contacto (autenticado, clave secreta)
POST /contacts/{id}/preference-link
→ { "token": "v1.…", "url": "https://app.…/preferences/v1.…" }
```

Luego lee y escribe preferencias contra el token — sin auth, el token es la capacidad:

```bash
GET  /preferences/{token}            # estado actual: interruptor de canal + temas
PUT  /preferences/{token}            # { topics: { weekly_digest: { email: true } }, channelMaster: { email: true } }
POST /preferences/{token}/unsubscribe-all
```

Suscribir a un contacto a un tema con double opt-in desde la API dispara el mismo flujo de confirmación.

## Relacionado

* [Páginas de baja y preferencias](/docs/guides/unsubscribe-pages) — las variables de enlace inyectadas en cada envío.
* [Supresiones de email](/docs/guides/suppressions) — la lista de no-enviar.
* [Importar consentimiento](/docs/guides/importing-consent) — trae el consentimiento de temas desde otra plataforma.
