Qué hace el SDK (y qué no)
@gu1/sdk-web es el canal navegador del SDK de Gu1: corre dentro de tu web app y captura lo que el backend no puede ver — señales del dispositivo (canvas, WebGL, propiedades de navigator), integridad del entorno y el recorrido del usuario, incluido el tramo anterior al login. Comparte el modelo de eventos con el SDK de React Native: los eventos que ya envías desde tu backend siguen exactamente igual, solo se les anexa un sessionId para que el motor de Gu1 cruce ambos mundos.
El SDK es fail-open por diseño: nunca bloquea la página, nunca propaga errores (la única excepción es configuración inválida en la inicialización) y no accede a datos del usuario.
1. Instalación
El SDK se distribuye por npm privado (scope
@gu1, paquete restricted), así que npm install devuelve 404 sin acceso de lectura al scope. Pedile a Gu1 un token de lectura y configurá un .npmrc en tu proyecto, pasando el token por variable de entorno (nunca lo commitees). El canal <script> (CDN) no necesita token..npmrc en tu proyecto:
<script> (build IIFE — expone window.Gu1Sdk). Cargalo desde la CDN de Gu1 con la versión fijada y el hash SRI (cada release publica su propia URL v<versión>):
Content Security Policy: si la página aplica CSP, permití
connect-src https://api.<tenant>.gu1.ai (el SDK envía eventos y lee /sdk/config) y — solo para el canal <script> — script-src https://cdn.gu1.ai.2. Inicialización
Con bundler (ESM):<script> (IIFE), el SDK queda disponible en window.Gu1Sdk:
sessionId anónimo, recolecta señales del dispositivo (canvas, WebGL, navigator) e integridad del entorno, y las envía en segundo plano. No hay nada más que hacer en la página para la captura de señales.
3. El sessionId hacia tu backend (1 header)
Para que tus eventos de backend queden vinculados a la sesión del dispositivo, agregá elsessionId como header en las llamadas de la web app a tu propio backend:
- Primer request autenticado: enviá a Gu1 un evento con
sessionId+ elentityExternalIddel usuario. Gu1 vincula retroactivamente toda la sesión, incluido lo anterior al login. - Eventos existentes: a los eventos que ya envías a
POST /events/usersumales el camposessionId(camelCase, opcional — los eventos sin él siguen funcionando igual).
4. Transacciones (1 línea)
En las transacciones que envías a Gu1, elsessionId viaja en metadata:
5. Verificación
- Cargá la página en sandbox → en el dashboard de Gu1 aparece la sesión con las señales del dispositivo.
- Iniciá sesión → la sesión queda vinculada al usuario (binding retroactivo).
- Ejecutá una transacción de prueba → la transacción muestra el contexto de sesión en su evaluación.
Resumen de la integración
Las señales nuevas que Gu1 active a futuro se habilitan por configuración remota — sin redeploys de tu web app, sin coordinación.