Skip to main content

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.
Con bundler (ESM / CommonJS) — creá un .npmrc en tu proyecto:
Sin bundler, vía <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):
Vía <script> (IIFE), el SDK queda disponible en window.Gu1Sdk:
Desde este momento el SDK genera un 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á el sessionId como header en las llamadas de la web app a tu propio backend:
Y en tu backend:
  • Primer request autenticado: enviá a Gu1 un evento con sessionId + el entityExternalId del 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/user sumales el campo sessionId (camelCase, opcional — los eventos sin él siguen funcionando igual).

4. Transacciones (1 línea)

En las transacciones que envías a Gu1, el sessionId viaja en metadata:
Con esto, el motor de reglas evalúa cada transacción con el contexto completo de la sesión: dispositivo, integridad, recorrido y eventos.

5. Verificación

  1. Cargá la página en sandbox → en el dashboard de Gu1 aparece la sesión con las señales del dispositivo.
  2. Iniciá sesión → la sesión queda vinculada al usuario (binding retroactivo).
  3. 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.