Documentación

Identify con HMAC

Vincula la conversación del widget con el usuario autenticado de tu aplicación, sin que nadie pueda suplantarlo.

Sin identificación, cada visitante es un contacto anónimo. Con identify, la conversación queda asociada a tu usuario (por su externalId) y el equipo ve su historial unificado en Contactos.

Cómo funciona

  1. Tu backend firma el identificador del usuario con el secreto de firma de tu cuenta (visible en Configuración → Widget, nunca lo expongas en el navegador).
  2. Tu frontend llama a window.TalkHero.identify(...) con la firma.
  3. La API recalcula la firma y, si coincide, vincula la conversación al contacto.

1. Firma en el servidor

La firma es HMAC_SHA256(secreto, externalId) en hexadecimal.

// Node.js
import crypto from "node:crypto";

export function talkHeroHmac(externalId) {
  return crypto.createHmac("sha256", process.env.TALKHERO_SIGNING_SECRET).update(externalId).digest("hex");
}
// PHP
$hmac = hash_hmac("sha256", $externalId, getenv("TALKHERO_SIGNING_SECRET"));

2. Llamada en el navegador

Cuando el widget ya cargó (el script lleva defer, así que espera al evento DOMContentLoaded o llama después):

<script>
  window.addEventListener("DOMContentLoaded", () => {
    window.TalkHero?.identify({
      externalId: "usr_123",          // tu identificador estable del usuario
      email: "ana@ejemplo.com",       // opcional
      name: "Ana Pérez",              // opcional
      hmac: "<firma calculada en tu backend>"
    });
  });
</script>

Reglas

  • externalId es único por cuenta: dos sitios distintos con el mismo externalId apuntan al mismo contacto.
  • Una firma inválida se rechaza con 401 y la conversación sigue como anónima.
  • Puedes llamar a identify varias veces; los datos de nombre y correo se actualizan.
  • Si rotas el secreto desde el panel, las firmas anteriores dejan de ser válidas de inmediato.