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
- 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).
- Tu frontend llama a
window.TalkHero.identify(...)con la firma. - 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
externalIdes único por cuenta: dos sitios distintos con el mismoexternalIdapuntan al mismo contacto.- Una firma inválida se rechaza con
401y la conversación sigue como anónima. - Puedes llamar a
identifyvarias 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.