Docs

Guía: doble opt-in

Recoge una preferencia de correo pendiente, envía un enlace de confirmación y solo escribe GRANTED cuando la persona hace clic.

Algunas normativas (ePrivacy, ciertas interpretaciones del RGPD) exigen opt-in confirmado para el correo de marketing: registra la intención, envía un correo de verificación y activa la suscripción solo cuando se hace clic en el enlace. Esta guía cubre el flujo completo.

Antes de empezar

  • Crea un propósito del centro de preferencias con categoría marketing (p. ej. clave newsletter).
  • Crea una clave sk_ para tu servidor.
  • Ten listo un servicio de correo transaccional — el correo lo envías tú; Croombit proporciona el token.

1. El usuario envía el formulario de registro

En tu servidor, escribe un registro de preferencia pendiente y solicita un token de confirmación de corta duración.

// servidor — clave sk_
const { token, confirmUrl, expiresAt } = await tc.createPreferenceConfirmationToken({
  subject: 'email:' + user.email,
  values: [{ field: 'newsletter', value: true }],
  channel: 'email',
  redirectUrl: 'https://acme.com/suscripcion/confirmada',
});
  • Solo clave secreta — una clave publicable (pk_) recibe 403. Quien tenga el token puede confirmar, así que nunca lo generes en el navegador.
  • redirectUrl debe ser http(s) en uno de los dominios de tu sitio (o un subdominio); se vuelve a comprobar al hacer clic. Cualquier otro → 422 redirect_not_allowed.
  • to opcional: Croombit envía el enlace. Debe ser el correo del propio sujeto (422 recipient_mismatch si no) y se envían como máximo 3 correos por destinatario y hora (429).

2. Envía el correo de confirmación

Construye el enlace tú mismo y envíalo a través de tu proveedor de correo. El endpoint de confirmación es público — no necesita clave.

const confirmUrl = `https://api.croombit.com/v1/preferences/confirm?token=${token}`;

await mailer.send({
  to: user.email,
  subject: 'Por favor, confirma tu suscripción',
  html: `<a href="${confirmUrl}">Sí, suscríbeme</a>`,
});

3. El usuario hace clic

Croombit escribe en la bóveda los valores solicitados como confirmados, dispara el webhook preference.confirmed y redirige al usuario a tu redirectUrl añadiendo ?doi=<estado>. No hay nada más que hacer por tu parte.

getPreferences devuelve { state: "PENDING" } hasta que se confirma. Condiciona cualquier envío a state === "GRANTED" — nunca a PENDING.
Los tokens caducan a los 7 días por defecto (ttlSeconds, de 5 minutos a 30 días). Si el usuario no hace clic, la preferencia permanece PENDING indefinidamente. Puedes solicitar un token nuevo en cualquier momento.